2015-04-04 127 views
7

由於POODLE vulnerability的原因,Chrome和Firefox的最新版本默認已禁用SSLv3.0。這導致了以下錯誤,當我嘗試打開我已成立了一個網站(和其工作正常):如何修復Tomcat 7服務器上的「ssl_error_no_cypher_overlap」?

有了Chrome:

A secure connection cannot be established because this site uses an unsupported protocol. 
Error code: ERR_SSL_VERSION_OR_CIPHER_MISMATCH 

與Firefox:

Cannot communicate securely with peer: no common encryption algorithm(s). (Error code: ssl_error_no_cypher_overlap) 

我已經研究過這個問題with Chrome,Firefox,Tomcatmore Tomcat docs。我理解這個問題,但我找不到將Tomcat 7配置爲僅使用現在安全的TLS密碼和協議的文檔。我不確定是否需要創建新的證書/密鑰對,更改我的server.xml或安裝新版本的Tomcat,或者什麼。我甚至不確定現在哪些版本的密碼/協議被這些瀏覽器認爲是「可接受的」。任何人都可以指向我的文檔或示例設置?

我使用的OpenJDK 1.7在Ubuntu 14.04使用Tomcat 7

這是我的證書文件(節錄):

Keystore type: JKS 
Keystore provider: SUN 

Your keystore contains 1 entry 

Alias name: something 
Creation date: May 4, 2013 
Entry type: PrivateKeyEntry 
Certificate chain length: 1 
Certificate[1]: 
Owner: CN=something, OU=something, O=something, L=something, ST=something, C=something 
Issuer: CN=something, OU=something, O=something, L=something, ST=something, C=something 
Serial number: ... 
Valid from: Sat May 04 17:28:21 MST 2013 until: Tue May 02 17:28:21 MST 2023 
Certificate fingerprints: 
    MD5: ... 
    SHA1: ... 
    SHA256: ... 
    Signature algorithm name: SHA1withDSA 
    Version: 3 

這裏是我的server.xml條目HTTPS支持:

<Connector port="8484" protocol="HTTP/1.1" SSLEnabled="true" 
      maxThreads="150" scheme="https" secure="true" 
      keystoreFile="/path/mykeystore" 
      keystorePass="password" 
      clientAuth="false" 
      sslProtocol="TLS" 
      sslEnabledProtocols="TLS" /> 

回答

0

您需要擴大sslEnabledProtocols以包括TLSv1 & ff,具體取決於您的Java版本。

指定密碼爲ciphers element of the connector

與證書無關。

+1

感謝您的回覆 - 但是,每個字段所需的實際值是多少?例如,對於'sslEnabledProtocols'我試過了「TLS」,「TLSv1」,「TLSv1.1」,「TLSv1.2」和「TLSv1.1,TLSv1.2」,但沒有成功。我沒有在Tomcat日誌中收到任何錯誤消息,但瀏覽器仍然無法連接。 – user3120173 2015-04-05 01:12:55

+0

嘗試'sslEnabledProtocols =「TLSv1.2,TLSv1.1,TLSv1」'如https://wiki.apache.org/tomcat/Security/POODLE – 2015-04-05 03:36:13

+0

中所述我確實生成了一個新的自簽名證書,並解決了問題。我不知道爲什麼老人停止工作,但謝謝你,我正確地標記你的答案。 – user3120173 2015-04-05 18:30:30

12

我在使用Tomcat 8.0.23和Java 8 build 1.8.0_45進行新安裝時遇到了問題。我終於發現,當我使用Java keytool實用程序創建我的自簽名證書時,我未能指定-keyalg RSA選項。我刪除了舊密鑰庫,並確保在創建新密鑰庫時包含該選項。這解決了問題。

+1

謝謝。直到我添加了RSA標誌,看起來像這樣:keytool -genkey -alias tomcat -keypass localhost -keystore certificates.keystore -storepass localhost -keyalg RSA – 2015-07-13 15:04:37

+0

謝謝@MrZcxfph 您的修復程序使我能夠在經歷了半天的挫折後,讓TLS在Fedora 24 + Tomcat 8.0.36 + Java 1.8.0_111上工作 – interoperate 2016-10-31 04:55:13

+0

我在互聯網上嘗試了一天之後,幫助了我。示例命令也是tnx @false_memories – Spring 2017-04-13 12:55:50

1

完整的Tomcat的server.xml中Connector元素:

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" 
maxThreads="150" scheme="https" secure="true" 
clientAuth="false" sslProtocol="TLS" keystoreFile="conf/keystore.jks" keystorePass="changeit" 
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,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,SSL_RSA_WITH_RC4_128_SHA" /> 

這個工作對我來說,我使用JRE1.7和Tomcat7服務器也。但設置sslEnabledProtocols不適用於我,這裏使用sslProtocol =「TLS」來代替,並明確指定加密算法。

相關問題