数码控科技猎奇Iphone动漫星座游戏电竞lolcosplay王者荣耀攻略allcnewsBLOGNEWSBLOGASKBLOGBLOGZSK全部技术问答问答技术问答it问答代码软件新闻开发博客电脑/网络手机/数码笔记本电脑互联网操作系统软件硬件编程开发360产品资源分享电脑知识文档中心IT全部全部分类 全部分类技术牛文全部分类教程最新 网页制作cms教程平面设计媒体动画操作系统网站运营网络安全服务器教程数据库工具网络安全软件教学vbscript正则表达式javascript批处理更多»编程更新教程更新游戏更新allitnewsJava 新闻网络医疗信息化安全创业站长电商科技访谈域名会议专栏创业动态融资创投创业学院 / 产品经理创业公司人物访谈营销 开发数据库服务器系统虚拟化云计算 嵌入式移动开发作业作业1常见软件all电脑网络手机数码生活游戏体育运动明星影音休闲爱好文化艺术社会民生教育科学医疗健康金融管理情感社交地区其他电脑互联网软件硬件编程开发360相关产品手机平板其他电子产品摄影器材360硬件通讯智能设备购物时尚生活常识美容塑身服装服饰出行旅游交通汽车购房置业家居装修美食烹饪单机电脑游戏网页游戏电视游戏桌游棋牌游戏手机游戏小游戏掌机游戏客户端游戏集体游戏其他游戏体育赛事篮球足球其他运动球类运动赛车健身运动运动用品影视娱乐人物音乐动漫摄影摄像收藏宠物幽默搞笑起名花鸟鱼虫茶艺彩票星座占卜书画美术舞蹈小说图书器乐声乐小品相声戏剧戏曲手工艺品历史话题时事政治就业职场军事国防节日风俗法律法规宗教礼仪礼节自然灾害360维权社会人物升学入学人文社科外语资格考试公务员留学出国家庭教育学习方法语文物理生物工程学农业数学化学健康知识心理健康孕育早教内科外科妇产科儿科皮肤科五官科男科整形中医药品传染科其他疾病医院两性肿瘤科创业投资企业管理财务税务银行股票金融理财基金债券保险贸易商务文书国民经济爱情婚姻家庭烦恼北京上海重庆天津黑龙江吉林辽宁河北内蒙古山西陕西宁夏甘肃青海新疆西藏四川贵州云南河南湖北湖南山东江苏浙江安徽江西福建广东广西海南香港澳门台湾海外地区

Linux中使用curl命令访问https站点4种常见错误和解决方法

来源:本网整理
这篇文章主要介绍了Linux中使用curl命令访问https站点常见的4种错误和解决方法,本文列举的都是一些常见报错信息,,需要的朋友可以参考下

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

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

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

1.Peer’s Certificate issuer is not recognized


< class="msgheader">< class="right">复制代码代码如下:< class="msgborder" id="phpcode10">
[root@ip-172-31-32-208 Nginx]# curl https://m.ipcpu.com
curl: (60) Peer's Certificate issuer is not recognized.
more details here: http://curl.haxx.se/docs/sslcerts.html

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

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

我们在访问12306.cn订票网站时也报了类似的错误。

< class="msgheader">< class="right">复制代码代码如下:< class="msgborder" id="phpcode11">
[root@ip-172-31-32-208 ~]# curl https://kyfw.12306.cn/
curl: (60) Peer's certificate issuer has been marked as not trusted by the user.
More details here: http://curl.haxx.se/docs/sslcerts.html

2.SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed


< class="msgheader">< class="right">复制代码代码如下:< class="msgborder" id="phpcode12">
[root@GO-EMAIL-1 aa]# curl https://github.com/
curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
More details here: http://curl.haxx.se/docs/sslcerts.html

此问题多是由于本地CA证书库过旧,导致新签发证书无法识别。

经排查,github.com证书是由GTE CyberTrust Root签发,现行证书时间是:

1.不早于(1998/8/13 0:29:00 GMT)
2.不晚于(2018/8/13 23:59:00 GMT)

而在我们的Redhat5.3系统中ca-bundle.crt文件发现,GTE CyberTrust Root的时间已经过期。

< class="msgheader">< class="right">复制代码代码如下:< class="msgborder" id="phpcode13">
Issuer: C=US, O=GTE Corporation, CN=GTE CyberTrust Root
Validity
Not Before: Feb 23 23:01:00 1996 GMT
Not After : Feb 23 23:59:00 2006 GMT

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

方法一:

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

方法二:

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

3.unknown message digest algorithm


< class="msgheader">< class="right">复制代码代码如下:< class="msgborder" id="phpcode14">
[root@WEB_YF_2.7 ~]#curl https://www.alipay.com
curl: (35) error:0D0C50A1:asn1 encoding routines:ASN1_item_verify:unknown message digest algorithm

此问题多由证书本地openssl不能识别SSL证书签名算法所致。www.alipay.com 使用了SHA-256 RSA 加密算法。而openssl在OpenSSL 0.9.8o才加入此算法。

解决办法是升级本地openssl。

在我的操作系统RedHat5.3中,yum 升级openssl到openssl-0.9.8e-22.el5 就可以识别SHA-256算法。原因是Redhat每次都是给0.9.8e打补丁,而不是直接更换版本。在srpm包中我找到了这个补丁。

< class="msgheader">< class="right">复制代码代码如下:< class="msgborder" id="phpcode15">
Summary: The OpenSSL toolkit
Name: openssl
Version: 0.9.8e
...
Patch89: openssl-fips-0.9.8e-ssl-sha256.patch

4.JAVA和PHP的问题

java和php都可以编程来访问https网站。例如httpclient等。

其调用的CA根证书库并不和操作系统一致。

JAVA的CA根证书库是在 JRE的$JAVA_HOME/jre/lib/security/cacerts,该文件会随着JRE版本的升级而升级。可以使用keytool工具进行管理。

PHP这边我没有进行测试,从php安装curl组件的过程来看,极有可能就是直接采用的操作系统curl一直的数据。

当然PHP也提供了 curl.cainfo 参数(php.ini)来指定CA根证书库的位置。

  • 本文相关:
  • Linux使用Wireshark实现抓包分析教程
  • Linux下OpenVPN配置静态密钥(static-key)验证教程
  • CentOS下编译安装python包管理安装工具pip教程
  • Linux下配置vlan网卡教程
  • Centos打包tengine制作rpm安装包教程
  • 防止Xen VPS用户自己修改IP地址的方法
  • Linux查看系统日志的一些常用命令总结
  • awk命令实现求和、求平均值、求最大值、求最小值
  • Linux如何提高大文件的拷贝效率以节约时间
  • linux系统用什么命令查看端口的占用情况?
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved