开发者社区> 科技小能手> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

CURL使用HTTPS的技术小结

简介:
+关注继续查看
cURLlinux下命令行提交HTTP(S)请求的一个很有用的工具,支持表单数据提交、文件上传、文件下载、批量访问,多种HTTP方法等。其中对HTTPS的支持有些技术细节还是很有点讲究的,也是我在最近工作中费了不少时间摸索出来的。
cURLHTTPS的支持是通过--cacert, --capath, --with-ca-bundle等参数来对HTTPS加以支持的,详细信息可以curl --help来得到参数明细。[url]http://curl.haxx.se/docs/sslcerts.html[/url]里是curl的官方文档介绍,其中讲了如何导入CA的具体方法,以及使用CA的方法。其中--with-ca-bundle可以用环境变量CURL_CA_BUNDLE(LINUX下)或curl-ca-bundle.crt(WINDOWS下可搜索到该文件)来实现默认指定。
通过IE或其他浏览器访问HTTPS服务器我们可以很容易得到SSLX.509安全证书,证书导出可以选择编码格式,我们通常选择DER或者BASE64编码方法,导出文件为cer后缀。需要注意的是对于openssl生成crt证书文件时--info参数会有区别。如对DER编码文件命令应该是
openssl x509 -inform DES -in /aaa-der.cer -text -out /.aaa-der.crt
其中aaa-der.cer是浏览器里导出的x.509证书文件,aaa-der.crt是加密CA证书被curl所需加载验证的。如果导出用BASE64编码导出的,则命令行应该改为
openssl x509 -inform PEM -in /aaa-b64.cer -text -out /.aaa-b64.crt
其中-inform参数需要改为PEM,来对应编码格式BASE64
另外,X.509证书如果是三层以上的,即除了底层的URL外,上面还有两层以上的,则说明该证书是一个证书夹,即便里面只有一个证书。这时候用在curl时需作为--capath的参数值代入才能生效; 反之,如果只有两层的,即除了底层的URL外,上面只有一层的,则说明该证书只是一个证书,用在curl里需作为--cacert里的参数值才能生效。
 
证书在curl里能被通过必须具备以下三个条件:
1、被CA签证过的证书;
2、期限有效的;
3URL能匹配请求。
 
其中第三个可以用过hosts添加ip-name对来实现欺骗,如果服务器的SSL证书属于复制使用的话。
 
千试百试,终于得到以上体会,希望有相关问题的人可以参考借鉴,也给自己以后参考使用。
 
另,一个期间碰到的环境问题,让自己白忙活了一天,也记录在此,警醒自己:
curl对某web server进行访问,在几台不同网络的机器试,http在所有机器上都是正常的,https在其中的两台上不行,报socket 111无法连接的错误,其他的机器没问题。证书也没有问题。一整天也没有搞明白。因为web server不是我的可触及范围,结果也就是web server的问题,让我白忙活了这么久。因为web server没有启用ssl,它提供的ssl是网络设备ssl-box (netscaler)所支持的,所以所有内网机器都不会成功访问到web serverhttps端口,外网地址都可以,因为ssl是网络提供的,内网不会经过到netscaler去重定向https。这个是netscaler没配全的原因,唉!真苦!


本文转自 dannyy1026 51CTO博客,原文链接:http://blog.51cto.com/dannyyuan/124957


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
JavaScript 技术篇-navigator.permissions读取chrome剪切板权限获取不生效原因:只有在https协议下使用有效。手动设置chrome页面剪切板读取权限方法
JavaScript 技术篇-navigator.permissions读取chrome剪切板权限获取不生效原因:只有在https协议下使用有效。手动设置chrome页面剪切板读取权限方法
0 0
Fiddler 技术篇-捕捉https协议设置,抓取百度https实例演示
Fiddler 技术篇-捕捉https协议设置,抓取百度https实例演示
0 0
技术杂谈:HTTPS Explained - 1、白话基础概念
1. Greeting Hi,大家好,今天我们不写软文也不发ReleaseNotes,来聊聊HTTPS相关的话题,下面我们开始。 2. 为什么聊这个 还要从负载均衡SLB说起,熟悉阿里云负载均衡的同学都知道阿里云负载均衡提供了全面的协议支持TCP/UDP/HTTP/HTTPS/HTTP2/WEBSOCKET(S)(未来还会有QUIC等新协议的支持,敬请期待),部署TCP/UDP/HTTP的负载均衡不是什么难事,三下五除二,点点鼠标就可以完成,唯独HTTPS这个东东概念好像有点多,理解起来也有些吃力,部署实施的时候还常常容易卡壳,也难怪HTTPS协议相关的负载均工单量常年都排名很靠前。
1953 0
【JAVA秒会技术之秒懂HTTPS】白话图解HTTPS原理
白话图解HTTPS原理         【前言】最近看过几篇文章,内容是关于“全民HTTPS”的。为什么HTTPS,突然会受到如此多业内人士的青睐呢?HTTPS究竟是什么呢?它与HTTP又有怎样的区别呢?     带着这个问题,我查看了很多网上的资料,但是太多的专业词汇,让我感到头疼,很难理解。按我个人的认知,这个世界上根本不存在任何高深的道理,尤其是西方讲究科学性的思维,再高深,也
2036 0
HTTPS协议
HTTPS协议介绍
0 0
使用https协议git push指令报错如何解决
基于https协议git push指令报错remote: Support for password authentication was removed on August 13, 2021. remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
0 0
计算机网络-应用层:自定制协议、知名协议HTTP&HTTPS
计算机网络-应用层:自定制协议、知名协议HTTP&HTTPS
0 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
CDN助力企业网站进入HTTPS时代
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载