# xml via SSL über Proxy



## Robt (23. Apr 2008)

Hallo zusammen,

ich renn von einer Sackgasse in die Nächste, obwohl die Lösung so verdammt Nahe liegen müsste. Ich habe mich schon fast zu Tode gegoogelt, aber irgendwie will es nicht funktionieren. 
Ziel ist es einen OutputStream per POST-Aufruf über eine SSL Verbindung zu schicken und eine Antwort in Form eines InputStream zu erhalten. Um ins Internet zu kommen, muss ich über einen Proxy gehen.
Die "andere" Seite hat kein eigenes Zertifikat, so wurde mir gesagt.

Ich möchte nicht unbedingt Code haben, sondern einfach die Schritte wie ich daran gehen muss. Quasi zu erst muss ich mich um den keystore kümmern .. etc.... Bei keystores auch gerne etwas ausführlicher   :? 

Über eine ungesicherte Verbindung habe ich das Ganze schon realisiert, da habe ich eine HttpURLConnection verwendet und es funktioniert einwandfrei. Aber das SSL raubt mir den letzten Versand.

Vielen Dank für eure hoffentlich zielweisenden Beiträge.


Viele Grüße
Robt


----------



## Guest (24. Apr 2008)

Hi,

zu dem Zertifikat:
Der Empfänger MUSS ein Zertifikat haben (Server mit dem du kommunizierst).
Dies kann auch selbst-erstellt und selbst-unterschrieben sein - zum Test reicht das völlig.
Welche Archtiektur hat den der Server  (Tomcat ?)

Beim Tomcat ein Zertifikat einzurichten ist recht simpel:

Befehle / Übersicht "keytool"
http://java.sun.com/j2se/1.3/docs/tooldocs/win32/keytool.html

Wir haben uns selbst eine kleine Anleitung geschrieben, weil es oft zu Missverständnissen bei der Verwendung kommt, hilft ja vielleicht:



> 4 Schritte für SSL im Tomcat.
> 
> Erstellen des Request Key’s (Wird für die Bestellung benötigt. Fingerprint des Servers)
> Achtung: CN -> Domain die genutzt werden soll.
> ...




du solltest dann per Browser testen, ob das mit SSL geht.

Wenn du dann per JAVA Daten austauschen willst, würde ich u.U. den HttpClient von Apache Commons (3.1 oder höher) nehmen, der hat eigentlich alles drin, was man braucht.
Selbst habe ich das nicht getestet, aber der sollte alles unterstützen.


----------



## Niki (24. Apr 2008)

Ich hab vor kurzem einen WebService Client über SSL und Proxy realisieren müssen. Proxy ist ganz einfach, du brauchst nur folgende System-Properties hinzufügen:

```
System.getProperties().put("http.proxyPort", "3128"); //Standard
System.getProperties().put("http.proxyHost", "proxy-host");
System.getProperties().put("http.proxySet", "true");
```

Für die SSL Verbindung habe ich mir ein jks-File mittels portecle erstellt. Das ist ganz einfach. Einfach das Server-Zertifikat importieren und dann das jks-File generieren lassen. Das jks-File kann man dann am Client so einbinden:

```
InputStream is = new FileInputStream(new File("cert", "mein-zert.jks"));
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
keyStore.load(is, "passwort".toCharArray());
is.close();
```

Das hat auf Anhieb funktioniert.


----------

