curl与自定义证书

我喜欢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 Bundlegd_bundle.crt )。 您可以从https://certs.godaddy.com/repository/gd_bundle.crt下载

例如。

 curl https://mysite.com --cacert gd_bundle.crt