經過
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
沒配全的緣由,唉!真苦!