ServerKeyExchange 后 TLS 握手中的解密错误

ServerKeyExchange 后 TLS 握手中的解密错误

我有一个部署到 Tomcat 服务器上的 WEB 应用程序。我使用 Chrome 浏览器通过 HTTPS 连接到它,但在 ServerKeyExchange 之后在客户端的 TLS 握手期间出现解密错误。

证书(3 个级别):

服务器证书,由...签名

CA 证书,由...签名

根证书(自签名)

我使用 openssl 验证了证书并且它们看起来很好(chain.cer 包含 CA 和根证书):

$ openssl verify -verbose -CAfile chain.cer server.cer

server.cer:确定

如果我使用 OpenSSL 测试连接,客户端读取 ServerKeyExchange 后会收到错误:

openssl.exe s_client -CAfile chain.cer -showcerts -state -msg server.net:8443

输出:

    CONNECTED(00000004)
>>> ??? [length 0005]
    16 03 01 01 4f
>>> TLS 1.3, Handshake [length 014f], ClientHello
    01 00 01 4b 03 03 81 63 a4 15 45 bf 7f 9b 07 8f ...
<<< ??? [length 0005]
    16 03 03 09 14
<<< TLS 1.3, Handshake [length 0055], ServerHello
    02 00 00 51 03 03 60 ef d0 8b 1c d7 9a 78 2d d4 ...
<<< TLS 1.2, Handshake [length 07ee], Certificate
    0b 00 07 ea 00 07 e7 00 07 e4 30 82 07 e0 30 82 ...
depth=2 O = Amadeus IT group SA, CN = amarootca2
verify return:1
depth=1 O = Amadeus IT group SA, CN = amacatech3
verify return:1
depth=0 C = FR, L = Nice, O = Amadeus Data Processing, OU = NIS, CN = nceiptapas04.nce.amadeus.net
verify return:1
<<< TLS 1.2, Handshake [length 00cd], ServerKeyExchange
    0c 00 00 c9 03 00 17 41 04 82 07 58 e1 cd 42 40 ...
>>> ??? [length 0005]
    15 03 03 00 02
>>> TLS 1.2, Alert [length 0002], fatal decrypt_error
  02 33 
  34359738384:error:04091077:rsa routines:int_rsa_verify:wrong signature length:crypto/rsa/rsa_sign.c:132:
  34359738384:error:1416D07B:SSL routines:tls_process_key_exchange:bad signature:ssl/statem/statem_clnt.c:2405:
--- 

客户端无法解密服务器发送的 DH 参数?为什么?以下是来自 ServerKeyExchange 的 Wireshark 详细信息: 在此处输入图片描述

签名算法:rsa_pss_rsae_sha256(0x0804)签名长度:128

我有另一个正常运行的 WEB 应用程序,其中我有相同的签名算法,但签名长度为:256。或者这个长度无关紧要?

相关内容