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
.