我正在使用下面的示例來設置用於客戶端身份驗證的證書和密鑰。無法使用libcurl訪問需要客戶端身份驗證的站點
curl_easy_setopt(curl,CURLOPT_SSLCERT,"clientCert.pem");
curl_easy_setopt(curl,CURLOPT_SSLCERTPASSWD,"changeit");
curl_easy_setopt(curl,CURLOPT_SSLCERTTYPE,"PEM");
curl_easy_setopt(curl,CURLOPT_SSLKEY,"privateKey.pem");
curl_easy_setopt(curl,CURLOPT_SSLKEYPASSWD,"changeit");
curl_easy_setopt(curl,CURLOPT_SSLKEYTYPE,"PEM");
的證書沒有密碼,我不知道爲什麼在地球上的選項SSLCERTPASSWD存在,我只是提供了一個虛擬的值。 當我在Linux上運行,我得到的58錯誤代碼和錯誤消息 無法設置專用密鑰文件的程序:「privateKey.pem」型PEM
在Windows,但是我得到 無法使用客戶端證書(沒有找到密鑰或密碼錯誤?)
它似乎建議證書和密鑰不匹配,但我不知道如何。我使用openssl命令從p12文件中提取了證書和密鑰。 我用來提取密鑰,該命令是
openssl.exe pkcs12 -in client.p12 -nocerts -out privateKey.pem
,並用於提取證書的命令是
openssl.exe pkcs12 -in client.p12 -nokeys -out clientCert.pem
的P12文件已在瀏覽器中被成功地用於訪問客戶端身份驗證URL。 在拍攝自己之前請幫忙。
編輯: 這裏是證明私鑰和證書相互對應:
[[email protected] ~/curlm]$ openssl x509 -noout -modulus -in clientCert.pem | openssl md5
d7207cf82b771251471672dd54c59927
[[email protected] ~/curlm]$ openssl rsa -noout -modulus -in privateKey.pem | openssl md5
Enter pass phrase for privateKey.pem:
d7207cf82b771251471672dd54c59927
那麼,爲什麼不能工作?
我正面臨與命令行卷曲相同的結果。我將客戶端證書和密鑰連接成一個文件並嘗試如下:curl --cert concatenatedCert.pem --cert-type PEM --cacert cabundle.crt https:// inaveo:8775/DataIntegrationService/WebService/WS_test/ Enter PEM密碼短語: curl:(58)無法設置私鑰文件:'concatenatedCert.pem'類型PEM – 2011-05-25 15:02:40