某些HTTPS网站对证书的要求比较严格,使用curl直接访问时会出现如下错误:
curl: (60) SSL certificate problem, verify that the CA cert is OK. Details: |
此时就需要使用证书。
因此本篇只对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库。