2011-09-14 13 views
9

Nie mogę wyłączyć słabych szyfrów SSL w Tomcat, jak udokumentowano w wielu miejscach, np. http://www.techstacks.com/howto/secure-ssl-in-tomcat.html.
Obecnie mój złącze wygląda następująco:Jak kontrolować szyfry SSL dostępne dla Tomcat

..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"/> 

przy próbie połączenia (za pomocą IE lub ssldigger) pojawia się następujący błąd w 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) 

Nawiasem mówiąc, usunąłem nieobsługiwane szyfry (prawie jeden po drugim) i jedyny, który mi pozostał, wydaje się być obsługiwany, to: SSL_RSA_WITH_RC4_128_MD5

Ponadto zakładam, że nieobsługiwany szyfr nie jest powiązany z parą kluczy określonych przez Tomcats, ale m ogólnie do ogólnie dostępnych szyfrów.

Co jest nie tak?

Odpowiedz

15

Pomyślałem, że out..the oddzielonych przecinkami lista szyfrów jest spacja wrażliwe tj winowajcą jest spacja po przecinku

+0

Możesz również przyjąć tę odpowiedź, jeśli zadziałało, dość ważne informacje tutaj. –

+0

Wow, tak. To właśnie uratowało mój tyłek. Spoglądam na ten problem przez blisko 12 godzin i znalazłem tę odpowiedź. To powinno być krzykliwe z dachów. – Rintoul

0

Nie zaszkodzi Ci powiedzieli wersji Tomcat, gdyż zależy na których znaczników można użyć w bloku połączenia. Mam podobny problem z usługą sieciową działającą na serwerze Tomcat 6.0 i przeczytałem, że np.

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,..." 

może nie działać prawidłowo, jak „Szyfry” może trzeba być SSLCipherSuite, ale nie jestem w 100% pewien na ten temat. Dokument, który doprowadził mnie do wniosku, że to może mieć zastosowanie, znajduje się tutaj: https://tomcat.apache.org/tomcat-6.0-doc/apr.html. Na tej samej stronie jest również powiedziane, że ogranicznik nie jest przecinkiem (,), ale dwukropkiem (:). Więc dla Tomcat 6.0 Proponuję przy użyciu: (. Zignorować tę odpowiedź dla Tomcat 6.0.XX lub wyższej)

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:..." 

lub

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:..." 

Nadzieja pomaga to ktoś, kto ma walczyć z Tomcat 6.0

Powiązane problemy