快速解决Linux中使用curl命令访问https站点出现的错误

每一种客户端在处理https的连接时都会使用不同的证书库。IE浏览器和FireFox浏览器都可以在本浏览器的控制面板中找到证书管理器。在证书管理器中可以自由添加、删除根证书。

而Linux的curl使用的证书库在文件“/etc/pki/tls/certs/ca-bundle.crt”中。(CentOS)

以下是curl在访问https站点时常见的报错信息

错误一、Peer’s Certificate issuer is not recognized

代码如下:

[root@jiankong ~]# curl -v https://wx.87th.cn

* CAfile: /etc/pki/tls/certs/ca-bundle.crt

CApath: none

* Peer’s certificate issuer is not recognized: ‘CN=Encryption Everywhere DV TLS CA – G2,OU=www.digicert.com,O=DigiCert Inc,C=US’

此种情况多发生在自签名的证书,报错含义是签发证书机构未经认证,无法识别。

错误二、SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

[root@jiankong ~]# curl https://wx.87th.cn

curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:

error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

解决办法是更新本地CA证书库。

方法一:

下载http://curl.haxx.se/ca/cacert.pem 替换/etc/pki/tls/certs/ca-bundle.crt

方法二:

使用update-ca-trust 更新CA证书库。(CentOS6,属于ca-certificates包)

方法三:

解决办法是将签发该证书的私有CA公钥cacert.pem文件内容,追加到/etc/pki/tls/certs/ca-bundle.crt

方法四:curl构造HTTPS请求的通用办法
HTTPS请求不携带SNI
curl -k -H “Content-Type: application/x-www-form-urlencoded” -H “Host:test.hadong.com” -H “yousa1:123” –tlsv1 –cacert ca.crt –cert ./client.crt –key ./client.key -i -X GET https://10.174.230.97/release/test
HTTPS请求携带SNI
curl -k -H “Content-Type: application/x-www-form-urlencoded” -H “Host:test.hadong.com” -H “yousa1:123” –tlsv1 –cacert ca.crt –cert ./client.crt –key ./client.key -i -X GET https://hadong.com/release/test
上述请求中的-k是insercure的意思,即请求流程中不会对HTTPS证书合法性作校验(通常不建议携带该选项,否则午饭验证证书的合法性)

–tlsv1是使用tlsv1.0版本

-E/–cert <certificate[:password]> 为 HTTPS/FTPS 数据包指定数字证书。数字证书必须是 PEM 格式。如果 password 没有在内容中显式给定,则会在连接建立时被服务器端询问。

–key HTTPS证书的私钥文件

–cacert FILE CA certificate to verify peer against (SSL) 证书签发机构信息
有上述情况可知,在选择SSL证书时,必须要选择正规、受信任的证书签发机构。否则发生SSL错误是不可避免的。信孚科技是专业的SSL证书提供商,为国内各大服务器提供完整的安全解决方案,专业为企业或提供SSL数字证书、邮件签名证书、客户端证书、代码签名、网站安全服务产品。主要提供Comodo、Symantec、GeoTrust、GlobalSign等全球信任的颁发机构(CA),为国内企业和个人提供优质低价的SSL证书服务。同时信孚科技拥有强大的技术支持团队,能为您提供完善的技术支持服务。

相关新闻

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code