У меня есть веб-приложение, развернутое на сервере Tomcat. Я подключаюсь к нему с помощью браузера Chrome с HTTPS, но у меня возникает ошибка расшифровки во время установления связи TLS на стороне клиента после ServerKeyExchange.
Сертификаты (3 уровня):
Сертификат сервера, подписанный...
Сертификат ЦС, подписанный...
Корневой сертификат (самоподписанный)
Я проверил сертификаты с помощью openssl, и они, похоже, в порядке (chain.cer содержит CA и корневые сертификаты):
$ openssl verify -verbose -CAfile chain.cer server.cer
сервер.cer: ОК
Если я проверяю соединение с OpenSSL, я получаю сообщение об ошибке после того, как клиент читает ServerKeyExchange:
openssl.exe s_client -CAfile chain.cer -showcerts -state -msg server.net:8443
вывод:
ПОДКЛЮЧЕН(00000004)
>>> ??? [длина 0005]
16 03 01 01 4ф
>>> TLS 1.3, рукопожатие [длина 014f], ClientHello
01 00 01 4б 03 03 81 63 а4 15 45 бф 7ф 9б 07 8ф ...
<<< ??? [длина 0005]
16 03 03 09 14
<<< TLS 1.3, рукопожатие [длина 0055], ServerHello
02 00 00 51 03 03 60 эф d0 8b 1c d7 9a 78 2d d4 ...
<<< TLS 1.2, рукопожатие [длина 07ee], сертификат
0b 00 07 еа 00 07 е7 00 07 е4 30 82 07 е0 30 82 ...
depth=2 O = Amadeus IT group SA, CN = amarootca2
проверить возврат: 1
depth=1 O = Amadeus IT group SA, CN = amacatech3
проверить возврат: 1
depth=0 C = FR, L = Nice, O = Amadeus Data Processing, OU = NIS, CN = nceiptapas04.nce.amadeus.net
проверить возврат: 1
<<< TLS 1.2, Рукопожатие [длина 00cd], ServerKeyExchange
0c 00 00 c9 03 00 17 41 04 82 07 58 e1 cd 42 40 ...
>>> ??? [длина 0005]
15 03 03 00 02
>>> TLS 1.2, предупреждение [длина 0002], фатальная ошибка расшифровки
02 33
34359738384: ошибка: 04091077: подпрограммы rsa: int_rsa_verify: неправильная длина подписи: crypto/rsa/rsa_sign.c:132:
34359738384: ошибка: 1416D07B: подпрограммы SSL: tls_process_key_exchange: неверная подпись: ssl/statem/statem_clnt.c:2405:
---
Не может клиент расшифровать параметры DH, отправленные сервером? Почему?
Вот подробности Wireshark от ServerKeyExchange:
Алгоритм подписи: rsa_pss_rsae_sha256 (0x0804)
Длина подписи: 128
У меня есть другое, но правильно работающее веб-приложение, в котором используется тот же алгоритм подписи, но длина подписи: 256. Или эта длина не имеет значения?