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


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


相关文章
|
算法 安全 网络安全
带你读《2022技术人的百宝黑皮书》——HTTPS的原理浅析与本地开发实践(3)
带你读《2022技术人的百宝黑皮书》——HTTPS的原理浅析与本地开发实践(3)
132 1
|
算法 安全 数据安全/隐私保护
带你读《2022技术人的百宝黑皮书》——HTTPS的原理浅析与本地开发实践(4)
带你读《2022技术人的百宝黑皮书》——HTTPS的原理浅析与本地开发实践(4)
158 1
|
安全 算法 数据安全/隐私保护
带你读《2022技术人的百宝黑皮书》——HTTPS的原理浅析与本地开发实践(5)
带你读《2022技术人的百宝黑皮书》——HTTPS的原理浅析与本地开发实践(5)
209 1
|
安全 网络协议 网络安全
HTTPS:保护你的网站免受中间人攻击的关键技术
【6月更文挑战第13天】HTTPS是抵御中间人攻击的关键技术,通过数据加密、身份验证和完整性保护保障网络安全。它基于SSL/TLS协议加密通信,防止数据被窃取或篡改,并使用数字证书确认服务器身份,避免伪造。要确保HTTPS安全,需使用有效数字证书,启用强制HTTPS,定期更新维护并限制访问范围。
|
10月前
|
存储 网络安全
Curl error (60): SSL peer certificate or SSH remote key was not OK for https://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/base/x86_64/repodata/repomd.xml [SSL: no alternative certificate subject name matches target host name 'update.cs2c.com.cn']
【10月更文挑战第30天】在尝试从麒麟软件仓库(ks10-adv-os)下载元数据时,遇到 SSL 证书验证问题。错误提示为:`Curl error (60): SSL peer certificate or SSH remote key was not OK`。可能原因包括证书不被信任、证书与域名不匹配或网络问题。解决方法包括检查网络连接、导入 SSL 证书、禁用 SSL 证书验证(不推荐)、联系仓库管理员、检查系统时间和尝试其他镜像。
2947 1
|
机器学习/深度学习 人工智能 文字识别
文本,文字识别02----PaddleOCR基础概念及介绍,安装和使用,人工智能是一种使计算机模仿人类的一种技术,PaddleOCR的安装地址-https://www.paddlepaddle.org
文本,文字识别02----PaddleOCR基础概念及介绍,安装和使用,人工智能是一种使计算机模仿人类的一种技术,PaddleOCR的安装地址-https://www.paddlepaddle.org
|
安全 Nacos 数据安全/隐私保护
【技术干货】破解Nacos安全隐患:连接用户名与密码明文传输!掌握HTTPS、JWT与OAuth2.0加密秘籍,打造坚不可摧的微服务注册与配置中心!从原理到实践,全方位解析如何构建安全防护体系,让您从此告别数据泄露风险!
【8月更文挑战第15天】Nacos是一款广受好评的微服务注册与配置中心,但其连接用户名和密码的明文传输成为安全隐患。本文探讨加密策略提升安全性。首先介绍明文传输风险,随后对比三种加密方案:HTTPS简化数据保护;JWT令牌减少凭证传输,适配分布式环境;OAuth2.0增强安全,支持多授权模式。每种方案各有千秋,开发者需根据具体需求选择最佳实践,确保服务安全稳定运行。
1178 0
|
网络协议 安全
【专栏】`curl`是广泛用于网络编程和自动化脚本的命令行工具,支持HTTP、HTTPS等协议
【4月更文挑战第28天】`curl`是广泛用于网络编程和自动化脚本的命令行工具,支持HTTP、HTTPS等协议。在处理大文件或慢速服务器时,设置超时参数至关重要。本文介绍了`curl`的超时参数,如`-m`(最大操作时间)、`-c`(连接超时)、`--dns-timeout`(DNS解析超时)和`-t`(时间条件)。通过示例展示了如何设置这些超时,并提到了一些高级技巧和注意事项,如错误处理和带宽限制。合理设置超时能提高效率和可靠性,对编写健壮的自动化脚本非常有用。
334 0
|
缓存 算法
HTTP 缓存技术 - 协商缓存
HTTP 缓存技术 - 协商缓存
258 1
HTTP 缓存技术 - 协商缓存