2016-07-07 8 views
0

Ich lese XML-Text von einem https-Link, der, wenn ich in einem Browser öffne, fragt nach dem Zertifikat zu überprüfen.Lesen von URL in Java, wenn Zertifizierung Genehmigung beteiligt ist

URL oracle = new URL(url); //url is a String 
URLConnection yc = oracle.openConnection(); 
BufferedReader inputReader = new BufferedReader(new InputStreamReader(yc.getInputStream())); 

Ich bekomme eine IOException in der 3. Zeile in der InputReader. Ich habe den gleichen Code auf einem einfachen HTTP-Link ausprobiert, der keine Zertifizierung erfordert und gut funktioniert. Weißt du, was ich ändern sollte?

Dank

Antwort

0

Sie haben nicht die Spur der Ausnahme sind aber sicher der SSL-Server verweigert die Verbindung, weil Sie nicht mit Zertifikat authentifiziert werden.

Sie müssen eine https-Verbindung mithilfe eines auf Ihrer JVM konfigurierten Clientzertifikats erstellen. Dies wird Bidirektionale SSL-Authentifizierung genannt (check this tutorial)

Sie benötigen

1) Erstellen Sie einen Schlüsselspeicher (PKCS12 oder JKS) und beinhalten den privaten Schlüssel des Client-Zertifikats

2) Erstellen Sie eine trusteore (könnte dieselbe Datei sein) und den öffentlichen Schlüssel des Serverzertifikats enthalten

3) Konfigurieren Sie Ihre JVM für die Verwendung des Schlüsselspeichers und des Truststores in SSL-Verbindungen mit diesem Server.

-Djavax.net.ssl.keyStoreType=pkcs12 
-Djavax.net.ssl.keyStore=client.p12 
-Djavax.net.ssl.keyStorePassword=whatever 
-Djavax.net.ssl.trustStoreType=jks 
-Djavax.net.ssl.trustStore=client-truststore.jks 
-Djavax.net.ssl.trustStorePassword=whatever 

prüfen ein vollständiges Beispiel https://stackoverflow.com/a/1710543/6371459

Verwandte Themen