2016-09-29 128 views
0
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); 

此代码正常工作。但是对于这种情况,有没有可能使用keystore.jks?例如,我使用带有别名的pkcs12import工具将file.p12导入到keystore.jks中。然后我使用System.setProperty(“javax.net.ssl.keyStore”,“C:/Sun/SDK/jdk/jre/lib/security/keystore.jks”);在java代码不写证书路径和密码,并把它从keystore.jks文件请求客户端证书认证的URL

+0

你也可以指定商店类型的系统属性,所以你不需要导入到JKS。 – erickson

+0

可能重复的[java - truststore的路径 - 设置属性不起作用?](http://stackoverflow.com/questions/2138574/java-path-to-truststore-set-property-doesnt-work) – Marged

+0

对于系统属性我使用keystore.jks导入了许多证书,所以我无法使用它。 –

回答

0

是的,这是可以使用JKS密钥库来处理证书,这样的例子可以发现here