Axis SOAP Client und https

Status
Nicht offen für weitere Antworten.

kama

Top Contributor
Hallo,

ich habe mit Java 1.5+ Axis 1.3 einen Client programmiert, der einen Zugriff auf eine Plattform einwandfrei macht (näheres dazu unter http://jagosi.soebes.de).

Leider komme ich derzeit nicht weiter, da ich die Kommunikation per "https" laufen lassen möchte...

Ich habe hier im Forum gesucht, bin auf das hier gestossen, wo aber der Link auf das Kapitel nicht mehr gültig ist...

Sprich die Frage ist: Wie kann ich Axis bei bringen per https zu kommunizieren anstatt per http?

Vielen Dank im Voraus.
MfG
Karl Heinz Marbaise
 

HoaX

Top Contributor
mal nach "axis https" gegooglet? ich hab nicht wirklich ahnung von axis, aber die links schauen vielversprechend aus ...
 
H

hofi

Gast
hängt davon ab ob der server auch ein zertifikat deines clients erwartet.
wenn nein, musst du einfach die folgenden properties vor dem aufruf setzten

System.setProperty("javax.net.ssl.trustStore", "pfad zu meinem truststore");
System.setProperty("javax.net.ssl.trustStorePassword", "mein passwort");

wenn ein zertifikat erwartet wird zusätzlich

System.setProperty("javax.net.ssl.keyStore", "pfad zu meinem keystore");
System.setProperty("javax.net.ssl.keyStorePassword", "passwort für mein keystore");

und natürlich nicht vergessen die ensprechende https - url zu verwenden ;-)

aber wie schon erwähnt gibts dazu auch massenweise infos im netz
 

kama

Top Contributor
Hallo,

zuerst einmal vielen Dank für eure Hilfe....hat mich einen dicken Schritt weiter gebracht:

Weiterhin habe ich nach einigem Lesen dann gefunden, womit ich jedes Zertifakt aktzeptiere (SunFakeTrustSocketFactory) kann (Testweise).

1. Folgende VM Parameter gesetzt, damit das SSL immer akzeptiert wird.

Code:
-Djavax.net.debug=all -Dorg.apache.axis.components.net.SocketFactory=org.apache.axis.components.net.SunFakeTrustSocketFactory

2. Folgenden Code eingefügt:
Code:
System.setProperty("javax.net.ssl.keyStore", "/usr/lib64/jvm/java-1.5.0-sun-1.5.0_update8/jre/lib/security/cacerts");
System.setProperty("javax.net.ssl.keyStorePassword ", "changeit");
So jetzt bekomme ich eine Ganze menge Ausgaben...so weit so gut...
aber dann kommt das folgenden:

Code:
main, READ: SSLv3 Alert, length = 2
main, RECV SSLv3 ALERT:  fatal, bad_record_mac
main, called closeSocket()
main, handling exception: javax.net.ssl.SSLException: Received fatal alert: bad_record_mac
AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
 faultSubcode: 
 faultString: javax.net.ssl.SSLException: Received fatal alert: bad_record_mac
 faultActor: 
 faultNode: 
 faultDetail: 
	{http://xml.apache.org/axis/}stackTrace:javax.net.ssl.SSLException: Received fatal alert: bad_record_mac
	at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:166)
	at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:117)
...


Das Problem scheint mir, dass wenn ich die Seite im Browser Aufrufe kommt zuerst, dass das Zertifikat von einer nicht anerkannten Stelle ist (sprich es ist selbst gebaut; Nichtmal von cacert..).
Dann muss ich das noch für die aktuelle Sitzung akzeptieren.

Kann es daran liegen?

EDIT: -------- ANFANG
Habe jetzt auch nocht
Code:
System.setProperty("javax.net.ssl.trustStore", "/home/kama/.keystore");
System.setProperty("javax.net.ssl.trustStorePassword", "123456");
und das Zertifikat per keytool -import -trustcacerts -file gforge.cer
importiert und mit dem obigen Passwort versehen.

Aber die Exception Meldungen bleiben...
EDIT: ---------- ENDE

EDIT2: Hatte die Konfiguration falsch eingestellt...Behoben..läuft jetzt alles.
Hm...

MfG
Karl Heinz Marbaise
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben