2017-06-02 59 views
0
keytool -genkey -keyalg RSA -alias tomcat -keystore selfsigned.jks -validity <days> -keysize 2048 

我使用它生成密钥库。我可以为客户端和服务器Java使用相同的自签名证书SSL SSL

我可以在下面的客户端和服务器上使用这个相同的密钥存储吗?

客户

System.setProperty("javax.net.ssl.trustStore", "herong.jks"); 
System.setProperty("javax.net.ssl.trustStorePassword", "HerongJKS"); 

服务器

System.setProperty("javax.net.ssl.keyStore", "herong.jks"); 
System.setProperty("javax.net.ssl.keyStorePassword", "HerongJKS"); 

回答

0

如果你不希望它的安全。您已将服务器的私钥泄露给客户端。

-1

我不明白为什么不能在客户端和服务器上使用相同的密钥库。

它只取决于你的用例,如果这样做是明智的。

顺便说一句:我想你误解了信任库和密钥库的概念。他们都出席每一个jre。 它们之间的唯一区别是它们存储的是什么。 (用于信任库的可信CA的公钥,以及用于密钥库的所有其他公钥和私钥)

+0

证书应该唯一标识对等体。共享KeyStore无法完成该操作。它也违反了私钥隐私。 – EJP

0

您不是'我们[相同] ...客户端和服务器的证书',您正在使用相同JKS文件服务器密钥库和客户端信任库,这是不同的目的不同的东西。 Java确实允许信任库包含一个或多个私钥条目,并使用该条目中的叶证书作为信任锚;请参阅Does JSSE use a certificate in a PrivateKeyEntry as a trust anchor?

这确实可以更容易地泄漏您的私钥并使您的系统不安全。提取服务器的锚定证书是一种更好的做法,对于自签名证书,它是证书本身,并且只将证书(不是私钥)放入客户端的信任库中。

相关问题