2
在Windows上嘗試使用PHP SOAP擴展連接到SSL端點時,我收到SoapFault「無法連接到主機」。客戶證書不是服務的要求。如何使用PHP SOAP擴展獲取SSL連接?
$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格式的,我是給和我傳球,在爲「CACERT」自簽名服務器證書(.CER)。
能夠使用soapUI和wsdl完全訪問服務。
問題:我需要將服務器證書放入某個信任存儲區嗎?我確實已經使用Internet Explorer將其添加到「受信任的根證書頒發機構」中。
問題:通過傳遞'cacert',PHP知道它可以信任服務器嗎?
任何幫助或建議將不勝感激。