Witam wszystkich
Próbuję nawiązać komunikację z serverem SOAP, który jest dostępny poprzez SSL. Gdy dokonuję łączenia tak, jak poniżej:

  1. $url = "https://domena/ws.asmx?wsdl";
  2. $client = new SoapClient( $url,
  3. array( "local_cert" =>'mycert.pem',
  4. "passphrase"=>'haslo'
  5. )
  6. );


otrzymuję następujący błąd:
  1. Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from...


Czyli tak, jakby nie była zwracana zawartość wsdl z podanej lokalizacji.

Próbowałem połączyć się z tą lokalizacją za pomocą CURLa:

  1. $request='https://domena/ws.asmx?wsdl';
  2.  
  3. // Initialize the session
  4. $session = curl_init($request);
  5.  
  6. curl_setopt($session, CURLOPT_VERBOSE, '1');
  7. curl_setopt($session, CURLOPT_SSL_VERIFYHOST, '1');
  8. curl_setopt($session, CURLOPT_SSL_VERIFYPEER, '1');
  9. curl_setopt($session, CURLOPT_CAINFO, 'ca.crt');
  10. curl_setopt($session, CURLOPT_SSLCERT, 'mycert.pem');
  11. curl_setopt($session, CURLOPT_SSLCERTPASSWD, 'haslo');


i wówczas połączenie następuje. Otrzymałem jednak plik z kluczem, aby CURL akceptował certyfikaty podpisane przez CA (taką informację otrzymałem od osób zajmujących się webservice).

Podejrzewam, że błędy występujące podczas użycia klasy SoapClient mogą być związane właśnie z brakiem akceptacji mojego klucza (mycert.pem).

Czy ktoś z Was spotkał się z takim problemem lub wie, jak można temu zaradzić?