![]() |
| | Themen-Optionen |
| | Nach oben #1 |
| Neuer Benutzer Registriert seit: 27.02.2008
Beiträge: 2
|
Hallo, ich versuche mit mit einem PHP-SOAP-Client einen HTTPS-Webservice (https://xxxxxxx?wsdl) aufzurufen. Ich schaffs aber nicht. Ich habe verschiedene Varianten versucht: 1. Ganz gewöhnlicher Aufruf: $client = new SoapClient("https://xxxxxxx?wsdl"); -> SoapClient schimpft: " SSL operation failed with code 1. OpenSSL Error messages:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol, Failed to enable crypto, Could not connect to host" 2. Mit Mitgabe des Server-Zertifikates: $client = new SoapClient("https://xxxxxxx?wsdl", array("local_cert"=>"cert_key.pem")); -> SoapClient schimpft: "Unable to set local cert chain file `cert_key.pem`; Check that your cafile/capath settings include details of your certificate and its issuer" Wenn ich probehalber die URL des Webservice (https://xxxxxxx?wsdl) direkt in den Browser eingebe, werde ich gefragt, ob ich das Server-Zertifikat akzeptiere. Wenn ich das bestätige, erhalte ich das Ergebnis. Wie bringe ich meinen SOAP-Client dazu, dieses Server-Zertifikat (automatisch) zu akzeptieren? Ist mit "local_cert" überhaupt das Server-Zertifikat gemeint oder ein anderes? Und in welchem Format? Danke, Oliver |
| | |
| | Nach oben #2 |
| Benjamin Steininger Registriert seit: 02.06.2005 Ort: weiher im tiefsten Odenwald
Beiträge: 1.180
|
Also, das Zertifikat des Servers ist dann, wenn man es im Browser erst akzeptieren muss ein entweder selbst-signiertes Zertifikat oder auch von einer nicht vom Browser unterstützten CA signiertes Zertifikat, damit haben sehr viele Programme und Libs ihre Probleme und blocken das aus Sicherheitsgründen erstmal. In dem Fall musst du dann ein wie du es schon selbst gemacht hast das Zertifikat mitgeben. Vielleicht steht in deinem das falsche drin ? Hier gibts nen Kommentar in dem Beschrieben wurde was er reingepackt hat: http://de.php.net/manual/en/ref.soap.php#71306 Ich denke es wird nicht nur der Key gebraucht sondern anscheinend Cert + Key Da deins ja anscheinend kein Passwort benutzt, den Passwort-Teil halt einfach ignorieren. ansonsten falls deine Datei die du nutzt okay ist, kannst du damit http://public.robo47.net/ssl-zertifikat-info.php schauen ob das Zertifikat von der https-Url vielleicht auch einfach einige Daten nicht enthält. |
| | |
| | Nach oben #3 |
| Neuer Benutzer Registriert seit: 27.02.2008
Beiträge: 2
|
Vielen Dank für die Antwort und die Links. Kann schon sein, dass in dem Zertifikat, das ich mitgebe nicht das richtige steht. Wenn ichs mit dem Link http://public.robo47.net/ssl-zertifikat-info.php verifiziere, siehts allerdings ziemlich vollständig aus. >Hier gibts nen Kommentar in dem Beschrieben wurde was er reingepackt hat: >http://de.php.net/manual/en/ref.soap.php#71306 >Ich denke es wird nicht nur der Key gebraucht sondern anscheinend Cert + Key Ich verstehe nicht so ganz, was da abläuft. Welcher Private Key wird da zusätzlich gebraucht? Mein eigener? Den Private Key vom Server habe ich ja nicht (und wäre meiner Meinung nach auch nicht so sinnvoll). Oder muss ich dem SoapClient mein eigenes Zertifikat und mein Private Key mitgeben? Gibt es eine Möglichkeit, PHP (oder dem Webserver) mitzuteilen, dass es bestimmten Zertifikaten trauen kann? Oder dass es allen Zertifikaten trauen kann? Ich habe in dieser Richtung etwas gefunden (verify_peer, allow_self_signed, http://ch2.php.net/manual/en/transports.php), weiss aber nicht, ob ich das Auswirkungen auf den SOAP-Client hat. |
| | |
| | Nach oben #4 | ||
| Benjamin Steininger Registriert seit: 02.06.2005 Ort: weiher im tiefsten Odenwald
Beiträge: 1.180
| Zitat:
Zitat:
| ||
| | |
| | Nach oben #5 |
| Benutzer Registriert seit: 18.09.2006
Beiträge: 50
|
Hi, Läuft der Webservice auf einem IIS? Ich hatte mal ebenfalls Probleme, eben mit einem Webservice der auf einem IIS lief. Der Grund war, dass der IIS irgendwas im SSL-Handshake falsch machte. Es gab dazu auch einen offenen Bug auf php.net Das Blöde war, dass die PHP-Jungs das Verhalten von PHP nicht korrigieren wollten, da der Fehler ja bei MS lag, oder immer noch liegt. Die Lösung, auch wenn es doof klingt: Während dem Webservice-Call den Error-Level von PHP gesenkt. Gruss, Chrigu |
| | |
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| SSL-Filter für Redirect auf https | WarrenFaith | Allgemeine Java-Programmierung | 0 | 11.09.2007 10:35 |
| kleines feines soap tutorial für php5 | robo47 | Literatur | 5 | 24.01.2006 16:10 |
| WSDL Soap Client | 2rep | Allgemeine Java-Programmierung | 1 | 26.10.2005 20:46 |