如何发送与PHP的SSL证书的SOAP请求?(how to send SOAP request wi

2019-06-26 13:31发布

我试图发送一个SOAP - 一个DER证书(这意味着该证书不具有专用密钥),但没有成功PHP请求。

$local_cert = FULL_PATH_TO_MY_CERT;

   $client = new SoapClient($wsdl, array(
                'local_cert' => $local_cert,
                'trace' => 1,
                'exceptions' => 1,
                'soap_version' => SOAP_1_1,
                'encoding' => 'ISO-8859-1',
                'compression' => (SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP),
                'location' => 'https://webserviceurl:port/ws/servlet/ws'
            ));

只有我收到此错误:

警告(2):SoapClient的:: SoapClient的()[soapclient.soapclient]:无法设置专用密钥文件`PATHTOMYLOCALCERT” [APP \卖方\ Web服务\ MyWS.php,线206]

警告(2):SoapClient的:: SoapClient的()[soapclient.soapclient]:未能创建SSL手柄[APP \卖方\ Web服务\ MyWS.php,线206]

警告(2):SoapClient的:: SoapClient的()[soapclient.soapclient]:无法使加密[APP \卖方\ Web服务\ MyWS.php,线206]

警告(2):SoapClient的:: SoapClient的(HTTPS:// webserviceurl:端口/ WS / servlet的/ WS WSDL)[soapclient.soapclient]:未能打开流:操作失败[APP \卖方\ Web服务\ MyWS.php,线206]

警告(2):SoapClient的:: SoapClient的()[soapclient.soapclient]:I / O警告:未能加载外部实体 “https://开头webserviceurl:端口/ WS / servlet的/ WS WSDL”[APP \卖方\ Web服务\ MyWS.php,线206]

但我一直在使用功能的file_get_contents($的local_cert)发现了一个小窍门(在php.net); 这些错误都不见了。

但是,来自一个新的错误。

结果:字符串(773) “错误阅读前缀:Action.Execute”

我的意思是......这个错误上面......从正在添加的WebService? 因为它不能符合我的要求身份验证?

谢谢大家。 (感谢您的答案)

Answer 1:

我用我的SOAP调用的SSL证书。

在我的情况,我对我的服务器上给予绝对路径wsdllocal_cert我已经定义的那些在我的课。 请注意,我用我的证书中.pem格式。

public $local_cert = "/var/www/.../webroot/cert.pem";
public $wsdl = "/var/www/.../webroot/my_wsdl.wsdl";

$this->client = new SoapClient($this->wsdl, array(
        "trace"         => 1, 
        "exceptions"    => true, 
        "local_cert"    => $this->local_cert, 
        "uri"           => "urn:xmethods-delayed-quotes",
        "style"         => SOAP_RPC,
        "use"           => SOAP_ENCODED,
        "soap_version"  => SOAP_1_2 ,
        "location"      => $this->location
    )
);

在我的证书有2个部分。 证书和RSA私钥。

(1)-----BEGIN CERTIFICATE-----
MIIFjzCC....
....
-----END CERTIFICATE-----
(2)-----BEGIN RSA PRIVATE KEY-----
MIIEpAI....
....
ww==
-----END RSA PRIVATE KEY----

而最重要的,你应该使用https链接以使SOAP调用。 这是对我工作的罚款。

希望这会帮助你。



文章来源: how to send SOAP request with SSL certificate in PHP?