Как управлять шифрами SSL, доступными Tomcat

Я не могу отключить слабые 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:Programsapache-tomcat-6.0.33keystore" 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 ответов


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


вам не помешает рассказать версию Tomcat, так как это зависит от того, какие теги можно использовать в блоке подключения. У меня есть эта аналогичная проблема с веб-службой, работающей на 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.ХХ или выше.)