Heim > Java > javaLernprogramm > Wie kann ich benutzerdefinierte Zertifikate für bestimmte Java-Verbindungen verwenden, anstatt den Truststore der JRE zu ändern?

Wie kann ich benutzerdefinierte Zertifikate für bestimmte Java-Verbindungen verwenden, anstatt den Truststore der JRE zu ändern?

Susan Sarandon
Freigeben: 2025-01-02 18:59:38
Original
991 Leute haben es durchsucht

How Can I Use Custom Certificates for Specific Java Connections Instead of Modifying the JRE's Truststore?

Verwenden benutzerdefinierter Zertifikate für bestimmte Verbindungen in Java

In Java-Anwendungen kann es vorkommen, dass eine Verbindung mit einem Server hergestellt wird ein selbstsigniertes Zertifikat. Obwohl das Importieren des Zertifikats in den Zertifizierungsstellenspeicher der JRE ein unkomplizierter Ansatz ist, wird er aufgrund seiner globalen Auswirkungen auf andere Java-Anwendungen möglicherweise nicht bevorzugt.

Stattdessen umfasst ein gezielterer Ansatz das Einrichten einer benutzerdefinierten SSLSocketFactory und -Einstellung es auf dem HttpsURLConnection-Objekt, bevor die Verbindung initiiert wird:

...
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
conn.setSSLSocketFactory(sslFactory);
conn.setMethod("POST");
...
Nach dem Login kopieren

Um eine SSLSocketFactory zu erstellen, laden Sie zunächst den KeyStore enthält das selbstsignierte Zertifikat als „vertrauenswürdigen“ Eintrag:

KeyStore keyStore = ...
Nach dem Login kopieren

Als nächstes initialisieren Sie die TrustManagerFactory:

TrustManagerFactory tmf = 
  TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
Nach dem Login kopieren

Initialisieren Sie den SSLContext mit den TrustManagern:

SSLContext ctx = SSLContext.getInstance("TLS");
ctx.init(null, tmf.getTrustManagers(), null);
Nach dem Login kopieren

Zum Schluss erhalten Sie die SSLSocketFactory:

sslFactory = ctx.getSocketFactory();
Nach dem Login kopieren

Durch die Verwendung einer benutzerdefinierten SSLSocketFactory können Sie bestimmte Zertifikate und deren Akzeptanz ausschließlich für die jeweilige Verbindung verwalten. Mit diesem Ansatz können Sie auf bestimmte Verbindungen abzielen, ohne dass sich dies global auf Ihre Anwendung oder andere Java-Programme auf dem System auswirkt.

Das obige ist der detaillierte Inhalt vonWie kann ich benutzerdefinierte Zertifikate für bestimmte Java-Verbindungen verwenden, anstatt den Truststore der JRE zu ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage