经过
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
没配全的缘由,唉!真苦!