Am o aplicație WEB implementată pe serverul Tomcat. Mă conectez la el cu browserul Chrome cu HTTPS, dar am o eroare de decriptare în timpul acordării de mână TLS pe partea client după ServerKeyExchange.
Certificate (3 nivele):
Certificat de server, semnat de...
Certificat CA, semnat de...
Certificat rădăcină (autosemnat)
Am validat certificatele cu openssl și par să fie în regulă (chain.cer conține certificate CA și rădăcină):
$ openssl verifica -verbose -CAfile chain.cer server.cer
server.cer: OK
Dacă testez conexiunea cu OpenSSL, primesc o eroare după ce clientul citește ServerKeyExchange:
openssl.exe s_client -CAfile chain.cer -showcerts -state -msg server.net:8443
ieșire:
CONECTAT(00000004)
>>> ??? [lungime 0005]
16 03 01 01 4f
>>> TLS 1.3, strângere de mână [lungimea 014f], ClientHello
01 00 01 4b 03 03 81 63 a4 15 45 bf 7f 9b 07 8f ...
<<< ??? [lungime 0005]
16 03 03 09 14
<<< TLS 1.3, Handshake [lungime 0055], ServerHello
02 00 00 51 03 03 60 ef d0 8b 1c d7 9a 78 2d d4 ...
<<< TLS 1.2, Strângere de mână [lungime 07ee], Certificat
0b 00 07 ea 00 07 e7 00 07 e4 30 82 07 e0 30 82 ...
adâncime=2 O = Amadeus IT group SA, CN = amarootca2
verifica returnarea:1
adâncime=1 O = Amadeus IT group SA, CN = amacatech3
verifica returnarea:1
adâncime=0 C = FR, L = Nice, O = Amadeus Data Processing, OU = NIS, CN = nceiptapas04.nce.amadeus.net
verifica returnarea:1
<<< TLS 1.2, Handshake [lungime 00cd], ServerKeyExchange
0c 00 00 c9 03 00 17 41 04 82 07 58 e1 cd 42 40 ...
>>> ??? [lungime 0005]
15 03 03 00 02
>>> TLS 1.2, Alertă [lungime 0002], eroare_decriptare fatală
02 33
34359738384:error:04091077:rsa routines:int_rsa_verify:lungimea semnăturii greșită:crypto/rsa/rsa_sign.c:132:
34359738384:error:1416D07B:Rutine SSL:tls_process_key_exchange:semnătură greșită:ssl/statem/statem_clnt.c:2405:
---
Clientul nu poate decripta parametrii DH trimiși de server? De ce?
Iată detaliile Wireshark de la ServerKeyExchange:
Algoritm de semnătură: rsa_pss_rsae_sha256 (0x0804)
Lungimea semnăturii: 128
Am o altă aplicație WEB, dar care funcționează corect, unde am același algoritm de semnătură, dar lungimea semnăturii: 256. Sau această lungime este irelevantă?