Spring-WS-client mit Zertifikat
Ich bin neu in web-services und muss ich schreiben, einfache spring-ws-client, der comunicate mit dem server über SSL. Die situation ist:
- Mein client funktioniert auch mit http auf meinem localhost ws-server auf meinem Glassfish (problem ist remote-server und https)
- Remote-server korrekt funktioniert. Ich arbeiten nur mit Daten, die er sendet mir
- Ich habe server die https-Adresse
- Ich habe client-Zertifikat vom server-Anbieter
Dachte ich, es werde einfach zu finden sein eine einfache Anleitung für eine solche Aufgabe, aber ich habe ein problem, etwas zu finden, wie, dass. Ist es wirklich so ungewöhnlich, oder ist es problem in mir? Kennst du ein paar gute tutorial/Buch zum erstellen dieser? Es könnte sein, einige einfache Schritte, die ich wirklich brauche einfach nur eine Verbindung mit dem server und abrufen von Daten aus es.
Ich bin mit:
- STS 3.0.0.M3
- JDK 1.7
- - Client als Java-Applikation (später wohl als dynamische web-app)
- Generierten Klassen aus dem server-wsdl (JAXB)
- Ich folowed dieses tutorial für die Erstellung meiner Kunden http://justcompiled.blogspot.sk/2010/11/web-service-client-with-spring-ws.html
EDIT: Mehr details zum Thema
Änderte ich den client aus dem tutorial erwähnte ich die Arbeit mit meinen webservice erstellt habe ich auf localhost (Kein SSL). Es funktionierte gut, - Anforderungen und-Antworten war richtig. Dann wechselte ich die Arbeit mit remote-server. Generiert ich neue Klassen und neue Adresse des server in der Datei ApplicationContext. Der erste Fehler war die fehlende commons-logging-Bibliotheken. Ich habe es. Dann neue Fehler appeard (kurze version-Fehler):
org.springframework.ws.client.WebServiceIOException: I/O error: java.security.cert.CertificateException: No name matching certificatename found; nested exception is javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No name matching certificatename found
Habe ich meine Bescheinigung zu cacerts in meinem jdk mit keytool. Es hat nicht geholfen. Ich habe etwas gefunden über die Fehler und versucht, hinzufügen von code aus dem letzten Beitrag hier:
http://www.coderanch.com/t/557677/sockets/java/CertificateException-No-name-matching-hostname
Sollte es nicht sehr sicher, aber ich versuchte es. Die neuen Fehler war:
Exception in thread "main" org.springframework.ws.client.WebServiceTransportException: Internal Server Error [500]
at org.springframework.ws.client.core.WebServiceTemplate.handleError(WebServiceTemplate.java:663)
at org.springframework.ws.client.core.WebServiceTemplate.doSendAndReceive(WebServiceTemplate.java:587)
at org.springframework.ws.client.core.WebServiceTemplate.sendAndReceive(WebServiceTemplate.java:537)
at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:384)
at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:378)
...
Verwenden Sie ein selbst signiertes Zertifikat oder hast du es von einer Zertifizierungsstelle?
Das Zertifikat ist selbst signiert. Eigentlich sind wir jetzt suchen Sie genau auf Zertifikat von unserem provider und das Zertifikat gespeichert hat verschiedene IP-vom-Server-IP. Eigentlich haben wir 2 remote-Server (test-server und offizielle), und Sie Gaben uns wahrscheinlich falsch-Zertifikat für test. Ich werde versuchen, eine Verbindung zum richtigen-und post-Ergebnis
ok, ich versuchte es, und es gibt neue Fehler: Exception in thread "main" org.springframework.ws.client.WebServiceTransportException: Bad Request [400]. Ist es problem in meinem Request-Nachricht?
Hi versuchen Sie das senden von SOAP-Nachricht ist größer als 150 kB?
InformationsquelleAutor Miroslav | 2012-09-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich das problem gelöst. Ich habe endlich Zugriff auf unsere WS-server, so konnte ich überprüfen Sie die Protokolle. Es zeigte sich, dass das Zertifikat nicht problem. Die Nachricht eingetroffen, um die server richtig. Das problem begann, als der server versuchte zu analysieren, meine Nachricht fehlgeschlagen ist und der server dann wieder 500-Fehler mit Fehlermeldung im log:
Mich und meine Kollegen entdeckt, dass der server läuft auf Java 6, aber unsere Anwendung ist auf Java 7, versuchten wir, unsere Anwendung auf Java 7 privat server und alles klappte gut. Nach einiger Suche entdeckten wir, dass wahrscheinlich der Parser xalan.jar und xerces.jar sind das problem, Sie zu aktualisieren, konnte auch beheben. Wie auch immer, mit derselben Java-version sollte die Lösung sein.
Leider kann ich nicht nach unten gehen, um Java 6 und server nicht gehen bis zu Java 7 (details sind nicht wichtig). So habe ich ganz neue client mit Axis und um ehrlich zu sein, ich bin sehr glücklich, dass ich diese Entscheidung treffen. Es hat seit dem start und es ist viel einfacher zu verwenden. Wenn jemand interessiert ist, hier ist das tutorial habe ich folowed (es gibt auch, wie Sie mit generierten code in die end, die ich brauchte)
http://px.pats.no/px/Eclipse_tutorial.html
InformationsquelleAutor Miroslav
Dieses problem bezieht sich auf den dns-Namen, die Sie nicht in Ihrem Zertifikat um dieses problem zu lösen versuchen, die Erneuerung Ihres Zertifikats :
oder einfach nur versuchen, das hinzufügen einer statischen Methode, die Ihnen sagen wird java nicht um die Domäne zu überprüfen :
}
InformationsquelleAutor user3392362