Nur für die Komplettierung.
Wir hatten hier ja einige Threads, wo man mit Java (oder anderen Plattformen) Webseiten auslesen sollte.
Die SSL Geschichte on top war jetzt ein bischen nervig.
Es geht darum, dass der Client dem Server vertraut. Es geht
nicht um Client Authentifizierung.
Eine einfache Sache, mag man denken.
In Java und in Browsern ist das so implementiert, dass Servern die einen public key haben, der mit einer CA signiert ist, die sich in einem gewissen Repository befindet, grundsätzlich vertraut wird.
Ansonsten setzt es eine
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: No trusted certificate found.
Standardmässig ist dieses Repository in Java dies in einer Datei cacerts.
Genauer:
jre\lib\security\cacerts
Das Format ist irgendwie binary.
Man kann sich den Inhalt aber Klartext ausgeben, wenn man diese Zeile im code setzt, bevor versucht wird irgendwelche SSL-Verbindungen zu öffnen:
System.setProperty("javax.net.debug", "ssl");
Es gibt dann noch diverse Tools im jsdk, mit dem man da neue CA-certs reinbringt. Leider sind das Kommandozeilentools, die ein bischen nervig sind. Über google findet man kleine, nicht so toll geschriebene Java Programme, die aber super funktionieren und bei der Bedienung dieser Kommando-Zeilen Tools helfen.
Z.B:
http://diakonia.org.za/webCDcreator/4pluginRSA/installCA.htmlViele CA-certs sind schon von Hause aus im cacerts-Repository. Das in Deutschland recht verbreitete TrustCenter leider nicht. Die Infos für CA in Browser bringen sind noch ganz ok. Die Infos für Leute, die die CA in Java cacerts (oder auf anderen Prog-Plattformen) bringen wollen, hingegen imnsho katastrophal.
So ungewöhnlich dürfte dieses Ansinnen nicht sein.
So eine Informationspolitik hat natürlich Folgen.
Z.B. schaltet der php-Beispielcode einer Deutschen Großbank SSL-Server-Authentifizierung der Einfachheit halber ganz aus
. Es ist an dieser Stelle vielleicht auch nicht so wichtig. Besonders toll finde ich das aber nicht. In einer besseren Welt sollten Banken grundsätzlich an der Einhaltung an Sicherheitsprozessen interessiert sein.
Ein tolles Buch für Java Security ist: Pankaj Kumar, J2EE Security.