php使用客户端证书调用soap功能

时间:2015-03-03 06:36:09

标签: php soap ssh certificate handshake

我遇到了调用soap功能的问题。我收到错误“无法连接到主机”。我正在使用“wamp server”,“php version 5.3.13”和“apache version 2.2.22”。

我有.p12格式的客户端证书,本地系统可用的wsdl文件,我使用soapUI-m-snapshot测试了soap调用。它工作正常!但是当我尝试使用php“SoapClient”获得“无法连接到主机”时。 我正在使用以下肥皂选项

$soapclient_options = array();
$soapclient_options['cache_wsdl'] = 'WSDL_CACHE_NONE';
$soapclient_options['local_cert'] = $certificatePath;
$soapclient_options['passphrase'] = $api_certificate_passphrase;
$soapclient_options['trace'] = true;
$soapclient_options['connection_timeout'] = 15;
$soapclient_options['ssl_method'] = 'SOAP_SSL_METHOD_SSLv3';
$soapclient_options['location'] = 'api location';

$client = new SoapClient($wsdl_path, $soapclient_options);
$client->__setLocation($soapclient_options['location']);

我做错了什么事吗? 有人请建议我,并提前多多感谢。

2 个答案:

答案 0 :(得分:1)

PHP Soap客户端只接受pem证书。您可以使用以下方式转换证书:

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

答案 1 :(得分:-1)

使其适用于PHP 5.6版本所需的附加代码。

$soapclient_options['stream_context'] = stream_context_create(
            array(
                'ssl' => array(
                    'verify_peer' => false,
                    'verify_peer_name' => false,
                )
            )
    );