首页 文章

如何使用PHP SOAP扩展获得SSL连接?

提问于
浏览
2

当尝试在Windows上使用PHP SOAP扩展连接到SSL endpoints 时,我得到SoapFault“无法连接到主机” . 客户端证书不是服务的要求 .

$sslOptions = array(
    'ssl' => array(
        'cafile' => "c:/inetpub/wwwroot/eServices/Server_DSA_Public_Certificate.pem",
        'allow_self_signed' => true,
        'verify_peer' => false,
     ),
);      
$sslContext = stream_context_create($sslOptions);

$clientArguments = array(
    'stream_context' => $sslContext,
    'trace' => true,
    'exceptions' => true,           
    'encoding' => 'UTF-8',
    'soap_version' => SOAP_1_1,
);

$oClient = new WSSoapClient("c:/inetpub/wwwroot/eServices/svc.wsdl", $clientArguments);  
// WSSoapClient extends SoapClient to add a WS-Security UsernameToken header    

$oClient->__setUsernameToken("myusername", "mypassword");   
return $oClient->__soapCall($operation, $request);

我将.pem格式转换为我给出的自签名服务器证书(.cer),并将其作为'cacert'传递 .

能够使用具有相同wsdl的soapUI完美地访问服务 .

问题:我是否需要将服务器证书放入某个信任存储区?我已经使用Internet Explorer将其添加到“受信任的根证书颁发机构”中 .

问题:通过传递'cacert',PHP是否足以知道它可以信任服务器?

任何帮助或建议将不胜感激 .

1 回答

  • 0

    当我在Apache(使用XAMPP)下运行代码时,它第一次工作 . 我的问题一定是在IIS或PHP的配置中的某个地方 .

    设置cacert是多余的 .

相关问题