Client SOAP via HTTPS avec des certificats SSL sur les deux côtés

Je dois développer un Client de SAVON, et le fournisseur de m'envoyer ce spécifications:

  • Seront transmisent à l'aide de HTTPS via la propriété intellectuelle, et sera distribué sous forme de documents XML qui s'adaptent à différentes defnitions de schéma XML.
  • La Communication est synchrone, le tiers doit attendre la réponse.
  • Chaque demande et la réponse sera signé.

Je suis en utilisant la classe soapClient de PHP, et tout fonctionne bien, sauf quand j'essaie d'utiliser ma clé privée pour établir la communication avec le serveur:

Code: WSDL | Message: SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://remoteserver/CustomerManagementService?wsdl' : failed to load external entity "https://remoteserver/CustomerManagementService?wsdl

Puis j'ai essayé de créer un .fichier pem, il contient la clé privée concaténé avec mon certificat, comme je l'ai lu dans: comment envoyer une requête SOAP avec certificat SSL dans le PHP?

Mais il renvoie toujours une erreur:

SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://remoteserver:80/CustomerManager/proxy/CustomerManagementService?WSDL%2FGWTCommonResources%2Fwsdl%2FGWTCommonMessages' : failed to load external entity "http://remoteserver:80/CustomerManager/proxy/CustomerManagementService?WSDL%2FGWTCommonResources%2Fwsdl%2FGWTCommonMessages

Je me demande si il existe un moyen d'obtenir exactement les données brutes qui est envoyé par la classe soapClient de PHP. Et où je dois définir le certificat du fournisseur.

J'ai déjà essayé avec "$client->__getLastRequest()", mais je suis un NUL. C'est mon code:

$client = new anotherSoapClient($service, array(
    'local_cert'    => $pem, 
    'style'         => SOAP_RPC,
    'use'           => SOAP_ENCODED,
    'soap_version'  => SOAP_1_2,
    'authentication'=> SOAP_AUTHENTICATION_DIGEST,
    'ssl'           => array(
        'ciphers'=> "SHA1",
        'verify_peer' => false, 
        'allow_self_signed' => true
    ),
    'https' => array(
        'curl_verify_ssl_peer'  => false,
        'curl_verify_ssl_host'  => false
    ),
    'cache_wsdl'    => WSDL_CACHE_NONE,
    'cache_ttl'     => 86400,
    'trace'         => true,
    'exceptions'    => true,
));

//Test connection
echo BR.'Functions: <pre>';var_dump($client->__getFunctions());echo '</pre>';

$XMLrequest = $client->prepareRequest($email);
$response = $client->__anotherRequest('getCustomerInfo', $XMLrequest);

echo "REQUEST:\n" . $client->__getLastRequest() . "\n";

En passant, je suis en utilisant PHP 5.4.9 sur mon ordinateur local et le serveur PHP 5.3.10 et anotherSoapClient est une classe qui a l'extension de PHP classe soapClient: PHP soapClient envoyer XML personnalisé

InformationsquelleAutor Javier | 2013-10-10