Добавление самозаверяющего сертификата стороннего сервера в доверенные сертификаты моего Tomcat - PullRequest
7 голосов
/ 27 июня 2011

Мой Tomcat должен подключиться к другому веб-серверу (на https://foreign.example.com) с использованием SSL (TLS).

foreign.example.com имеет самозаверяющий сертификат,что я доверяю. Конечно, мой Tomcat не по умолчанию - поэтому я должен сказать это. Один из способов сделать это:

$JRE/bin/keytool -import -alias my -file ssl-cert-myselfsigned.cer -keystore 
 $JRE/lib/security/cacerts

Это работает : мой Tomcat позволяетSSL-соединение.

Однако мне не нравится делать это таким образом : он импортирует сертификат в доверенные ключи моей установки Java. Я не хочу говорить: "Каждое приложение, которое запускает Java на моей машине, должно доверять этому сертификату ". Только Tomcat (или пользователь, который запускает Tomcat) должен доверять ему.

Поэтому я попытался импортировать его в хранилище ключей пользователя tomcat по адресу ~/.keystore,и настройку Tomcat <Connector> с этими атрибутами:

keystoreFile="${user.home}/.keystore"
keystorePass="thePassphraseICreatedTheKeystoreWith"

Однако это не работает вообще (я полагаю, это только для серверного сертификата моего Tomcat, а не для серверных сертификатов иностранныхсерверы, верно?)

Я попробовал то же самое с truststoreFile /truststorePass атрибутов, но они тоже не работали.(Атрибуты задокументированы в http://tomcat.apache.org/tomcat-6.0-doc/config/http.html)

. Есть ли способ настроить Tomcat с сертификатом сервера стороннего сервера, или, возможно, добавить некоторые параметры командной строки в java, что делает мое хранилище ключей (и ключевую фразу хранилища ключей)) доступно для экземпляра JVM?

Ответы [ 2 ]

7 голосов
/ 27 июня 2011

JBoss (основанный на Tomcat) может быть запущен со следующими аргументами cmd. Файл cacerts (или как бы вы его ни называли) должен содержать сертификат конечной точки.

-Djavax.net.ssl.trustStore = C: \ Applications \ JBoss-а \ сервер \ умолчанию \ конф \ cacerts -Djavax.net.ssl.trustStorePassword = changeit

Для этого это также должно работать для Tomcat.

0 голосов
/ 05 мая 2016

Альтернативный подход - добавить его в коннектор SSL в tomcat в файле tomcat server.xml. В частности, вам нужно установить свойства truststoreFile, чтобы включить доверие сертификатов от других серверов.

        <Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS"
               keystoreFile="../../../deploy/tomcat/config/ssl/keystore.jks" keystorePass="changeit"
               truststoreFile="../../../deploy/tomcat/config/ssl/keystore.jks" truststorePass="changeit"/>
...