Java-Client-Zertifikate über HTTPS/SSL: Eine exemplarische Vorgehensweise
Szenario
Stellen Sie sich ein Java vor 6-Anwendung, die versucht, mithilfe eines Client-Zertifikats eine HTTPS-Verbindung zu einem Remote-Server herzustellen. Der Server verwendet ein selbstsigniertes Stammzertifikat und verlangt die Vorlage eines passwortgeschützten Client-Zertifikats.
Herausforderung
Obwohl das Server-Stammzertifikat und das Client-Zertifikat hinzugefügt werden Wenn Sie den Standard-Keystore verwenden, schlägt die Verbindung mit einem Handshake-Fehler fehl. Der Antrag sucht nach Anleitungen zur effektiven Nutzung des Client-Zertifikats.
Lösung
Die Lösung umfasst drei Schritte:
Serverzertifikat in Truststore importieren: Das selbstsignierte Zertifikat des Servers muss mit dem Keytool in einen Truststore importiert werden Dienstprogramm:
keytool -import -alias <server_alias> -file <server_cert>.crt -storepass <password> -keystore <truststore_name>.keystore
JVM-Eigenschaften konfigurieren: Legen Sie bestimmte JVM-Eigenschaften fest, um die Truststore- und Keystore-Pfade, Passwörter und Typen anzugeben:
-Djavax.net.ssl.keyStoreType=pkcs12 -Djavax.net.ssl.trustStoreType=jks -Djavax.net.ssl.keyStore=<client_cert>.p12 -Djavax.net.ssl.trustStore=<truststore_name>.keystore -Djavax.net.debug=ssl -Djavax.net.ssl.keyStorePassword=<password> -Djavax.net.ssl.trustStorePassword=<password>
Aktualisierter Verbindungscode: Nutzen Sie die SSLSocketFactory zum Herstellen der HTTPS-Verbindung und Festlegen der SSL-Socket-Factory für die Verbindung:
SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault(); URL url = new URL("https://<server_host>:<port>/cgi-bin/ls.py"); HttpsURLConnection conn = (HttpsURLConnection)url.openConnection(); conn.setSSLSocketFactory(sslsocketfactory);
Dieser Ansatz behebt das Problem, indem der Client mithilfe des angegebenen Client-Zertifikats beim Server authentifiziert wird.
Das obige ist der detaillierte Inhalt vonWie nutzt man Java-Client-Zertifikate erfolgreich mit HTTPS/SSL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!