Я бы хотел, чтобы curl работал с сайтами, подписанными goDaddy: если я позвоню
curl mypage.com/bla
Я получаю сообщение об ошибке проверки сертификата. Я попытался получить сертификат CA с помощью этого фрагмента:
echo | openssl s_client -connect mysite.com:443 2>&1 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > cert.pem
и после звонка
curl mypage.com/bla --cacert cert.pem
что также вызвало ошибку проверки. Я проверил дату и тему сертификата, и все в порядке?
Что мне не хватает? Может мне нужна вся цепочка? Если да, есть ли команда, чтобы получить все это?
Согласно документации:
curl по умолчанию выполняет проверку сертификата SSL, используя «связку» открытых ключей центра сертификации (CA) (сертификаты CA). Если файл пакета по умолчанию не подходит, вы можете указать альтернативный файл, используя
--cacert
вариант.
Если это HTTPS сервер использует сертификат, подписанный CA представленный в комплекте, проверка сертификата, вероятно, не удалась из-за проблемы с сертификатом (срок его действия может быть истек или имя может не совпадать с именем домена в URL-адресе). Если вы хотите отключить проверку сертификата с помощью curl, используйте -k (or --insecure)
вариант.
Для goDaddy вы должны использовать Сертификат SSL и пакет CA (gd_bundle.crt
). Вы можете скачать с https://certs.godaddy.com/repository/gd_bundle.crt
Например.
curl https://mysite.com --cacert gd_bundle.crt
CA в cacert означает центр сертификации. Вы должны указать сертификат или путь сертификата органа, подписавшего ваш сертификат, а не сам сертификат.
команда
openssl x509 -в YourSitePemCert -text
должен указать строку эмитента. вы должны получить сертификат эмитента и включить его в файл cacert pem
(в вашем случае поиск цепочки сертификатов godaddy приводит к https://certs.godaddy.com/repository )