如何控制Tomcat可用的SSL密码

时间:2011-09-14 14:14:06

标签: java tomcat ssl encryption

我无法在Tomcat中禁用弱SSL密码,如许多地方所述,例如: 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 个答案:

答案 0 :(得分:15)

我想通了..逗号分隔的密码列表是空格敏感的,即罪魁祸首是逗号后面的空格字符

答案 1 :(得分:0)

告诉Tomcat版本对你没有什么害处,因为它取决于可以在Connection块中使用哪些标签。我在Tomcat 6.0上运行的Web服务有类似的问题,并且已经阅读了例如。

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或更高版本的答案。)