Linux下cURL使用教程之十一:HTTPS及证书使用简介

某些HTTPS网站对证书的要求比较严格,使用curl直接访问时会出现如下错误:

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

此时就需要使用证书。
因此本篇只对curl相关选项做出介绍,详细原理请参考HTTPS协议。

使用到的选项

-E/–cert 导入证书

-E/--cert <certificate[:password]>导入证书。curl默认使用PEM格式的证书。
一般我们从浏览器导出的cert都是X.509格式。可以使用openssl转化为PEM格式。

–cert-type 指定证书类型

--cert-type <type>指定证书类型,可以为PEM、 DER 或 ENG类型。

–cacert 指定CA证书

--cacert <CA certificate>
指定使用的CA证书。CA证书必须是PEM格式。
默认情况下,curl使用一个自带的CA文件。可以在这里下载curl提供的最新的CA证书。
curl通过读取环境变量CURL_CA_BUNDLE的值作为CA证书库(CA cert bundle)的路径。此选项优先级高于此环境变量被使用。

–capath 指定CA路径

--capath <CA certificate directory>
指定使用的CA证书路径目录。证书必须为PEM格式,且此目录已被curl自带的c_rehash工具处理过。
在需要指定多个CA证书的时候,使用–capath指定CA目录更高效。

-k/–insecure 跳过验证

-k/--insecure
指定允许使用不安全的ssl连接传输。
所有的连接都是试图通过使用默认安装的CA证书库(CA certificate bundle)来验证是安全的。非安全的连接默认是不允许的。

指定私钥

--key <key>
指定私钥文件名。

--key-type <type>
指定私钥文件类型,可以为DER、PEM 或 ENG。默认使用PEM。

参考

Details on Server SSL Certificates

总结

至此,curl脚本HTTP相关部分告一段落。
后续会介绍些curl使用其他协议的例子,及在编程中使用libcurl库。