KeyStore ks = KeyStore.getInstance("PKCS12");
FileInputStream fis = new FileInputStream("/path/to/file.p12");
ks.load(fis, "password".toCharArray());
KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
kmf.init(ks, "password".toCharArray());
SSLContext sc = SSLContext.getInstance("TLS");
sc.init(kmf.getKeyManagers(), null, null);
Dieser Code funktioniert einwandfrei. Aber gibt es irgendeine Möglichkeit, keystore.jks für diesen Fall zu verwenden? Zum Beispiel habe ich file.p12 in keystore.jks mit dem Tool pkcs12import mit einem Alias importiert. Dann verwende ich System.setProperty ("javax.net.ssl.keyStore", "C: /Sun/SDK/jdk/jre/lib/security/keystore.jks"); und nicht Zertifikatspfad und das Passwort in Java-Code schreiben, und nehmen Sie aus, dass keystore.jks DateiFordern Sie eine URL an, die Client-Zertifikatauthentifizierung
Sie findet Sie können auch eine Systemeigenschaft für den Geschäftstyp angeben, sodass Sie nicht nach JKS importieren müssen. – erickson
Mögliches Duplikat von [java - Pfad zu trustStore - set-Eigenschaft funktioniert nicht?] (Http://stackoverflow.com/questions/2138574/java-path-to-truststore-set-property-doesnt-work) – Marged
Für Systemeigenschaft Ich benutze keystore.jks, wo ich viele Zertifikate importiert habe, also kann ich es nicht benutzen. –