Tomcat [9.0.26] — Вызов защищенной службы — Различия и проблемы в конфигурации TrustStore и KeyStore

Tomcat настройка SSL — часто запрашиваемая область на наших форумах stackoverflow. - но все же я чувствую себя наименее понятым, несмотря на якобы простоту установки, о которой заявляет Tomcat!

Я использую Tomcat 9.0.26, и мне приходится использовать сторонний (https) веб-сервис. Там начались мои проблемы :).

  1. Сначала было мое блаженное невежество и документация Tomcat, накапливающая его. Я пытался настроить keystoreFile. Только после нескольких попыток понял разницу между хранилищем ключей и хранилищем доверенных сертификатов. Проще говоря, хранилище ключей требуется, если вы хотите, чтобы ваше приложение, развернутое на вашем сервере tomcat, обслуживалось по защищенному протоколу HTTPS. TrustStore требуется, если вы хотите использовать другую защищенную веб-службу HTTP, сохраняя сертификаты в своем хранилище доверенных сертификатов. Документация tomcat SSL по умолчанию ведет вас в хранилище ключей, а не в хранилище доверенных сертификатов.

  2. Итак, перешли к настройке хранилища доверенных сертификатов.

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
     maxThreads="150" scheme="https" secure="true"
     truststoreFile="C:\cert\myCert.p12" truststorePass="mypass" truststoreType="PKCS12" 
     clientAuth="false" sslProtocol="TLS+SSLV3" />
  1. Узнал, что появился элемент SSLConfig, но Tomcat 9 по-прежнему поддерживает старую конфигурацию, определенную выше. Мои попытки использовать SSLConfig также не увенчались успехом, и эта часть кажется скудно документированной.

  2. Я не мог использовать параметры времени выполнения, так как некоторые другие службы не работают с указанными ниже параметрами.

-Djavax.net.ssl.trustStore=C:\cert\myCert.p12 -Djavax.net.ssl.trustStorePassword=мой пароль -Djavax.net.ssl.trustStoreType=PKCS12

Нужна помощь с указателями на то, что я мог бы попытаться решить эту проблему, поскольку вышеуказанные попытки до сих пор не увенчались успехом.


person Srini M    schedule 07.12.2019    source источник


Ответы (1)


Наконец решил проблему. Приведенное выше понимание доверенного хранилища было правильным. Однако во время SSL-рукопожатия моему серверу необходимо обменять «ключ» аутентификации клиента. Здесь то же самое хранилище сертификатов должно было быть настроено как хранилище ключей и опубликовать, что все работает!

-Djavax.net.ssl.trustStore=C:\cert\myCert.p12 -Djavax.net.ssl.trustStorePassword=mypass -Djavax.net.ssl.trustStoreType=PKCS12 -Djavax.net.ssl.keyStore=C:\cert \myCert.p12 -Djavax.net.ssl.keyStorePassword=мой пароль

person Srini M    schedule 11.12.2019