OpenSSL идентифицирует причину "плохого сертификата"

Я использую pyOpenSSL, который является оболочкой для OpenSSL. У меня была клиентская программа, пытающаяся подключиться к моему серверу, и она постоянно получала sslv3 alert bad certificate на сервере. Только когда я понял, что из-за неправильной установки часов клиента я смог выяснить проблему. Я предполагаю, что клиент видел, что сертификаты сервера устарели в "будущем" и каким-то образом это привело к sslv3 alert bad certificate на сервере.

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

2 ответа

Решение

К сожалению, описания проблем довольно ограничены. Ошибки передаются с помощью оповещений TLS. Каждое предупреждение - это всего лишь число без какой-либо дополнительной информации, и определено только несколько предупреждений, см. http://en.wikipedia.org/wiki/Transport_Layer_Security. Например, есть предупреждение для просроченного сертификата, но нет предупреждения для сертификата, который еще не действителен, что было бы необходимо в вашем случае. Таким образом, все, что клиент мог отправить обратно, это то, что сертификат плохой.

В большинстве случаев sslv3 alert bad certificateозначает, что информация CA не предоставлена ​​вообще или неверна. В curl есть параметр --cacert , для openssl s_client использовать -CAfile.

Другие вопросы по тегам