Linux系統下使用curl進行Https連線
概述
curl是一個命令列工具,支援多種型別的網站,包括https網站。它可以用於連線任何網站,但最常用於連線Web伺服器並從中檢索資料。在本教程中,我們將學習如何使用curl與網站建立HTTPS連線。我們還將瞭解如何使用curl檢索檔案內容。
我們將瞭解如何使用curl透過HTTPS呼叫HTTP端點。
什麼是Curl?
Curl是一個命令列工具,允許使用者使用各種協議(包括HTTP、HTTPS、FTP等)從伺服器傳輸資料到伺服器或從伺服器傳輸資料。它支援多種型別的網站,可用於連線任何網站。Curl通常用於連線Web伺服器並從中檢索資料。
curl的主要功能包括:
從FTP或HTTP伺服器下載檔案
將檔案上傳到FTP或HTTP伺服器
獲取頁面(GET)
上傳頁面(POST)
使用使用者身份驗證進行POST請求
傳送cookie
登入遠端計算機
檢索表單資訊
檢視幫助文件
Curl入門
要開始使用curl,您需要先安裝它。
受信任的CA簽名的SSL證書
建立HTTPS連線時,務必確保您連線到的伺服器是受信任的。這可以透過驗證伺服器的SSL證書來完成。證書必須由受信任的證書頒發機構(CA)簽名。如果證書未由受信任的CA簽名,則您的連線將不安全,並且透過連線傳送的任何資料都可能被攔截。
curl最簡單的語法是curl <URL>。讓我們使用curl發出請求來呼叫HTTPS端點:
curl https://tutorialspoint.tw
如果curl發出GET請求並順利收到頁面原始碼,則伺服器可能正在使用受信任的CA簽名的SSL證書,這意味著它已透過可靠的機構驗證。
自簽名證書
如果Web服務使用SSL/TLS連線,但不使用有效的SSL/TLS證書,則我們可能會看到類似於“SSL握手失敗”的錯誤訊息。這通常表示Web服務未正確配置HTTPS連線。
如果我們正在為本地Spring Boot應用程式使用TLS,例如,我們正在使用SSL進行配置。
您可以透過新增-k或--insecure選項來忽略SSL/TLS證書檢查。
curl -k https://:8443/tpoint
但是,如果您忽略HTTPS錯誤,則可能會使自己容易受到攻擊。另一種方法是獲取要訪問的站點的證書。
獲取伺服器證書
單向SSL驗證會針對我們自己的本地副本驗證接收伺服器證書。因此,我們需要在本地系統上儲存伺服器證書。
要從SSL連接獲取伺服器證書列表,我們將使用showcerts引數執行openssl命令。
openssl s_client -showcerts -connect <Domain Name or IP Address>:<Port>
-showcert選項顯示整個SSL/TLS認證鏈。您可以將證書儲存到輸出檔案中,以便以後使用。
openssl s_client -showcerts -connect https://:8443/tpoint </dev/null | sed -n -e '/-.BEGIN/,/-.END/ p' > tpoint.pem
呼叫HTTPS端點
要訪問HTTPS端點,我們首先需要使用OpenSSL命令列工具或金鑰庫檔案從本地網站儲存BAEldung.pem檔案。
然後,我們將-cacert選項新增到curl命令中。
curl --cacert baeldung.pem https://:8443/tpoint
結論
我們解釋瞭如何使用curl命令列實用程式呼叫HTTP/HTTPS端點。
我們還討論瞭如何使用OpenSSL命令列工具獲取伺服器證書並將其儲存到檔案中。最後,我們展示瞭如何將-cacert選項與curl一起使用以訪問HTTPS端點。
使用curl是快速測試Web服務和API的好方法。它易於使用、速度快,可用於HTTP和HTTPS連線。