CURL使用HTTPS的技術小結

2021-09-21 20:54:37 字數 2394 閱讀 8653

curl

是 linux

下命令列提交

方法等。其中對

的支援有些技術細節還是很有點講究的,也是我在最近工作中費了不少時間摸索出來的。

curl

對 https

的支援是通過

--cacert, --capath, --with-ca-bundle

等引數來對

加以支援的,詳細資訊可以

curl --help

來得到引數明細。

[url]

裡是curl

的官方文件介紹,其中講了如何匯入

ca的具體方法,

以及使用

ca的方法。其中

--with-ca-bundle

可以用環境變數

curl_ca_bundle(linux

下)或curl-ca-bundle.crt(windows

下可搜尋到該檔案

) 來實現預設指定。

通過ie或其他瀏覽器訪問

伺服器我們可以很容易得到

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

進行訪問,在幾台不同網路的機器試,

在所有機器上都是正常的,

在其中的兩台上不行,報

socket 111

無法連線的錯誤,其他的機器沒問題。證書也沒有問題。一整天也沒有搞明白。因為

web server

不是我的可觸及範圍,結果也就是

web server

的問題,讓我白忙活

了這麼久。因為

web server

沒有啟用

ssl,它提供的

ssl是網路裝置

ssl-box (netscaler)

所支援的,所以所有內網機器都不會成功訪問到

web server

的https

埠,外網位址都可以,因為

ssl是網路提供的,內網不會經過到

netscaler

去重定向

。這個是

netscaler

沒配全的原因,唉!真苦!

curl使用 https訪問

訪問自己的https伺服器 自己在阿里雲上搭建了乙個https伺服器,以前一直用的是postman作為客戶端訪問,現在想嘗試用curl。下面的終端是 外網深度學習伺服器 所訪問的伺服器是我自己的阿里雲 curl cert client.crt key client.key insecure http...

http 使用curl發起https請求

今天乙個同事反映,使用curl發起https請求的時候報錯 ssl certificate problem,verify that the ca cert is ok.details error 14090086 ssl routines ssl3 get server certificate ce...

CURL使用SSL證書訪問HTTPS

curl詳細選項說明 url 若服務端要求客戶端認證,需要將pfx證書轉換成pem格式 openssl pkcs12 clcerts nokeys in cert.pfx out client.pem 客戶端個人證書的公鑰 openssl pkcs12 nocerts nodes in cert.p...