越来越觉得自己走测试这条路是对的,越来越觉得自己适合做测试,这么久以来兴趣一直在激发我前进,一直在寻找下一个站点,我相信测试路上我一定会走的很远,我的测试道路一定会很宽阔,努力就有收获,也希望还在测试路口迷惘的朋友,不要再犹豫了,因为你的犹豫不决,会使你错过很多~~~~~喜欢就去just do it ,因为只有尝试了才知道自己适不适合,喜不喜欢。如果一味的问别人,永远找不到最终的答案。因为每个人的感觉不一样,每个人的情况不一样,每个人的前提条件都不一样,你会得到不同的答案,这样只能会使你更迷茫~~~~

CURL使用HTTPS的技术小结

上一篇 / 下一篇  2011-11-01 15:05:00 / 个人分类:curl

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。否则将追究法律责任。http://dannyyuan.blog.51cto.com/212520/124957

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没配全的原因,唉!真苦!


TAG:

ilove51的个人空间 引用 删除 ilove51   /   2012-06-21 15:51:03
5
 

评分:0

我来说两句

Open Toolbar