基于 PEM 證書和密鑰檔案,我正在創建兩個 P12 (Pfx) 檔案,帶有和不帶有密碼短語
demo_cert.pem
demo_key.pem
demo_pfx_withoutPassphrase.p12
demo_pfx_withPassphrase.p12
openssl pkcs12 -export -clcerts -in demo_cert.pem -inkey demo_key.pem -out demo_pfx_withoutPassphrase.p12 Enter Export Password: (empty) Verifying - Enter Export Password: (empty) openssl pkcs12 -export -clcerts -in demo_cert.pem -inkey demo_key.pem -out demo_pfx_withPassphrase.p12 Enter Export Password: 12345 Verifying - Enter Export Password: 12345
該檔案用于與服務器通信。
<? php
try{
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-Type: application/json,application/octet-stream"));
curl_setopt($curl, CURLOPT_SSLCERTTYPE, "P12");
curl_setopt($curl, CURLOPT_SSLCERT, getcwd() . 'demo_pfx_withPassphrase.p12');
curl_setopt($curl, CURLOPT_SSLCERTPASSWD, '12345');
//curl_setopt($curl, CURLOPT_SSLKEYPASSWD, '12345');
$resp = curl_exec($curl)
if (curl_errno($curl)) {
$error_msg = curl_error($curl);
echo 'Curl error: ' . curl_error($curl);
echo "<br>";
}
else{
echo curl_getinfo($curl);
echo 'Curl info: ' . curl_getinfo($curl)[0];
echo "<br>";
}
}
catch(Exception $e){
echo $e;
}
?>
我能夠使用demo_pfx_withoutPassphrase.p12(沒有密碼)成功地與服務器建立通信。
但是,盡管在SSLCERTPASSWD選項中提供了密碼,但包含密碼的檔案demo_pfx_withPassphrase.p12是不可能的
這是我得到的以下錯誤。
-------------------- Error response from the REMOTE SSL SERVER --------------------
58
int(58)
Curl error: could not open PKCS12 file 'demo_pfx_withPassphrase.p12'
如何使用包含密碼的 P12 檔案建立與服務器的連接?
任何意見和建議將不勝感激。
uj5u.com熱心網友回復:
終于找到了 P12 (pfx) 證書無法使用 demo_pfx_withPassphrase.p12 (with passphrase) 與服務器建立通信的解決方案
證書檔案沒有讀取權限
提供對證書檔案的讀取權限
chomod r demo_pfx_withPassphrase
這應該這樣做。
最后,為關聯的 P12 檔案提供密碼短語,提供SSLKEYPASSWD或SSLCERTPASSWS。其中任何一個都可以正常作業。
// --- Authorized Certificate with passphrase
curl_setopt($curl, CURLOPT_SSLCERT, getcwd() . 'demo_pfx_withPassphrase.p12');
curl_setopt($curl, CURLOPT_SSLKEYPASSWD, '12345'); // either sslkeypsswd
curl_setopt($curl, CURLOPT_SSLCERTPASSWD, '12345'); // or sslcertpasswd
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/408029.html
標籤:
