https Verbindung

FrankBooth

Erfahrenes Mitglied
Hallo zusammen,

ich habe ein paar Fragen zu https Verbindungen über Java.
Ich muss ein bestehendes Programm umstellen in dem eine http Adresse verwendet wird. Später soll eine https Adresse verwendet werden.

Im ersten Schritt habe ich eine Download url bekommen, die eine .crl Datei runterläd. In der Datei finden sich gesperrte Zertifikate. Klick auf die URL öffnet sofort ein Öffnen/Speichern Dialog im Browser.

Jetzt hab ich versucht, die Datei runterzuladen um sie irgendwie verwenden zu können und das funktioniert schon nicht :(


Hier mal der Ansatz den ich auch nur gefunden habe:

Java:
try {
	    int    port = 443;
	    String hostName = "https://.../.../ee/crl/";
	    SSLSocketFactory sslFact = (SSLSocketFactory) SSLSocketFactory.getDefault();
	    SSLSocket socket = (SSLSocket) sslFact.createSocket( hostName, port );
} catch (Exception e) {
	   e.printStackTrace();
}

Der Hostname wird mir im Dialog vom Browser so angezeit. Also da steht schon mehr drin, bin aber nicht ganz sicher, ob das hier rein gehört :)

Ergebnis ist immer: java.net.UnknownHostException
Ich geh jetzt mal davon aus, dass das noch nichts mit Authentifizierung zu tun hat oder so, sondern ein anderes Probelm ist.

Bin für jeden Tipp dankbar.
 
Hi,
nein, dein Problem ist was ganz anderes.
Du verwendest die komplette URL als Host-Namen. Das funktioniert so nicht.
Du musst als Host-Name den Rechner-Namen angeben. Für "http://www.tutorials.de/java/" wäre das also nur "www.tutorials.de".
Und genau so musst du das auch bei deinem Programm machen. Es gibt nunmal keinen Host der "http://www.tutorials.de/java/377203-https-verbindung.html" heißt ... der Host heißt schlicht "www.tutorials.de" ohne jegliche Protokollangabe *http:// https://* , Verzeichnisse */java/* und Dateien *377203-https-verbinundung.html*.
Ich hoffe das ich es dir anhand dieses Beispieles nahe legen konnte was du falsch machst.
 
Zuletzt bearbeitet von einem Moderator:
Ok, danke schon mal. Ich habe es geändert. Jetzt bekomm ich die Meldung:

Java:
java.net.NoRouteToHostException: No route to host: connect

Da denk ich mal ist was mit der Firewall oder?
 
Die Klasse InetAddress dürfte dir weiterhelfen, die kann nämlich die URL automatisch in Hostname und die anderen "Anteile" zerlegen.
 
Hmm .. was man nicht im Kopf hat findet man in der API ... da sollte ich auch mal wieder drin nachlesen xD.
 
ja und da findet sich:

Signals that an error occurred while attempting to connect a socket to a remote address and port. Typically, the remote host cannot be reached because of an intervening firewall, or if an intermediate router is down.

Da steck ich dann wohl fest, bis ich einen Firewallfreischaltung habe.
 
Gut ... aber eine NoRouteToHostException wird in aller Regel nicht durch eine Firewallblockade hervorgerufen. Typischere Anzeichen einer Firewall sind Dinge wie SocketException : connect refused.
Also wäre es doch mal ganz hilfreich zu wissen WIE genau du nun den Host angibst ? Vielleicht hast du hier immer noch einen Fehler *wovon ich jetzt persönlich stark ausgehe*. Eher weniger würde ich hier auf deine Firewall tippen. Wobei es auch mal schön wäre zu wissen WELCHE du einsetzt um dir da entsprechend weiterhelfen zu können. Es nützt uns nunmal nichts wenn du nur sagst : "es könnte vielleicht an meiner Firewall liegen". Wir müssen schon wissen WELCHE um dir Tipps geben zu können um dies zu überprüfen und zu ändern. Ich persönlich kenne mich eher weniger mit SSL aus da ich mir ein eigenes Sicherheitssystem implementiert habe *ich nutze zwar wie SSL auch nur 1024Bit RSA und 128Bit AES und tausche den Session-Key sicher über RSA aus ... aber meine implementierung geht dann noch ein paar Schritte tiefer als eine einfache re-implementierung von SSL* aber es wäre vielleicht auch von vorteil wenn du uns einfach mal die komplette Adresse geben würdest damit wir es selbst testen können um dir dann zu helfen. Es kann *was ich aber nicht glaube da es mit Browser funktioniert* auch sein das es irgendwelche Fehler innerhalb von SSL gibt die du so nicht zu gesicht bekommst und das eigentliche Problem verschleiern.
 
Zurück