2017-07-26 93 views
2

我跟着official tutorial在tomcat8上安裝ssl,但我的瀏覽器給我一個ERR_SSL_VERSION_OR_CIPHER_MISMATCH錯誤。Tomcat8 SSL連接器

首先我給大家介紹一下服務器的信息:

  • IP:10.1.5.55
  • Tomcat的端口:8200
  • Java版本:1.8.0_121
  • 的Tomcat版本:阿帕奇Tomcat/8.5.11
  • Servlet規範版本:3.1
  • JSP版本:2.3

我用https://10.1.5.55:8200/作爲URL連接到我的服務器(這正與HTTP協議)

這讓我感到困惑的是,所有的教程都在談論像連接器的事實的第一件事:

<Connector protocol="org.apache.coyote.http11.Http11NioProtocol" port="8443" .../> 

但配置文件server.xml中基本爲我提供這個模板:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol" 
       maxThreads="150" SSLEnabled="true" > 
     <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" /> 
     <SSLHostConfig> 
      <Certificate certificateKeyFile="conf/localhost-rsa-key.pem" 
         certificateFile="conf/localhost-rsa-cert.pem" 
         certificateChainFile="conf/localhost-rsa-chain.pem" 
         type="RSA" /> 
     </SSLHostConfig> 
    </Connector> 

反正我跟進的教程,並生成密鑰庫我未DER E:\鍵:

keytool -genkey -alias myapp -keystore myapp-keystore 

在名字和姓氏我打字:10.1.5.55:8200 密碼:的changeit 我按下回報以獲取密鑰的密碼相同。

然後我寫我的連接器喜歡它(我修改了HTTP端口上運行8199):

<Connector 
    port="8200" 
    protocol="org.apache.coyote.http11.Http11NioProtocol" 
    SSLEnabled="true" 
    maxThreads="300" 
    scheme="https" 
    secure="true" 
    clientAuth="false" 
    sslProtocol="TLS" 
    keystoreFile="E:\keys\myapp-keystore" 
    keystorePass="changeit" 
/> 

但我在這一點上得到了錯誤。

現在有所有的解決方案我想:

  • 嘗試一個個都TLS協議(V1,V1.1,V1.2,在SSLv3)
  • 變化第一和10.1密鑰庫的姓氏.5.55寂寞
  • 試協議= 「HTTP/1.1」,協議組織... Http11Nio2Protocol

最後,我想補充的密碼。下面是我用的列表:

ciphers="TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, 
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, 
TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384, 
TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384, 
TLS_DHE_DSS_WITH_AES_256_CBC_SHA256, 
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, 
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, 
TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA, 
TLS_ECDH_RSA_WITH_AES_256_CBC_SHA, 
TLS_DHE_DSS_WITH_AES_256_CBC_SHA, 
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, 
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, 
TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256, 
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256, 
TLS_DHE_DSS_WITH_AES_128_CBC_SHA256, 
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, 
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, 
TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, 
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, 
TLS_DHE_DSS_WITH_AES_128_CBC_SHA, 
TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, 
TLS_ECDH_ECDSA_WITH_RC4_128_SHA, 
TLS_ECDH_RSA_WITH_RC4_128_SHA, 
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, 
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, 
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, 
TLS_RSA_WITH_AES_256_GCM_SHA384, 
TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384, 
TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384, 
TLS_DHE_DSS_WITH_AES_256_GCM_SHA384, 
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, 
TLS_RSA_WITH_AES_128_GCM_SHA256, 
TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256, 
TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256, 
TLS_DHE_DSS_WITH_AES_128_GCM_SHA256, 
TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, 
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, 
TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA, 
TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA, 
TLS_EMPTY_RENEGOTIATION_INFO_SCSVF 
" 

我得到這個列表from here這裏我瞭解到,Tomcat7 w ^/java7目錄的工作方式不同於Tomcat8 W/Java8。我試着去掉「sslProtocol」並添加「useServerCipherSuitesOrder」,但沒有任何工作,總是和我的瀏覽器一樣。

請有人告訴我如何解決這個問題?

+0

替換此命令

keytool -genkey -alias myapp -keystore myapp-keystore 

? – pedrofb

+0

感謝您的回答。我用我提供的基本配置添加了+密碼,但它不起作用 –

+0

嘗試從證書的公用名稱中刪除端口號。設置只有您的IP 10.1.5.55(我不知道這是否可能是問題,通常使用域的名稱) – pedrofb

回答

3

您正在生成1024位的DSA證書,Chrome停止/停止支持DSA(DSS),如herehere所示。嘗試生成的2048位

一個RSA證書,你可以嘗試加上`keystoreAlias = 「MYAPP」``到

keytool -genkey -alias myapp -keystore myapp-keystore -keyalg RSA