摘自http://www.51testing.com/html/14/175414-248202.html

CURL使用HTTPS的技术小结

cURL是linux下命令行提交HTTP(S)请求的一个很有用的工具,支持表单数据提交、文件上传、文件下载、批量访问,多种HTTP方法等。其中对HTTPS的支持有些技术细节还是很有点讲究的,也是我在最近工作中费了不少时间摸索出来的。

cURL对HTTPS的支持是通过--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服务器我们可以很容易得到SSL的X.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、期限有效的;

3、URL能匹配请求。

 
其中第三个可以用过hosts添加ip-name对来实现欺骗,如果服务器的SSL证书属于复制使用的话。  千试百试,终于得到以上体会,希望有相关问题的人可以参考借鉴,也给自己以后参考使用。  另,一个期间碰到的环境问题,让自己白忙活了一天,也记录在此,警醒自己: 用curl对某web server进行访问,在几台不同网络的机器试,http在所有机器上都是正常的,https在其中的两台上不行,报socket 111无法连接的错误,其他的机器没问题。证书也没有问题。一整天也没有搞明白。因为web server不是我的可触及范围,结果也就是web server的问题,让我白忙活了这么久。因为web server没有启用ssl,它提供的ssl是网络设备ssl-box (netscaler)所支持的,所以所有内网机器都不会成功访问到web server的https端口,外网地址都可以,因为ssl是网络提供的,内网不会经过到netscaler去重定向https。这个是netscaler没配全的原因,唉!真苦!

CURL使用HTTPS的技术小结的更多相关文章

  1. Canvas:技术小结

    Canvas:技术小结 资料 [教程:MDN官方中文教程] https://developer.mozilla.org/zh-CN/docs/Web/API/Canvas_API/Tutorial [ ...

  2. php 使用curl发起https请求

    今天一个同事反映,使用curl发起https请求的时候报错:“SSL certificate problem, verify that the CA cert is OK. Details: erro ...

  3. 用curl访问HTTPS站点并登录

    开发网站,少不了测试.现在的网站为了加强安全性,都启用了HTTPS协议.所谓HTTPS,也就是HTTP文本在SSL协议中传输.用curl命令行来测试HTTPS站点是个很有用的功能,写点脚本,就可以做功 ...

  4. 老李分享:curl发起https请求

    老李分享:curl发起https请求 在POPTEST上课的过程中,我们需要本地模拟https请求来完成性能测试,我们用curl来实现,curl是利用URL语法在命令行方式下工作的开源文件传输工具,使 ...

  5. PHP curl请求https遇到的坑

    PHP里curl对https的证书配置默认是服务器端要求验证的,如果服务器端没有配置证书验证,则无法请求https路径.如果为了简便使用不需要配置https证书的话,配置curl时将以下两项设置为fa ...

  6. centos7内核升级及curl访问https证书过期处理

    centos7内核升级及curl访问https证书过期处理 先看下当前系统的linux内核版本 uname -r 3.10.0-229.el7.x86_64 升级步骤 1.rpm --import h ...

  7. http 使用curl发起https请求报错的解决办法

    使用curl发起https请求的时候报错:“SSL certificate problem, verify that the CA cert is OK. Details: error:1409008 ...

  8. php-fpm nginx 使用 curl 请求 https 出现 502 错误

    用php curl请求https的url出现502错误,请求帮忙解决. PHP版本:5.6.7Nginx版本:1.8.0 代码如下: $ch = curl_init(); curl_setopt($c ...

  9. 用curl获取https请求时出现错误的处理

    今天一个同事反映,使用curl发起https请求的时候报错:“SSL certificate problem, verify that the CA cert is OK. Details: erro ...

随机推荐

  1. java MD5加密

    public final static String MD5(String s)    {        char hexDigits[] =        { '0', '1', '2', '3', ...

  2. uestc poj2559 秋实大哥去打工

    //感觉有必要把这题放博客上待复习 刚刚写解题报告的时候发现自己又不会做这题了 //我不会告诉你这题绝对是命题人抄poj2559 这题使用一个单调递增的栈,栈内存储的元素有两个值,一个高度,一个长度. ...

  3. 《MATLAB数据分析与挖掘实战》赠书活动

    <MATLAB数据分析与挖掘实战>是泰迪科技在数据挖掘领域探索10余年经验总结与华南师大.韩山师院.广东工大.广技师   等高校资深讲师联合倾力打造的巅峰之作.全书以实践和实用为宗旨,深度 ...

  4. zoj3433(贪心+优先队列)

    Gu Jian Qi Tan Time Limit: 2 Seconds      Memory Limit: 65536 KB Gu Jian Qi Tan is a very hot Chines ...

  5. java_IO流之 NIO

    NIO 定义 即新IO,在JDK1.4的java.nio.*包中引入,其目的在于提高速度. 在Java1.4之前的I/O系统中,提供的都是面向流的I/O系统,系统一次一个字节地处理数据,一个输入流产生 ...

  6. 【Java面试】基础知识篇

    [Java面试]基础知识篇 Java基础知识总结,主要包括数据类型,string类,集合,线程,时间,正则,流,jdk5--8各个版本的新特性,等等.不足的地方,欢迎大家补充.源码分享见个人公告.Ja ...

  7. Conquering Keokradong && Get the Containers(二分)

    Conquering Keokradong Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu ...

  8. paip.c++ qt 图片处理 检测损坏的图片

    paip.c++ qt 图片处理 检测损坏的图片 作者Attilax ,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http://blog.csdn.net ...

  9. [网络流最大流经典][uva 11082][矩阵解压]

    题目大意 分析 #include <cstdio> #include <cstdlib> #include <cmath> #include <cstring ...

  10. php各种编译错误汇总

    PHP编译安装时常见错误解决办法,php编译常见错误 This article is post on https://coderwall.com/p/ggmpfa configure: error: ...