Использование нескольких SSL-сертификатов в Tomcat 7 - PullRequest
6 голосов
/ 13 июня 2011

Я использовал SSL-сертификат с подстановочными знаками в Apache Tomcat 7. Но теперь, когда мне нужно продлить, я вижу, что есть эти SSL-сертификаты EV (расширенная проверка), где браузеры показывают приятную зеленую полосу, чтобы пользователи чувствовали себя лучше.Это было бы важно для моего сайта, поэтому я хочу этого!Но у меня есть несколько поддоменов, и, очевидно, сертификаты EV SSL не являются шаблонными по своей природе.Итак, у меня есть определенное количество поддоменов, я могу просто купить связку (мне определенно нужно как минимум 2) EV SSL-сертификата для каждого поддомена.

Можно ли настроить это в Tomcat 7, чтобынесколько сертификатов SSL на 1 веб-приложение?Для меня не проблема назначить несколько IP-адресов этой машине.

Ответы [ 4 ]

11 голосов
/ 14 июня 2011

Без указания имени сервера (SNI), которое не поддерживается в Java (6), для каждого IP-адреса требуется один сертификат.

Вы можете настроить Tomcat на использование нескольких соединителей с разными IP-адресами и сертификатами, используя атрибут адреса .

Например:

<Connector 
       port="8443" maxThreads="200" address="10.0.0.1"
       scheme="https" secure="true" SSLEnabled="true"
       keystoreFile="keystore1.jks" keystorePass="..."
       clientAuth="false" sslProtocol="TLS"/>
<Connector 
       port="8443" maxThreads="200" address="10.0.0.2"
       scheme="https" secure="true" SSLEnabled="true"
       keystoreFile="keystore2.jks" keystorePass="..."
       clientAuth="false" sslProtocol="TLS"/>

Вы также можете использовать то же хранилище ключей, если вам нужно, и использовать атрибут keyAliasConnector), чтобы сообщить соединителю, какой ключ / сертификат использовать (на основе псевдонима в хранилище ключей. ).

3 голосов
/ 27 января 2013

Я не уверен, здесь, если "SNI" действительно имеет значение.

Но в вашем случае, типичное решение будет так называемым ssloffloading или ssl Termination: т.е. поместите ваш tomcat behinde в apache, который настроилиспользовать несколько Vhosts / доменных имен на одном IP.Вы можете настроить для каждого vhost в apache использование своего собственного сертификата SSL.

Здесь вы найдете пошаговое руководство по этой теме:

http://milestonenext.blogspot.de/2012/09/ssl-offloading-with-modjk-part-1.html

1 голос
/ 21 января 2013

Вы можете просто упростить жизнь и получить EV SAN (также известный как UCC) и добавить каждый домен в качестве записи в поле альтернативного имени субъекта.И если вы хотите использовать несколько IP-адресов, просто экспортируйте сертификат и повторно импортируйте его на каждый IP-адрес (http://www.ssltools.com/manager отлично подходит для этого, если вы используете Windows).Хорошим примером сертификата EV SAN является сертификат, найденный на https://www.ssl.com,, просто проверьте его.

1 голос
/ 23 ноября 2011

Я только что получил это для работы на сервере с несколькими SSL и IP.

Добавлены IP-адреса следующим образом:
http://www.loadtestingtool.com/help/how-setup-ip.shtml

Добавлен код, позволяющий серверу использовать максимально возможную защиту с помощью «шифров» (при наличии ключа 2048 бит).

Сначала проверили, что это будет работать с самозаверяющими ключами следующим образом:
http://community.jboss.org/wiki/GeneratingSelfSignedCertificateWithKeytool
Обратите внимание, что тест на этой странице содержит ошибочные символы в начале текста "-keystore" (в нескольких местах).

Вот код:

<Connector protocol="org.apache.coyote.http11.Http11Protocol" address="###.###.###.##1" port="443" minSpareThreads="5"
    enableLookups="true" acceptCount="100" maxThreads="200"
    scheme="https" secure="true" SSLEnabled="true" keystoreFile="key1.key"
    keystorePass="password1" clientAuth="false" sslProtocol="TLS"
    ciphers="SSL_RSA_WITH_RC4_128_MD5, SSL_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA"/>

<Connector protocol="org.apache.coyote.http11.Http11Protocol" address="###.###.###.##2" port="443" minSpareThreads="5"
    enableLookups="true" acceptCount="100" maxThreads="200"
    scheme="https" secure="true" SSLEnabled="true" keystoreFile="key2.key"
    keystorePass="password2" clientAuth="false" sslProtocol="TLS"
    ciphers="SSL_RSA_WITH_RC4_128_MD5, SSL_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA"/>
...