java使用私钥与证书和密钥库?

时间:2011-01-11 13:21:21

标签: java certificate keystore pki

我有一个使用KeyTool添加到密钥库的证书。我还提供了私钥用于生产/测试环境。我知道证书使用的是公钥。我在哪里放置密钥库和私钥以便能够被命令行程序读取。以下密钥读取密钥库。

System.setProperty("javax.net.ssl.keyStore", "xxx.ks");
System.setProperty("javax.net.ssl.keyStorePassword", "xxx_4ps!");
System.setProperty("javax.net.ssl.trustStore", "xxx.ks");
System.setProperty("javax.net.ssl.trustStorePassword", "xxx!");. 

我必须在哪里放置私钥才能被程序读取。我是公共/私人密钥加密的新手,所以任何帮助将不胜感激。

亲切的问候, 马丁

2 个答案:

答案 0 :(得分:2)

私钥及其相应的证书放在javax.net.ssl.keyStore。

您想要信任的证书放在javax.net.ssl.trustStore中。通常你没有自己的,只需使用JDK提供的默认值,在这种情况下你根本不指定这个属性。

答案 1 :(得分:1)

这些属性指向证书,间接指向密钥。所以,首先你必须获得证书并将它们放入密钥库。

“javax.net.ssl.keyStore”用于带有证书的密钥库,用于标识您的系统。默认情况下,无需任何其他代码,每个密钥库只能使用一个身份证书。要创建证书,您有两个选择 - 一个是创建自签名证书,另一个是创建CSR并将其发送给证书颁发机构进行签名。

请参阅 http://download.oracle.com/javase/1.3/docs/tooldocs/win32/keytool.html#selfcertCmdhttp://download.oracle.com/javase/1.3/docs/tooldocs/win32/keytool.html#certreqCmd命令。

创建证书后,将会有与之关联的私钥和公钥。

“javax.net.ssl.trustStore”指向具有您信任的证书的密钥库。这意味着您的系统将仅接受来自此密钥库的证书的SSL连接,或者通过此密钥库中的证书进行签名。可以使用以下命令将这些认证添加到密钥库中: http://download.oracle.com/javase/1.3/docs/tooldocs/win32/keytool.html#importCmd

您可以将密钥库放在任何您喜欢的位置。只需确保java进程可以访问它们。