3

秘密鍵と公開鍵を使用してサーバーに接続しているときに、このエラーが発生します。

cURL エラー (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);
4

1 に答える 1

0

$keyfileスクリプトがファイルに正しくアクセスできないようです。スクリプト (またはプロセス) が正しい権限を持っていることを再確認するか、ファイルのアクセス許可を変更することをお勧めします。

于 2013-02-05T15:31:10.533 に答える