CURL訪問 https CA證書問題

2021-10-01 19:11:10 字數 2128 閱讀 8624

1、證書錯誤

執行報錯:ssl peer certificate or ssh remote key was not ok

谷歌翻譯:ssl對等證書或ssh遠端金鑰不正確

方法一:不檢查證書

// 不檢查證書

curl_easy_setopt

(curl, curlopt_ssl_verifypeer,0l)

;curl_easy_setopt

(curl, curlopt_ssl_verifyhost,0l)

;

(2)在你的程式中設定證書的路徑

// ssl ca證書

curl_easy_setopt

(curl, curlopt_ssl_verifypeer,1l)

;// 驗證伺服器證書有效性

curl_easy_setopt

(curl, curlopt_ssl_verifyhost,2l)

;// 檢驗證書中的主機名和你訪問的主機名是否一致

curl_easy_setopt

(curl, curlopt_capath,

"./lib/");

// 設定證書路徑

//curl_easy_setopt(curl, curlopt_cainfo, "./lib/cacert.pem"); // 具體的 ca 證書,和上一行效果一樣,選用乙個即可

2、證書路徑錯誤

執行報錯:problem with the ssl ca cert (path? access rights?)

谷歌翻譯:ssl ca證書有問題(路徑?訪問許可權?)

分析:ca 證書預設路徑/etc/ssl/certs找不到正確的證書

解決:

// ssl ca證書

curl_easy_setopt

(curl, curlopt_ssl_verifypeer,1l)

;// 開啟驗證證書功能

curl_easy_setopt

(curl, curlopt_ssl_verifyhost,2l)

;// 檢驗證書中的主機名和你訪問的主機名是否一致

curl_easy_setopt

(curl, curlopt_capath,

"./lib/");

// 設定證書路徑

//curl_easy_setopt(curl, curlopt_cainfo, "./lib/cacert.pem"); // 具體的 ca 證書

(1)使用 path 或 info 設定路徑前要用curl_easy_setopt(curl, curlopt_ssl_verifypeer, 1l);開啟驗證證書功能

(2)使用curl_easy_setopt(curl, curlopt_capath, "./lib/");設定證書路徑

或使用curl_easy_setopt(curl, curlopt_cainfo, "./lib/cacert.pem");設定具體的 ca 證書

注:如果將可執行程式移植了,記得證書也要拷貝過去,放在上面 path 或 info設定的路徑下

【 下面是我個人遇到的問題,不一定適合你,如果上面操作解決不了問題,可以嘗試下面操作 】

(1)使用curl_easy_setopt(curl, curlopt_capath, capath);設定路徑,依然報路徑錯誤

使用curl_easy_setopt(curl, curlopt_cainfo, "/home/cacert.pem");設定具體的證書,問題解決

(2)在(1)中使用 info 設定具體證書,使用相對路徑"./lib/cacert.pem"依然報錯,改用絕對路徑"/home/cacert.pem"(記得把證書拷貝至對應路徑)後問題解決

參考:

1、2、

3、

curl證書過期 curl 證書訪問https站點

curl 個人證書 又叫客戶端證書 訪問https站點 雙向認證 什麼是雙向認證模式?對於面向公眾使用者的https的 大部分屬於單向認證模式,它不需要對客戶端進行認證,不需要提供客戶端的個人證書,例如而雙向認證模式,為了驗證客戶端的合法性,要求客戶端在訪問伺服器時,出示自己的client cert...

CURL使用SSL證書訪問HTTPS

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

CURL使用SSL證書訪問HTTPS

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