
Tomcat 서버에 웹 애플리케이션을 배포했습니다. HTTPS를 사용하는 Chrome 브라우저로 연결했지만 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
동일한 서명 알고리즘을 사용하지만 서명 길이가 256인 또 다른 제대로 작동하는 웹 애플리케이션이 있습니다. 아니면 이 길이가 관련이 없습니까?