2010-11-05 20 views
2

Lorsque j'essaie de me connecter à un point de terminaison SSL avec l'extension PHP SOAP sous Windows, j'obtiens le SoapFault "Impossible de se connecter à l'hôte". Le certificat client n'est pas une exigence du service.Comment obtenir une connexion SSL avec l'extension PHP SOAP?

$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); 

Je convertis au format .pem un certificat de serveur auto-signé (.cer) que m'a donné et je passe que comme « cacert ».

Suis capable d'accéder au service parfaitement en utilisant soapUI avec le même wsdl. Question: Ai-je besoin de mettre le certificat de serveur dans un magasin de confiance? J'ai déjà utilisé Internet Explorer pour l'ajouter dans les 'Autorités de certification racines de confiance'. Question: En passant dans 'cacert', est-ce suffisant pour PHP de savoir qu'il peut faire confiance au serveur?

Toute aide ou suggestion serait grandement appréciée.

Répondre

0

Lorsque j'ai exécuté le code sous Apache (en utilisant XAMPP), cela a fonctionné la première fois. Mon problème doit avoir été quelque part dans la configuration de IIS ou PHP.

La définition de cacert était superflue.