PHP SoapClient Uyarı: SoapClient :: SoapClient (): Özel anahtar dosyası kurulamıyor

1 Cevap php

Ben bir webcoder aramak için sabun kullanmaya çalışıyorum ama aşağıdaki hata almaya devam "Warning: SoapClient :: SoapClient (): Özel anahtar dosyası kurulamıyor".

Ben hata nedeniyle ben kullanıyorum. Cer dosyası sadece ortak anahtar ve özel anahtarı içeren gerçeği geldiğini varsayarak yaşıyorum. Ama ben. Cer dosyasını kullanmak için başka bir yolu emin değilim. I. Cer dosyasını kullanın yoksa ben sadece iyi bağlanabilir ve i __getFunctions() yöntemini kullanırken ben sonuçlarını aramak ve almak mümkün. I diğer yöntemleri kullanmaya çalıştığınızda Ancak, ben yetkili ve bu soruna yol açar gerekir. Aşağıda i kullanmaya çalışıyorum basit bir koddur. Daha fazla bilgi gerekli ise, lütfen bana bildirin.

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);

1 Cevap

Ben .pem / .cer dosyası içinde özel anahtarı olması gerektiğine inanıyoruz:

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

Özel anahtarın ilk satırı benzer bir direktif varsa "Proc-Type: 4, ŞİFRELİ" için SoapClient() inşa zaman "şifre" seçeneğini eklemeniz gerekir. Ayrıca OpenSSL'de parolası gereksinimi şerit olabilir, benim sözdizimi böylece bunu çalışırsanız kontrol çift isteyebilirsiniz biraz Paslı:

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

"Private.key" Bu bağlamda sadece özel anahtar (parola kaldırıldı sonra .cer / .pem dosyasına ekleyebilirsiniz olmalıdır.