Моему 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
со следующими атрибутами:
keystoreFile="${user.home}/.keystore"
keystorePass="thePassphraseICreatedTheKeystoreWith"
Однако это вообще не работает (я полагаю, это только для сертификата сервера моего Tomcat, а не для серверных сертификатов внешних серверов, верно?)
Я пробовал то же самое с атрибутами truststoreFile
/ truststorePass
, но они тоже не работали. (Атрибуты задокументированы по адресу http://tomcat.apache.org/tomcat-6.0-doc/config/http.html )
Есть ли способ настроить Tomcat с сервером внешнего сервера cert или, может быть, добавить некоторые параметры командной строки в java
, что сделает мое хранилище ключей (и кодовую фразу) доступным экземпляру JVM?