3
我在使用私鑰和公鑰連接到服務器時出現此錯誤。cURL錯誤(58):無法設置私鑰文件:'/var/www/work/xml/keys/client.pem'類型PEM
捲曲錯誤(58):無法設置私鑰文件: '/var/www/work/xml/keys/client.pem' 型PEM
我的私鑰同時包含密鑰和證書。它也有密碼。
我當前的代碼是在這裏:
$url="https://example.website.com";
$pemfile = "/var/www/work/xml/keys/server.pem";
$keyfile = "/var/www/work/xml/keys/client.pem";
$requestXml = file_get_contents("net.xml");
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTP_VERSION, 1.1);
curl_setopt($ch, CURLOPT_PORT, 443);
curl_setopt($ch, CURLOPT_PROTOCOLS, CURLPROTO_HTTPS);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_FAILONERROR, 0);
curl_setopt($ch, CURLOPT_SSLCERT, $pemfile);
curl_setopt($ch, CURLOPT_SSLCERTTYPE, 'PEM');
curl_setopt($ch, CURLOPT_SSLCERTPASSWD, 'PASSWORD');
curl_setopt($ch, CURLOPT_SSLKEY, $keyfile);
curl_setopt($ch, CURLOPT_SSLKEYPASSWD, "PASSWORD");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
curl_setopt($ch, CURLOPT_POSTFIELDS, $requestXml);
$data = curl_exec($ch);
$curl_errno = curl_errno($ch);
$curl_error = curl_error($ch);
if ($curl_errno > 0)
{
echo "cURL Error ($curl_errno): $curl_error\n";
}
else
{
header("Content-Type: text/xml");
print_r($data);
}
curl_close($ch);
我認爲你的私鑰文件應該只包含私鑰。證書文件應包含您的公共證書+任何鏈接的證書。 –
我也是這樣做的,但對輸出沒有影響:( –
IDK,但在我看來你可能會使用錯誤的文件..,* server.pem *根CA?好像'$ pemfile'應該是類似於* .../client.pem *和'$ keyfile'應該是* .../client.key *。 – quickshiftin