Mein SetupValidierung einer Zertifikatskette, wenn eine SSLSocket in Java
Mein Ziel ist es, eine Öffnung SSL einzurichten/TLS gesicherte Verbindung (explizit) mit einem FTP-Server. Das entsprechende Root-CA-Zertifikat wird in einem Truststore mit der Bezeichnung truststore.jks
gespeichert. Nach dem AUTH TLS
Befehl verwende ich den folgenden Code, um den SSLSocket aufzubauen.
public SSLSocket enterSecureMode(Socket s) throws Exception {
KeyStore truststore = KeyStore.getInstance("JKS");
truststore.load(Files.newInputStream(Paths.get("truststore.jks")), "mypass".toCharArray());
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(truststore);
SSLContext sCon = SSLContext.getInstance("TLS");
sCon.init(null, tmf.getTrustManagers(), null);
SSLSocketFactory sslSocketFactory = sCon.getSocketFactory();
return (SSLSocket) sslSocketFactory.createSocket(s, "<HOSTNAME>", 21, true);
}
Der Code selbst gut läuft und ich erhielt eine gesicherte Steckdosen-Verbindung, aber ich frage mich, ob diese Angriffe wie beispiels MITM oder nicht ausstehen kann. Ich meine, würde dieses Programm einen Versuch von jemandem entdecken, der versucht, mir ein gefälschtes Zertifikat zu geben. Daher würde ich mich sehr freuen, wenn mir einige erfahrenere SSL-Netzwerk-Programmierer dabei helfen könnten: D
Nehmen wir an, ich bin paranoid in Bezug auf Sicherheit (vor allem, weil ich den maximalen Schutz für meine Programme/Daten möchte). Müsste ich vielleicht den Fingerabdruck des Servers-Zertifikats speichern und überprüfen, ob sie beim Starten einer SSL-Verbindung übereinstimmen oder nicht? – MiEbe
Ja, Sie könnten das tun, oder tatsächlich das gesamte Zertifikat speichern und bitweise vergleichen. Aber wenn Sie eines dieser Dinge getan haben, müssten Sie es bei jedem Ablauf aktualisieren. Vorausgesetzt, es ist von der richtigen Stammzertifizierungsstelle signiert und hat denselben Subject Distinguished Name, den die Stammzertifizierungsstelle überprüfen muss, kann sie als vertrauenswürdig eingestuft werden. – EJP