Ssl-Certificate
帶有自定義證書的捲曲
我希望 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
這也導致了驗證錯誤。我檢查了證書日期和主題,一切似乎都很好?
我錯過了什麼?我可能需要整個鏈條嗎?如果是,是否有命令可以全部獲取?
cacert 中的 CA 表示證書頒發機構。您應該指定簽署您的證書的機構的證書或證書路徑,而不是您的證書本身
命令
openssl x509 -in YourSitePemCert -text
應該列出一個發行人行。您應該獲得頒發者證書並將其包含在 cacert pem 文件中
(在您的情況下搜尋 Godaddy 證書鏈會導致https://certs.godaddy.com/repository)
根據文件:
curl 預設使用證書頒發機構 (CA) 公鑰(CA 證書)的“捆綁”執行 SSL 證書驗證。如果預設捆綁文件不夠用,您可以使用該
--cacert
選項指定備用文件。如果此HTTPS伺服器使用捆綁包中表示的****CA簽名的證書,則證書驗證可能由於證書問題而失敗(證書可能已過期,或者名稱可能與 URL 中的域名不匹配)。如果您想關閉 curl 對證書的驗證,請使用該
-k (or --insecure)
選項。對於 goDaddy,您必須使用SSL 證書和 CA Bundle (
gd_bundle.crt
)。您可以從https://certs.godaddy.com/repository/gd_bundle.crt下載例如。
curl https://mysite.com --cacert gd_bundle.crt