web-dev-qa-db-ja.com

カスタム証明書でカール

GoDaddyで署名されたサイトでcurlを使用したい:電話をかけた場合

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

検証エラーも発生しました。証明書の日付と件名を確認しましたが、すべて問題ありませんか?

何が欠けていますか?チェーン全体が必要ですか?はいの場合、それをすべて取得するコマンドはありますか?

3
ProfHase85

CacertのCAは認証局を意味します。証明書自体ではなく、証明書に署名した機関の証明書または証明書パスを指定する必要があります

コマンド

openssl x509-YourSitePemCert -text

発行者の行をリストする必要があります。発行者証明書を取得し、cacert pemファイルを含める必要があります

(あなたの場合、godaddy証明書チェーンを検索すると https://certs.godaddy.com/repository につながります)

3
gnafou

ドキュメントによると:

curlはデフォルトで、認証局(CA)公開鍵(CA証明書)の「バンドル」を使用してSSL証明書の検証を実行します。デフォルトのバンドルファイルでは不十分な場合は、_--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
_
3
Federico Sierra