Первое сообщение об ошибке сообщает вам больше о проблеме:
проверить ошибку: num = 20: невозможно получить сертификат локального эмитента
Центр сертификации выдающегосертификата сервера конечного объекта
VeriSign Class 3 Secure Server CA - G3
Посмотрите внимательно в своем файле CA - вы не найдетеэтот сертификат, поскольку он является промежуточным центром сертификации. То, что вы обнаружили, было Public-CA с аналогичным именем G3 Public Primary CA от VeriSign.
Но почему другое соединение успешно, но это не так?Проблема заключается в неправильной конфигурации серверов (убедитесь сами, используя опцию -debug
).«Хороший» сервер отправляет всю цепочку сертификатов во время рукопожатия, предоставляя вам необходимые промежуточные сертификаты.
Но отказавший сервер отправляет вам только сертификат конечного объекта, и OpenSSL не может загрузить отсутствующий промежуточный сертификат "на лету" (что было бы возможно при интерпретацииРасширение прав доступа к информации).Поэтому ваша попытка не удалась с использованием s_client
, но, тем не менее, она была бы успешной, если вы перейдете по тому же URL-адресу, используя, например, FireFox (который поддерживает функцию «обнаружения сертификата»).
Ваши варианты решения проблемы - либо исправлениеэто на стороне сервера, заставляя сервер отправлять также всю цепочку или передавая отсутствующий промежуточный сертификат в OpenSSL в качестве параметра на стороне клиента.