Servus Leute!
Ich stehe vor einem Problem, das mir unlösbar erscheint.
Ich muss Daten von einem Webservice abrufen, der diese via HTTPS- und SOAP-Schnittstelle anbietet.
Mit der SOAP-Schnittstelle gibt es derzeit wohl Probleme auf Seiten des Anbieters, sodass ich auf HTTPS zurückgreifen muss.
Mein Problem: Der Webservice (Anbieter-Server) benötigt eine zertifikat-basierte Klienten-Authentication meinerseits. Hierzu wurde mir vom Anbieter ein Zertifikat im p12-Format zugestellt.
Diese habe ich in das pem-Format formatiert, was unter Verwendung von "NuSoap" nicht funktionierte.
Nach etwas Recherche habe ich dann den folgenden Artikel (aus 2005
) gefunden: http://curl.haxx.se/mail/archive-2005-09/0138.html
Ich habe also die Zertifikate und den Key aus der p12-Datei separat extrahiert:
Unter Verwendung von "NuSoap" hat es funktioniert:
hiermit kann ich eine Verbindung aufbauen (SOAP).
Da ich nun aber eine "normale" HTTPS-Verbindung zu XML-Dateien auf dem Anbieter-Server benötige (fopen,file_get_contents,simplexml_load_file), weiß ich nicht, was ich tun muss, um mich "auszuweisen".
Die Fehler-Meldungen sind logischer Weise immer die gleichen:
Kann mir bitte jemand helfen?
Ich stehe vor einem Problem, das mir unlösbar erscheint.
Ich muss Daten von einem Webservice abrufen, der diese via HTTPS- und SOAP-Schnittstelle anbietet.
Mit der SOAP-Schnittstelle gibt es derzeit wohl Probleme auf Seiten des Anbieters, sodass ich auf HTTPS zurückgreifen muss.
Mein Problem: Der Webservice (Anbieter-Server) benötigt eine zertifikat-basierte Klienten-Authentication meinerseits. Hierzu wurde mir vom Anbieter ein Zertifikat im p12-Format zugestellt.
Diese habe ich in das pem-Format formatiert, was unter Verwendung von "NuSoap" nicht funktionierte.
Nach etwas Recherche habe ich dann den folgenden Artikel (aus 2005

Ich habe also die Zertifikate und den Key aus der p12-Datei separat extrahiert:
Code:
openssl pkcs12 -in MULTICERT.p12 -out ca.pem -cacerts -nokeys openssl pkcs12 -in MULTICERT.p12 -out client.pem -clcerts -nokeys openssl pkcs12 -in MULTICERT.p12 -out key.pem -nocerts
PHP-Code:
$client-cert = 'pfad/client.pem';
$private-key = 'pfad/key.pem';
$ca-cert = 'pfad/ca.pem';
$passphrase = '*****';
$client = new nusoap_client("https://foo.bar",array('soap_version' => SOAP_1_1));
$client->authtype = 'certificate';
$client->decode_utf8 = 0;
$client->soap_defencoding = 'UTF-8';
$client->certRequest['passphrase'] = $passphrase;
$client->certRequest['sslcertfile'] = $client-cert;
$client->certRequest['sslkeyfile'] = $private-key;
$client->certRequest['cainfofile'] = $ca-cert;
Da ich nun aber eine "normale" HTTPS-Verbindung zu XML-Dateien auf dem Anbieter-Server benötige (fopen,file_get_contents,simplexml_load_file), weiß ich nicht, was ich tun muss, um mich "auszuweisen".
Die Fehler-Meldungen sind logischer Weise immer die gleichen:
Code:
simplexml_load_file(): SSL operation failed with code 1. OpenSSL Error messages: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure
Code:
file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure
Code:
fopen(): SSL operation failed with code 1. OpenSSL Error messages: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure
Kommentar