У меня Tomcat7
сервер, работающий на Ubuntu 12.04 LTS
.Приложение Tomcat использует Apache's HTTP Client
для выполнения REST-вызовов на удаленный веб-сервер, который использует самозаверяющий сертификат.
Я скачал сертификат сервера локально:
echo -n | openssl s_client -connect $DOMAIN:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /tmp/$DOMAIN.cert
У меня есть импортировано и доверено самоподписанный сертификат в оба (JRE / JDK) cacerts хранилища ключей:
$ which java
/usr/lib/jvm/jre1.8.0.51/bin/java
$ locate cacerts | grep "1.8.0_51"
/usr/lib/java/jdk1.8.0_51/jre/lib/security/cacerts
/usr/lib/jvm/jre1.8.0_51/lib/security/cacerts
$ sudo keytool -importcert -alias $SERVER_CERT_ALIAS -file /tmp/$DOMAIN.cert -keystore /usr/lib/java/jdk1.8.0_51/jre/lib/security/cacerts -storepass *********
$ sudo keytool -importcert -alias $SERVER_CERT_ALIAS -file /tmp/$DOMAIN.cert -keystore /usr/lib/jvm/jre1.8.0_51/lib/security/cacerts -storepass *********
Tomcat настроен на использование Java по умолчанию.
Я перезагрузился, но все еще получаю исключение:
peer not authenticated
при попытке подключения к веб-серверу.
Что я упускаю или не понимаю, чтобы заставить Apache доверять сертификату?