У меня есть веб-сервер, на котором я веду небольшой бизнес (www.trailmyx.com). Недавно я начал разрабатывать некоторый базовый код сокета SSL (на C ++) и написал небольшую тестовую программу, которая подключается к OpenSSl и выполняет http GET. Я могу успешно использовать свой клиент против www.google.com через порт 443 (или любой другой сайт), кроме своего собственного.
Когда я пытаюсь выполнить SSL_get_verify_result (ssl) для моего собственного сервера, я получаю ответ: X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT.
Теперь, когда я захожу на свой веб-сайт в браузере (https://www.trailmyx.com), я могу проверить сертификат, и все выглядит хорошо ... Он не отображается как самоподписанный.
Точно так же, когда я использую wget против моего сервера, я получаю ту же ошибку самозаверяющего сертификата.
У меня такое чувство, что мой сайт неправильно настроен, но если это так, как браузеры могут это сделать? Есть ли какая-то другая последовательность вызовов OpenSSL, о которых знают браузеры?
Примечание. Когда wget возвращается к моему серверу, он выводит некоторую информацию из сертификата. Ничто из этой информации не является действительным (например: / C = - / ST = SomeState / L = SomeCity / O = SomeOrganization / OU = SomeOrganizationalUnit) Я сильно подозреваю, что по некоторым причинам, при определенных обстоятельствах apache возвращает самоподписанный сертификат ... но почему? И как это делают браузеры? Кстати, CURL работает просто отлично.