2017-06-02 81 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?

這確實可以更容易地泄漏您的私鑰並使您的系統不安全。提取服務器的錨定證書是一種更好的做法,對於自簽名證書,它是證書本身,並且只將證書(不是私鑰)放入客戶端的信任庫中。

相關問題