Programmgesteuertes Hinzufügen eines vertrauenswürdigen Zertifikats in Java

8

Ich verwende SSL, um zwischen zwei in Java geschriebenen Komponenten zu kommunizieren. Ich kann keine CA benutzen, also muss ich alles selbst signieren. Unglücklicherweise bedeutet das, dass ich eine SunCertPathBuilderException bekomme, wenn ich Handshake versuche. Ich kann meinen eigenen X509TrustManager erstellen, der einfach alles vertraut, aber das verhindert den Zweck eines signierten Zertifikats.

Ich möchte, wenn Sie die Verbindung zum ersten Mal herstellen, den Benutzer mit "SSL-Handshake mit ungültigem Zertifikat" auffordern. Zertifikat zum Speichern hinzufügen? " oder etwas, damit sie für ihren Zertifikatsspeicher hinzugefügt werden können, wie es Webbrowser auf Websites mit ungültigen Zertifikaten tun. Ich kann online viele Beispiele finden, wie man dem Store über die Kommandozeile ein Cert hinzufügt, aber ich kann nicht herausfinden, wie man es programmatisch macht. Gibt es eine Möglichkeit, dies zu tun?

    
directedition 04.05.2010, 16:21
quelle

3 Antworten

5

Ja, das ist möglich.

Es gibt Code hier , dass ich hab schon mal benutzt. Ich musste es modifizieren, um zu tun, was ich wollte, und ich vermute, dass Sie auch werden, aber das sollte Sie nah bringen - Sie versuchen nicht, einen Schlüssel zu importieren, also sollten Sie in der Lage sein, Dinge zu vereinfachen. In jedem Fall können Sie eine Vorstellung davon bekommen, was Sie brauchen.

Das JDK JavaDoc für java.security.KeyStore ist auch sehr nützlich.

    
macbutch 05.05.2010, 01:46
quelle
0

Warum erstellen Sie keine eigene CA und signieren Sie Ihre Zertifikate damit? Dann müssen Sie nur das CA-eigene Zertifikat auf den Rechnern installieren und jedes von dieser CA signierte Zertifikat würde validieren.

    
Hiro2k 04.05.2010 17:17
quelle
0

Warum sollten Sie das tun? Sie bestätigen nicht, dass der Client derjenige ist, von dem sie sagen, dass Sie die Zertifikate nur zum Verschlüsseln der Kommunikation verwenden. Ein benutzerdefinierter Trust-Manager, der alle Zertifikate zulässt, genügt. Was Sie fragen, ist möglich und aus dem Speicher bezieht sich auch ein benutzerdefinierter Trust-Manager, um die Zertifikate zu validieren und sie im Keystore zu speichern. Ich kann mich nicht an die Details erinnern, aber zumindest weißt du, dass es möglich ist.

    
t0ne 04.05.2010 19:50
quelle

Tags und Links