2010-01-21 3 views
0

비누를 사용하여 webservice를 호출하려고하지만 다음 오류가 계속 발생합니다. "경고 : SoapClient :: SoapClient() : Unable to 개인 키 파일을 설정하십시오 ".PHP SoapClient 경고 : SoapClient :: SoapClient() : 비공개 키 파일을 설정할 수 없습니다.

내가 사용하고있는 .cer 파일에 공개 키와 비공개 키만 포함되어 있기 때문에 오류가 있다고 가정합니다. 그러나 나는 .cer 파일을 사용하는 또 다른 방법이 확실하지 않습니다. .cer 파일을 사용하지 않으면 잘 연결할 수 있으며 __getFunctions() 메서드를 사용하면 전화를 걸고 결과를받을 수 있습니다. 그러나, 나는 다른 방법을 사용하려고 할 때 나는 권한이 필요하고 그 문제가 발생합니다. 아래는 내가 사용하려고하는 간단한 코드입니다. 자세한 정보가 필요한 경우 알려 주시기 바랍니다.

ini_set('display_errors',1); 
error_reporting(E_ALL); 

ini_set('soap.wsdl_cache_enabled', 0); 
$username = 'user'; 
$password = 'pass'; 

$ns = 'GatewayEDI.WebServices'; 
$auth = array(); 
$auth['User'] = new SOAPVar($username, XSD_STRING, null, null, null, $ns); 
$auth['Password'] = new SOAPVar($password, XSD_STRING, null, null, null, $ns); 
$headerBody = new SOAPVar($auth, SOAP_ENC_OBJECT); 
$header = new SOAPHeader($ns, 'AuthSOAPHeader', $headerBody); 

$client=new SoapClient('https://url/Service.asmx?WSDL', 
        array(
        'local_cert' => 'file.cer' 
        )); 

$client->__setSOAPHeaders(array($header)); 

$param = array(
    'X12Input'=>"testing", 
    "GediPayerID"=>"52", 
    "ResponseDataType"=>"Xml" 
); 

//this leads to private key error 
echo $result = $client->DoInquiryByX12Data($param,$header); 

답변

2

나는 당신의 .PEM/.cer 파일이 귀하의 개인 키가한다고 생각 : 4 암호화 : 개인 키의 첫 번째 줄과 유사한 지침 "PROC 형이있는 경우

-----BEGIN RSA PRIVATE KEY----- 
# base64 encoded key 
-----END RSA PRIVATE KEY----- 
-----BEGIN CERTIFICATE----- 
# base64 encoded cert 
-----END CERTIFICATE----- 

"SoapClient()을 구성 할 때"암호 문구 "옵션을 포함시켜야합니다.

openssl rsa -in /path/to/private.key -out /path/to/private.key 

"private.key는"이 상황에서 단지 개인 키를해야한다 (: 또한 OpenSSL을 가진 암호 요구 사항을 제거 할 수 있습니다, 내 구문은 그래서 당신은 당신이 그것을 시도하는 경우 한 번 확인 할 수 있습니다 약간 녹슨

+0

이 인증서의 개인 키가 없습니다. 개인 키를 만들어 인증서에 추가 할 수 있습니까? – IHateSoap

+0

아니요. 암호를 제거한 후에 .cer/.pem 파일에 추가 할 수 있습니다. , 개인 키가 일치해야합니다. 당신이 처음에 당신에게 인증서를 준 사람으로부터 얻을 수 없습니까? – Owen

+0

그들은 개인 키가 없다고 주장하고 있지만, 개인 키가 없으면 어떻게 작동하는지 보지 못합니다 인증서를 제거하려고하면 전혀 사용하지 않으면 인증 오류가 발생합니다. 개인 키없이 작동 할 수있는 방법을 모른다는 말입니까? – IHateSoap

관련 문제