2013-05-15 3 views
0

У меня есть веб-приложение, которое пытается ударить по https-адресу. У меня есть набор из 4-х сертификатов, которые я импортировать в один общий файл с помощью KeytoolДобавить сертификаты SSL в tomcat 7

keytool -import -v -alias a_base64 -trustcacerts -file a_Base64.cer -keystore testcacerts 
keytool -import -v -alias b_base64 -trustcacerts -file b_base64.cer -keystore testcacerts 
keytool -import -v -alias c_base64 -trustcacerts -file c_Base64.cer -keystore testcacerts 
keytool -import -v -alias d_base64 -trustcacerts -file d_base64.cer -keystore testcacerts 

В файле testcacerts генерируется хорошо. В моей Eclipse IDE у меня есть java-программа, которая ударит по https-адресу. Во время запуска программы я дал следующее в аргументах виртуальной машины -Djavax.net.ssl.keyStore = c: // testcacerts

Программа Java прошла нормально. Теперь я развернув войну проекта в сервер Tomcat 7. Когда мое приложение пытается получить доступ к HTTPS URL, он дает следующее исключение

sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target. 

Я установить переменные окружения CATALINA_OPTS и JAVA_OPTS, чтобы указать, что testcacerts расположение JAVA_OPTS = -Djavax.net.ssl.trustStore =/temp/testcacerts

После того, как я запустил свой tomcat, когда мое приложение попадает на https-url, я получаю то же исключение. я даже попытался изменить конфигурацию в server.xml в TOMCAT конф, как указано ниже

<Connector port="8443" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" 
maxSpareThreads="75" enableLookups="false" disableUploadTimeout="true" acceptCount="100" 
scheme="https" secure="true" SSLEnabled="true" clientAuth="false" sslProtocol="TLS" 
keystoreFile="/temp/testcacerts" keystorePass="samplePassword" /> 

пароль в keystorePass является тот, который я дал при создании хранилища ключей.

Даже после вышеупомянутых изменений, я получал то же исключение.

В настоящее время я запускаю приложение в среде Unix, а tomcat присутствует и на сервере Unix. У меня нет доступа к каталогу установки java и из-за которого я не могу разместить этот файл сертификата в папке jre \ lib \ security.

Я ничего не вижу здесь. Пожалуйста, направляйте меня.

ответ

0

В случае, если это действительно самоподписанные сертификаты, вы должны выбрать один сертификат для соединителя SSL. Пожалуйста, добавьте keyAlias с выбранным сертификатом (например, a_base64) в конфигурации соединителя

<Connector port="8443" ... keyAlias="a_base64" /> 

Полезные ссылки:

http://tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html

http://tomcat.apache.org/tomcat-7.0-doc/config/http.html

Вы можете удалить свои -Djavax настройки.

+0

Hi Micheal, Спасибо за предложения. Я удалил настройки javax, а затем попытался дать keyAlias. На этот раз при запуске tomcat я получил следующее исключение: «Alias ​​name a_base64 не идентифицирует ключевую запись». Я попытался добавить личную запись в файл testcacerts «keytool -genkey -keystore testcacerts -alias privKey -keyalg RSA -keysize 2048». Теперь в keyAlias ​​я дал значение «privKey». На этот раз я не получал никаких исключений во время запуска, но все же старое исключение «не удалось найти допустимый путь сертификации для запрошенной цели». существует. Вы можете мне понравиться? –

+0

, пожалуйста, попробуйте создать самоподписанный сертификат, как описано в первой ссылке выше. Обратите внимание, что по умолчанию псевдоним 'tomcat' – Michael

+0

Я имею в виду PLS шаг шаг за шагом: 1. самостоятельно подписан в соответствии с сайтом 2. изменить псевдоним 3. change keysize – Michael

Смежные вопросы