Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中使用SSL证书发送SOAP请求?_Php_Web Services_Soap_Ssl_Ssl Certificate - Fatal编程技术网

如何在PHP中使用SSL证书发送SOAP请求?

如何在PHP中使用SSL证书发送SOAP请求?,php,web-services,soap,ssl,ssl-certificate,Php,Web Services,Soap,Ssl,Ssl Certificate,我试图发送一个带有DER证书的SOAP-PHP请求(这意味着证书没有私钥),但没有成功 $local_cert = FULL_PATH_TO_MY_CERT; $client = new SoapClient($wsdl, array( 'local_cert' => $local_cert, 'trace' => 1, 'exceptions' => 1,

我试图发送一个带有DER证书的SOAP-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\Vendor\WebServices\MyWS.php,第206行]

警告(2):SoapClient::SoapClient()[SoapClient.SoapClient]:未能创建SSL句柄[APP\Vendor\WebServices\MyWS.php,第206行]

警告(2):SoapClient::SoapClient()[SoapClient.SoapClient]:未能启用加密[APP\Vendor\WebServices\MyWS.php,第206行]

警告(2):SoapClient::SoapClient(https://webserviceurl:port/ws/servlet/ws?wsdl)[soapclient.soapclient]:无法打开流:操作失败[APP\Vendor\WebServices\MyWS.php,第206行]

警告(2):SoapClient::SoapClient()[SoapClient.SoapClient]:I/O警告:加载外部实体失败“https://webserviceurl:port/ws/servlet/ws?wsdl“[APP\Vendor\WebServices\MyWS.php,第206行]

但是我发现了一个小技巧(在php.net中)使用函数文件&u get\u contents($local\u cert);错误消失了

但一个新的错误来自

结果:字符串(773)“读取前缀时出错:Action.Execute”

我的意思是。。。上面的这个错误。。。是从Web服务提交的吗?因为它无法验证我的请求


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

我在soap调用中使用SSL证书

在我的例子中,我为
wsdl
local\u 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
    )
);
在我的证书中有两个部分。证书和RSA私钥

(1)-----BEGIN CERTIFICATE-----
MIIFjzCC....
....
-----END CERTIFICATE-----
(2)-----BEGIN RSA PRIVATE KEY-----
MIIEpAI....
....
ww==
-----END RSA PRIVATE KEY----
最重要的是,您应该使用
https
链接进行soap调用。这对我来说很好

希望这能对你有所帮助。

这里有类似的内容:“uri”=>“urn:xmethods delayed quotes”这真的很有必要吗??我还不能接通。