Назад | Перейти на главную страницу

Curl с индивидуальным сертификатом

Я бы хотел, чтобы 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 )