SSL致命错误,握手失败40

问题描述 投票:3回答:1
  1. 客户端发送“ Client Hello”消息,其中包含密码套件中包含的那些密码。

            Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA (0x002f)
            Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA (0x0035)
            Cipher Suite: TLS_RSA_WITH_RC4_128_SHA (0x0005)
            Cipher Suite: TLS_RSA_WITH_3DES_EDE_CBC_SHA (0x000a)
            Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013)
            Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014)
            Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009)
            Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a)
            Cipher Suite: TLS_DHE_DSS_WITH_AES_128_CBC_SHA (0x0032)
            Cipher Suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA (0x0038)
            Cipher Suite: TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA (0x0013)
            Cipher Suite: TLS_RSA_WITH_RC4_128_MD5 (0x0004)
    
  2. 在server.xml中,这些密码均不会出现。这是Catalina条目:

    连接器端口=“ 4443” SSLEnabled =“ true” acceptCount =“ 20000” maxThreads =“ 5000” allowTrace =“ false” scheme =“ https” secure =“ true” clientAuth =“ false” sslProtocol =“ TLS” keystoreFile = “ /usr/local/tomcat6/conf/Default-Cert.p12” keystoreType =“ PKCS12” keystorePass =“ uuuuuu” ciphers =“ ...”

    并且密码为SSL_RSA_WITH_AES_128_CBC_SHA, SSL_RSA_WITH_AES_256_CBC_SHA, SSL_DHE_RSA_WITH_AES_128_CBC_SHA, SSL_DHE_RSA_WITH_AES_256_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA

服务器发送“服务器问候”,选择“ TLS_RSA_WITH_AES_128_CBC_SHA 0x002f)”,并且在大约1.5毫秒后服务器发送了致命警报(握手失败(40))。

我们能否解释握手失败?这是由于客户端密码列表中未包含TLS_RSA_WITH_AES_128_CBC_SHA吗?

tomcat ssl certificate tomcat6
1个回答
0
投票

SSL fatal error, handshake failure 40表示安全连接建立失败,因为客户端和服务器无法就连接设置达成共识。通常是因为客户端或服务器太旧,仅支持删除的协议/密码。

按历史顺序,协议为SSLv2,SSLv3,TLS 1.0,TLS 1.2,TLS 1.3。

根据您提供的调试信息和密码名称:

  • 服务器仅执行SSL,不知道哪个版本。自从在提出问题之前(2015年之前),SSL已过时,由TLS取代。
  • 客户端需要TLS。在2015年,可能是TLS 1.0和/或TLS 1.2。

在这种特定情况下,服务器运行在废弃的SSL上,非常需要升级。看起来像Java 6上的tomcat 6,在当时(2015年)确实已经过时了。

如果您要在2020年或以后阅读本文。 https可以使用的Java的最低最低版本是Java 8(完全支持TLS 1.2)。

尝试curl --tlsv1.2 https://example.org以测试Web服务器支持哪个版本的TLS,curl --help以查找curl支持的版本。请注意,截至2020年,仅TLS 1.2得到广泛支持,而TLS 1.3则逐渐得到支持。可能难以获得可以使用较旧的SSL / TLS变体进行测试的curl / openssl版本,由于(严重)安全漏洞,它们已全部淘汰。

© www.soinside.com 2019 - 2024. All rights reserved.