Curl

curl --certcurl --cacert 讀寫哪些 HTTP 請求和響應標頭?

  • January 31, 2019

來自https://curl.haxx.se/docs/httpscripting.html

在 HTTPS 世界中,您使用證書來驗證您是您聲稱的人,作為普通密碼的補充。Curl 支持客戶端證書。所有證書都使用密碼鎖定,您需要輸入密碼才能讓 curl 使用證書。密碼片語可以在命令行中指定,如果沒有,則在 curl 查詢時以互動方式輸入。在 HTTPS 伺服器上使用帶有 curl 的證書,例如:

curl --cert mycert.pem https://secure.example.com

curl 還嘗試通過根據本地儲存的 CA 證書包驗證伺服器的證書來驗證伺服器是否是它聲稱的身份。驗證失敗將導致 curl 拒絕連接。然後,您必須使用 –insecure (-k),以防您想告訴 curl 忽略無法驗證伺服器。有關伺服器證書驗證和 ca 證書捆綁的更多資訊,請參閱 SSLCERTS 文件,可在此處線上獲取: https ://curl.haxx.se/docs/sslcerts.html

有時你可能會得到你自己的 CA 證書儲存,然後你可以告訴 curl 使用它來驗證伺服器的證書:

 curl --cacert ca-bundle.pem https://example.com/

HTTP 請求和響應標頭做什麼curl --cert以及curl --cacert讀寫?

謝謝。

請注意,TLS獨立於 HTTP。其他協議可以通過 TLS 傳遞(例如 LDAP、SMTP、NNTP,…)。基本上,TLS 對數據通道進行“低級加密”,然後你可以通過它傳遞任何東西。

使用 HTTPS,HTTP 流量分層在 TLS 之上。與 HTTP 相比,在 TLS 層(TLS 版本;密碼協商;證書驗證;SNI)發生的事情是“低級”的,對 HTTP 層不可見。

Telling curlto use --cacertand --certwill 告訴程序向伺服器發送客戶端證書,該證書在 TLS 層進行處理,對 HTTP 層不可見。Web 伺服器可能會將客戶端的 CN 暴露給 CGI 程序,或者將其暴露給身份驗證模組,但這一切都是在 HTTP 請求之外完成的。

引用自:https://unix.stackexchange.com/questions/497743