# https / SSL / Zertifikat



## Guest (17. Jan 2008)

Hallo,

ich möchte gern eine Verbindung zu einer Seite herstellen für die ich ein Zertifikat benötige.
Zertifikat ist bereits da, welche Archive benötige ich und wie realisiere ich das dann in Java?

Bitte um eure Hilfe


----------



## ms (17. Jan 2008)

Du willst also einen Http(s)Client schreiben oder wie?
Beschreibe bitte genauer was du wie machen möchtest.

ms


----------



## Guest (17. Jan 2008)

ich möchte Daten von einem Web Service abfragen und der möchte ein Zertifikat da er über https läuft.

wie binde ich das Zertifikat in java ein oder lade es so das er es verwendet?


----------



## Guest (17. Jan 2008)

kann mir denn keiner helfen?


----------



## ms (17. Jan 2008)

Anonymous hat gesagt.:
			
		

> ... und der möchte ein Zertifikat ...


Wie äussert sich dass?
Fehlermeldung?
Wie greifst du überhaupt darauf zu?

ms


----------



## tuxedo (17. Jan 2008)

Lies das  mal... Das sollte bei dir auch so funktionieren...


----------



## quippy (17. Jan 2008)

HTTPS ist mit Java etwas Tricky, wenn man self-signed Certifikate benutzen muss. Es gibt da aber ein paar Properties und Techniken, wie man Java das benötigte Zertifikat beibringen kann, ohne gleich die CACERT im JRE anfassen zu müssen:

```
// Proxy Einstellungen für https: (-Dhttps.proxyHost=? ... Parameter)
System.setProperty("https.proxyHost", "?");
System.setProperty("https.proxyPort", "?");

// Wir wünschen Debugging
System.setProperty("javax.net.debug", "all");

// SSL-Key-Store. Wer den hier angibt, muss dafür sorgen, dass
// alle notwendigen SSL-Zertifikate ebenfalls dort enthalten sind!
// Andernfalls wird eine Exception geworfen:
// javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed:
// sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
// Man kann einen Store erzeugen, welcher das Client-Zertifikat enthält:
//%JAVA_HOME%\bin\keytool.exe -import -alias HTTPS_URL_Cert -file HTTPS_URL.crt -keystore keystore.jks -keypass PASSWD -storepass PASSWD
//%JAVA_HOME%\bin\keytool.exe -import -alias HTTPS_URL_Cert -file HTTPS_URL.crt -keystore cacert -keypass changeit -storepass changeit
System.setProperty("javax.net.ssl.trustStore", "/PATH/keystore.jks"); // ES WIRD KEIN CLASSPATH GENUTZT!!!!!
System.setProperty("javax.net.ssl.trustStoreType", "jks");
```

Das ist ein Kommentar aus einem meiner Progs - da hatte ich das mal aufgeschrieben. Viel Erfolg!


----------



## tuxedo (17. Jan 2008)

Und was ist da jetzt anders erklärt als in meinem Link? Kommt aufs gleiche raus, nur hab ich öfters eine Leerzeile eingebaut ;-)


----------



## Guest (17. Jan 2008)

heißt also, ich müsset das


```
System.setProperty("javax.net.ssl.trustStore", "c:\\m180dmzwasept1_self.crt");
System.setProperty("javax.net.ssl.trustStoreType", "crt");
```

ausführen.

Und dann verwendet er das gerade angegebene Zertifikat? für die Verbindung zum Server.


----------



## quippy (17. Jan 2008)

alex0801 hat gesagt.:
			
		

> Und was ist da jetzt anders erklärt als in meinem Link? Kommt aufs gleiche raus, nur hab ich öfters eine Leerzeile eingebaut ;-)



Nimm die 4 Minuten Postzeitdifferenz mal als meine Tippzeit


----------



## quippy (17. Jan 2008)

Anonymous hat gesagt.:
			
		

> heißt also, ich müsset das
> 
> 
> ```
> ...



Ne, muß ein Store sein - mit dem Keytool erzeugt.


----------

