
Tengo una aplicación WEB implementada en el servidor Tomcat. Me conecto con el navegador Chrome con HTTPS pero tengo un error de descifrado durante el protocolo de enlace TLS en el lado del cliente después de ServerKeyExchange.
Certificados (3 niveles):
Certificado de servidor, firmado por...
Certificado CA, firmado por...
Certificado raíz (autofirmado)
Validé los certificados con openssl y parecen estar bien (chain.cer contiene CA y certificados raíz):
$ openssl verify -verbose -CAfile chain.cer server.cer
servidor.cer: OK
Si pruebo la conexión con OpenSSL, aparece un error después de que el cliente lee ServerKeyExchange:
openssl.exe s_client -CAfile chain.cer -showcerts -state -msg server.net:8443
producción:
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:
---
¿No puede el cliente descifrar los parámetros DH enviados por el servidor? ¿Por qué? Aquí están los detalles de Wireshark de ServerKeyExchange:
Algoritmo de firma: rsa_pss_rsae_sha256 (0x0804) Longitud de firma: 128
Tengo otra aplicación WEB que funciona correctamente y tengo el mismo algoritmo de firma pero la longitud de la firma: 256. ¿O esta longitud es irrelevante?