Как управлять шифрами SSL, доступными для Tomcat - PullRequest
9 голосов
/ 14 сентября 2011

Я не могу отключить слабые шифры SSL в Tomcat, как описано во многих местах, например http://www.techstacks.com/howto/secure-ssl-in-tomcat.html.
В настоящее время мой разъем выглядит следующим образом:

..Connector protocol="org.apache.coyote.http11.Http11NioProtocol" port="8443" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" 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" clientAuth="false" sslProtocol="TLS" keystoreFile="C:\Programs\apache-tomcat-6.0.33\keystore" keystorePass="nn"/>

при попытке подключения (с использованием IE или ssldigger) в Tomcat появляется следующая ошибка:

java.lang.IllegalArgumentException: Unsupported ciphersuite  SSL_RSA_WITH_RC4_128_SHA
    at com.sun.net.ssl.internal.ssl.CipherSuite.valueOf(Unknown Source)
    at com.sun.net.ssl.internal.ssl.CipherSuiteList.<init>(Unknown Source)
    at com.sun.net.ssl.internal.ssl.SSLEngineImpl.setEnabledCipherSuites(Unknown Source)
    at org.apache.tomcat.util.net.NioEndpoint.createSSLEngine(NioEndpoint.java:1141)
    at org.apache.tomcat.util.net.NioEndpoint.setSocketOptions(NioEndpoint.java:1096)
    at org.apache.tomcat.util.net.NioEndpoint$Acceptor.run(NioEndpoint.java:1315)
    at java.lang.Thread.run(Unknown Source)

Между прочим, я удалил неподдерживаемые шифры (почти один за другим), и единственное, что мне осталось, которое, кажется, поддерживается, это SSL_RSA_WITH_RC4_128_MD5

Кроме того, я предполагаю, что неподдерживаемый шифр не связан с конкретной парой ключей Tomcats, а в более широком смысле - с широко доступными шифрами.

Что здесь не так?

Ответы [ 2 ]

15 голосов
/ 15 сентября 2011

Я понял это ... список шифров, разделенных запятыми, чувствителен к пробелам, т.е. виновником является символ пробела после запятой

0 голосов
/ 11 мая 2015

Вам не помешает сообщить версию Tomcat, так как это зависит от того, какие теги можно использовать в блоке Connection.У меня есть такая же проблема с веб-службой, работающей на Tomcat 6.0, и я прочитал, что, например,

ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,..." 

Может работать неправильно, поскольку "шифры" могут быть такими, как SSLCipherSuite , но я не уверен на 100% в этом.Документ, который привел меня к мысли, что это может быть применимо, находится здесь: https://tomcat.apache.org/tomcat-6.0-doc/apr.html.На той же странице также сказано, что разделитель - это не запятая (,), а двоеточие (:).Поэтому для Tomcat 6.0 я бы предложил использовать:

SSLCipherSuite="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256:TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA:TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384:..."

или

ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256:TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA:TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384:..."

Надеюсь, это поможет кому-то, кому приходится бороться с Tomcat 6.0 (не обращайте внимания на этот ответ для Tomcat 6.0.XX иливыше.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...