2010-11-10 2 views
0

Я пытаюсь открыть защищенный сокет, используя протокол TLS. Рассматривая записи, отправленные между клиентом и сервером, я могу продвигаться через ClientHello, ServerHello, Certificate (server), ServerHelloDone, ClientKeyExchange и ChangeCipherSpec (клиент). Однако сервер не может расшифровать сообщение «Готово» клиента. Затем меняются некоторые обычные TCP-сообщения, сначала запись, отправленная с сервера с флагом Finished, затем две записи, отправленные с клиента, вторая с флагом Finished, а затем еще одна запись, отправленная с сервера.Тональный сигнал подтверждения TLS после использования нового сертификата

Эта настройка использовалась для работы, но я недавно изменил сертификат сервера. Учитывая это, я ожидал, что рукопожатие потерпит неудачу после записи сертификата, а не при попытке дешифровать первую часть зашифрованных данных. Эта ошибка handhsake указывает на сертификат, не прошедший проверку подлинности? Если нет, что это может означать? Я не получал никаких предупреждений.

+0

Пожалуйста, отправьте сообщение trace. – EJP

+0

Мне интересно, если вы обнаружили что-нибудь еще об этом. Обновить? –

ответ

-1

Если бы я был уверен, что проблема будет полностью на стороне сервера. Я предполагаю, что вы не правильно изменили закрытый ключ вместе с открытым ключом (сертификатом), и сервер пытается дешифровать своим старым закрытым ключом. Я считаю, что последовательность сообщений TLS, которые вы описываете, согласуется с этим сценарием.

+0

№. Единственное, что сервер делает с его закрытым ключом, - это знак его сертификата. Клиент проверяет эту подпись с открытым ключом, включенным в сертификат. Если это была проблема, рукопожатие потерпело бы неудачу. – EJP

+0

@EJP: сервер не подписывает сертификат с его закрытым ключом, это делает центр сертификации. Сервер должен дешифровать сообщение Client Key Exchange своим личным ключом. –

Смежные вопросы