我喜欢curl与goDaddy签署的网站合作:如果我打电话
curl mypage.com/bla
我正在收到证书validation错误。 我试图得到这个片段的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
这也造成了validation错误。 我检查了证书date和主题,一切看起来不错?
我错过了什么? 我可能需要整个链条? 如果是的话,是否有一个命令来获得这一切?
cacert中的CA意味着authentication机构。 您应该指定签署证书的机构的证书或证书path,而不是证书本身
命令
openssl x509 -in YourSitePemCert -text
应列出发行人行。 你应该得到发行者证书并将其包含在cacert pem文件中
(在你的情况下searchgodaddy的证书链导致https://certs.godaddy.com/repository )
根据文件:
curl默认使用证书颁发机构(CA)公钥(CA证书)的“包”来执行SSL证书validation。 如果默认的软件包文件不够用,可以使用
--cacert选项指定一个备用文件。
如果此HTTPS服务器使用包中表示的由CA签名的证书,证书validation可能由于证书问题(可能已过期,或名称可能与URL中的域名不匹配)而失败。 如果您想closures卷发的证书validation,请使用-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