Hallo Community,
ich sitze hier vor einem Problem, welches mich nun schon nahezu eine Woche beschäftigt. Unzählige Google-Suchen führten nicht zu dem gewünschten Ergebnis.
Ich muss vorweg erwähnen, dass es sich bei der Schnittstelle und der Zusammenarbeit mit dem Kunden um ein streng vertrauliches Projekt handelt, für das ich auch unterschreiben musste, ich kann daher keine Links oder internen Infos raus geben, bin aber bemüht alle relevanten Infos zu liefern.
Folgende Ausgangsstellung:
- Kunde stellt eine SOAP-Schnittstelle zur Verfügung, mit der Kundendaten abgefragt werden können.
Auszug aus der Schnittstellenbeschreibung:
Nun habe ich auf unserem Server ein CSR erstellt und an den Kunden geschickt. Zurück kam mein Signaturzertifikat und eine CA-Chain. Datei-Endungen sind .cer.
Ich habe über den PHP-Soap-Client und mithilfe von CURL versucht auf die Schnittstelle zu zu greifen, jedoch ohne Erfolg.
Da bekomme ich
Wenn ich local_cert auskommentiere bekomme ich
Kann mir jemand Hilfestellung geben, das Problem zu lösen? Ich bin ziemlich ratlos. Ich weiß leider auch nicht so recht wo ich ansetzen muss, wo die .cer Dateien abgespeichert werden müssen und so weiter. Bin über jede Hilfe dankbar, da mich der Support des Kunden mit den Worten "wir haben nur die Schnittstelle gebaut, den Client müssen Sie selber bauen" abgespeist hat
lg
Maddin
ich sitze hier vor einem Problem, welches mich nun schon nahezu eine Woche beschäftigt. Unzählige Google-Suchen führten nicht zu dem gewünschten Ergebnis.
Ich muss vorweg erwähnen, dass es sich bei der Schnittstelle und der Zusammenarbeit mit dem Kunden um ein streng vertrauliches Projekt handelt, für das ich auch unterschreiben musste, ich kann daher keine Links oder internen Infos raus geben, bin aber bemüht alle relevanten Infos zu liefern.
Folgende Ausgangsstellung:
- Kunde stellt eine SOAP-Schnittstelle zur Verfügung, mit der Kundendaten abgefragt werden können.
Auszug aus der Schnittstellenbeschreibung:
- Der Datentransport erfolgt über XML und SOAP, die Verbindungen werden dabei als verschlüsselte HTTP-Verbindungen (HTTPS) ausgeführt.
- Es wird die XML-Version 1.0 vorausgesetzt. Als Zeichensatz dient UTF8. Sonderzeichen
sind maskiert zu übertragen - Auf Seiten des Kunden werden die Kompatibilität der WSDL-Beschreibungen und der empfangenen SOAP-Messages gegen WS-I Basic Profile 1.1 Compatibility Test Kit (http://www.ws-
i.org/) getestet. - Die Validierung der empfangenen Datenstrukturen gegen die spezifizierten XML-Schema
wird auf Seiten des Kunden vom Webservice Security Proxy IBM Datapower XS40 vorgenommen. - Web Service Nachrichten müssen mit einer Signatur gemäß dem Standard "Web Services
Security – X.509 Certificate Token Profile" (http://docs.oasis-open.org/wss/v1.1/wss-v1.1-spec-os-
x509TokenProfile.pdf) versehen sein. Dabei ist im Sinne maximaler Interoperabilität der Standard Webservice Security 1.0 einzuhalten. Es ist zwingend erforderlich, dass ein signierter Timestamp im
SOAP-Header mit übertragen wird. Dies geschieht über die Attribute <wsu:created> und
<wsu:expires>. Der Expire-Timestamp darf dabei nicht mehr als 300 Sekunden in der Zukunft vom
Created-Timestamp liegen. Der SOAP-Body ist ebenfalls zu signieren. Der Request muss das verwen-
dete digitale Zertifikat dem Standard folgend beinhalten. Unterstützt werden alle Zertifikate, die von
einer offiziellen CA oder vom Kundeneigenen CA signiert sind. Signaturen sind mit dem
Algorithmus rsa-sha1 zu erstellen.
Zertifikate für SSL (HTTPS), WS-S Signaturen und gegebenenfalls WS-S Encryption müssen auf unter-
schiedlichen Key-Pairs basieren und sind daher implizit unterschiedlich.
Ich habe über den PHP-Soap-Client und mithilfe von CURL versucht auf die Schnittstelle zu zu greifen, jedoch ohne Erfolg.
Code:
try { $wsdl = "definition.wsdl" $connection_params = array( "location" => "https://kunde.de/schnittstelle/service/", "trace" => true, 'local_cert' => "client.cer"); $soap_client = new SoapClient($wsdl, $connection_params); $params = array( "security" => array( "authentication" => array( 'login' => 'username', 'password' => 'password' ) ) ); $result = $soap_client->searchCustomer($params); } catch (SoapFault $exception) { echo $exception->getMessage(); }
Code:
["faultstring"]=> string(25) "Could not connect to host" ["faultcode"]=> string(4) "HTTP"
Code:
["faultstring"]=> string(28) "Internal Error (from client)" ["faultcode"]=> string(10) "env:Client"
lg
Maddin
Kommentar