2017-09-06 9 views
1

httpsでリモート(SOAP)Webサーバーを(PHPスクリプト経由で)呼び出しようとしましたが、パスワード保護された証明書が必要です。 私が電話をかけるためnuSoapを使用していますが、私はいつも次のようなエラーにsoap webserverにアクセスしようとしたときにcURLエラーが発生しました

nusoap_clientを取得:WSDLエラーを得た:https://ws-t.pitre.tn.it/wcfrouting/wsdl/Documents.wsdl入門 - HTTP ERROR:cURLのERROR:58:クライアント証明書を使用することができない(何もキーが見つかりませんでしたまたは間違ったパスフレーズ?)私は問題なくwisdlにアクセスすることができますブラウザで

require_once("../nusoap/lib/nusoap.php"); 

$pitre_wsdl = "https://ws-t.pitre.tn.it/wcfrouting/wsdl/Documents.wsdl"; 
$client = new nusoap_client($pitre_wsdl, "wsdl"); 
$err = $client->getError(); 

if ($err) { 
    print("Error"); 
    exit(); 
} 

$client->setCredentials(
    "", 
    "", 
    "certificate", 
    array (
     "sslcertfile" => "../pitre/cert.p12", 
     "sslkeyfile" => "../pitre/cert.p12", 
     "certpassword" => "mypass", 
     "verifypeer" => FALSE, 
     "verifyhost" => FALSE 
    ) 
); 

$result = $client->call(
    "GetTemplatesDocuments", 
    array (
     "CodeAdm" => "myCode" 
    ) 
); 

。私は同じ結果を得た

cURL with SSL certificates fails: error 58 unable to set private key file

:私は、次のような答えを試してみました。

何か不足していますか?

答えて

1

私は私の解決策には、次のされ、答えを見つけました:

私はそれがnu_soapで動作させることができなかったので、私はに切り替えたのSoapClient

私は変換しなければならなかったすべての拳opensslの

openssl pkcs12 -in certificato.p12 -out certificato.pem -clcerts 

を使用してPEM形式に私のP12証明書は、その後、私はここにhttps://curl.haxx.se/docs/caextract.html

0からCA証明書をダウンロード

ここに私の作業コードは、私は、これは同じ問題

が直面している人を助けることを願っています

$params->a    = "a"; 
$params->b    = "b"; 
$params->c    = "c"; 
$params->d    = "d"; 
$params->e    = "e"; 

$context = stream_context_create(array (
    "ssl" => array (
     "verify_peer"  => false, 
     "verify_peer_name" => true, 
     "local_cert"  => getcwd()."\certificato.pem", //complete path is mandatory 
     "passphrase"  => "mypassphrase", 
     "allow_self_signed" => true 
    ), 
    "https" => array (
     "curl_verify_ssl_peer" => false, 
     "curl_verify_ssl_host" => false 
    ) 
)); 

$pitre_client = new SoapClient($pitre_wsdl, array (
    "trace"    => 1, 
    "exceptions"  => true, 
    "location"   => "https://ws-t.pitre.tn.it/wcfrouting/servicerouter.svc", 
    "cafile"   => getcwd()."\cacert.pem", //complete path is mandatory 
    "stream_context" => $context 
)); 

// the call 
$response = $pitre_client->GetTemplatesDocuments(
    array (
     'request' => $params //request key can be different 
    ) 
); 

関連する問題