2013-09-05 7 views
3

У меня есть служба A, которая использует односторонний SSL, а также двухсторонний SSL для обеспечения безопасного запроса на обслуживание B. 1-way SSL задается конфигурацией Tomcat, я предоставляю keystoreFile, keystorePass, включить SSL и т. д. 2-сторонний SSL реализуется с использованием JSSE на клиенте (услуга A). Я знаю, что это можно сделать аналогично в Tomcat server.xml тоже (пример здесь: http://blog1.vorburger.ch/2006/08/setting-up-two-way-mutual-ssl-with.html).Tomcat с 1-сторонним и 2-сторонним SSL

Часть моего 1-полосная конфигурация SSL Tomcat:

<Connector port="securePort" 
      scheme="https" 
      secure="true" 
      clientAuth="false" 
      sslProtocol="TLS" 
      SSLEnabled="true" 
      keystoreFile="keystoreFile" 
      keystorePass="keystorePass" 
      keystoreType="keystoreType" 
      ... 
/> 

Есть ли способ определить как 1-путь и 2-полосная (на стороне клиента) SSL для одной и той же службы в Tomcat хотя. Задача здесь в том, что я использую 2 сертификата (серверный и клиентский) на одном и том же IP-адресе. Любые намеки?

ответ

1

Когда служба A делает запросы SSL с аутентификацией клиента службой B, это не сервер, а клиент. Это не имеет ничего общего с настройкой проверки подлинности клиента на сервере Tomcat, на котором работает служба A.

Как ваш сервис A берет настройки своего хранилища ключей (который используется как клиент) зависит от того, как он реализован и какие библиотеки он использует для создания этих соединений. Это не особенно отличается от любого отдельного клиента.

Скорее всего, он по крайней мере установит настройки по умолчанию с помощью свойств системы. Вы можете установить javax.net.ssl.keyStore (и связанные) системные свойства в контейнере (например, через JAVA_OPTS в catalina.sh или .bat). Однако эти настройки могут использоваться всеми веб-приложениями, запущенными в вашем контейнере (но эти настройки не будут использоваться вашей конфигурацией <Connector/>, если вы настроили другое хранилище ключей). Влиять на все веб-приложения в вашем контейнере, как это, может быть не всегда желательно.

Вы также можете иметь свой файл хранилищу, где ваш клиентский код может загрузить его (например, где-то под WEB-INF) и загрузить это хранилище ключей как поток ресурсов для инициализации SSLContext, используемых вашей клиентской библиотекой (если клиентское приложение может использовать такие параметры,). Другим возможным способом является передача хранилища ключей через JNDI. Все зависит от того, как вы хотите настроить развертывание своей службы и как ее код будет настроен.

0

Я надеюсь, что это ваш сценарий

Сервис А ---> 1 способ запроса SSL к конечной точке Service B ---> 2 способа запрос SSL к Tomcat разъем конечной точки сконфигурирован с 2 пути SSL

Поскольку разъем tomcat сконфигурирован с двухсторонним SSL, все входящие соединения будут подтверждены для подтверждения; это означает, что если нет ключа для конечной точки ssl в 1 way, сообщение подтверждения не будет выполнено. Чтобы преодолеть это, вам необходимо импортировать один сертификат ssl конечной точки в доверенное хранилище

Теперь как односторонний, так и двухсторонний SSL будет работать