Création d'une requête SOAP PHP avec un certificat

Je cherche à créer un PHP SAVON de connexion à un .NET Web Service qui a un certificat auto-signé pour verrouiller le service de communication via le protocole HTTPS. Je continue de recevoir des erreurs et je ne suis pas sûr si elle a quelque chose à voir avec la façon dont j'ai créer le certificat, mon Apache/PHP, la façon dont j'ai essayé d'établir la demande SOAP ou quelque chose d'autre. Si quelqu'un a des pointeurs ils seront grandement appréciés. Merci à l'avance.

De Génération De Certificat

C'est ainsi que je suis entrain de créer le certificat.

  1. Créer la confiance de la racine de la clé privée:

    genrsa-out ca_authority_prv.pem 2048

  2. Créer de l'autorité racine de confiance cert:

    req-new-key ca_authority_prv.pem -x509-out ca_authority_cert.pem

  3. Faire le cert de l'autorité de confiance:

    x509-in ca_authority_cert.pem -out ca_authority_trust.pem -trustout

  4. Sortie d'OpenSSL et de créer une série de fichiers:

    echo 1000 > ca_authority.srl

  5. Créer la clé privée du client:

    genrsa-out Client_prv.pem 2048

  6. Créer à la demande du client:

    req-new-key Client_prv.pem -out Client_req.pem

  7. Signer la demande du client avec le CA:

    x509 -req -CA ca_authority_trust.pem -CAserial ca_authority.srl -CAkey ca_authority_prv.pem dans Client_req.pem -out Client_cert.pem

  8. Faire le pfx pour le client cert

    pkcs12-export -dans Client_cert.pem -inkey Client_prv.pem -out Client_cert.pfx

Installation IIS

Une fois ce certificat est créé j'ai suivi les mêmes étapes que pour un certificat de serveur et:

  1. Ajouter l'autorité de certification racine de confiance à la Machine Magasin Racine de Confiance
  2. Ajouter le certificat de serveur pour le magasin de l'ordinateur
  3. Installation de IIS pour utiliser le certificat de serveur et de client certificats

PHP Requête SOAP

C'est le code que j'utilise établir le PHP requête SOAP (ci-dessous, le message d'erreur):

$wsdl = "https://localhost/MyService/MyService.asmx";
$local_cert = "C:\\Certs\client_cert.pem";
$passphrase = "openSaysMe";

    $soapClient = new SoapClient($wsdl, array('local_cert'=>  $local_cert,'passphrase'=>$passphrase));
    $theResponse = $soapClient->test();

ERREUR

Warning: SoapClient::SoapClient() [soapclient.soapclient]: Unable to set private key file `C:\Certs\client_cert.pem' in C:\Program Files\Apache Group\Apache2\htdocs\soapWithAuth.php on line 53

Warning: SoapClient::SoapClient() [soapclient.soapclient]: failed to create an SSL handle in C:\Program Files\Apache Group\Apache2\htdocs\soapWithAuth.php on line 53

Warning: SoapClient::SoapClient() [soapclient.soapclient]: Failed to enable crypto in C:\Program Files\Apache Group\Apache2\htdocs\soapWithAuth.php on line 53

Warning: SoapClient::SoapClient(https://localhost/MyService/MyService.asmx) [soapclient.soapclient]: failed to open stream: operation failed in C:\Program Files\Apache Group\Apache2\htdocs\soapWithAuth.php on line 53

Warning: SoapClient::SoapClient() [soapclient.soapclient]: I/O warning : failed to load external entity "https://localhost/MyService/MyService.asmx" in C:\Program Files\Apache Group\Apache2\htdocs\soapWithAuth.php on line 53
Error: SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://localhost/MyService/MyService.asmx'

JOURNAL DES ERREURS

PHP Warning:  SoapClient::SoapClient() [<a href='soapclient.soapclient'>soapclient.soapclient</a>]: failed to create an SSL handle in C:\\Program Files\\Apache Group\\Apache2\\htdocs\\soapWithAuth.php on line 54

source d'informationauteur likestoski