哪个是Java应用程序的密钥库/信任库的默认位置?

yur*_*ura 40 java ssl keystore

我正在编写一个使用SSL的应用程序.因此,我有一个虚拟密钥库和一个我想要提供给客户的虚拟信任库.是否有任何默认文件夹将它们放入我的发行版中?例如docs,lib,bin等.通常将密钥库放在服务器上的位置通常是客户端放置的信任库?

谢谢

Bru*_*uno 36

在Java中,根据JSSE参考指南,没有默认值keystore,默认为truststore" jssecacerts,如果它存在.否则,cacerts ".

一些应用程序~/.keystore用作默认密钥库,但这并非没有问题(主要是因为您可能不希望用户运行的所有应用程序都使用该信任库).

我建议使用与应用程序捆绑在一起的特定于应用程序的值,它通常更适用.

  • 更具体地说,默认位置是<java-home>/lib/security/jssecacerts和<java-home>/lib/security/cacerts,您可以使用javax.net.ssl.trustStore系统属性覆盖它. (33认同)
  • 密钥库和信任库是一般的PKI术语,不是特定于Java的. (2认同)

Kri*_*oit 14

就像布鲁诺说的那样,你最好自己配置它.这是我如何做到的.首先创建一个属性文件(/etc/myapp/config.properties).

javax.net.ssl.keyStore = /etc/myapp/keyStore
javax.net.ssl.keyStorePassword = 123456
Run Code Online (Sandbox Code Playgroud)

然后从代码中将属性加载到您的环境中.这使您的应用程序可配置.

FileInputStream propFile = new FileInputStream("/etc/myapp/config.properties");
Properties p = new Properties(System.getProperties());
p.load(propFile);
System.setProperties(p);
Run Code Online (Sandbox Code Playgroud)

  • 您好,Kristian Benoit - 您的答案似乎很合乎逻辑 - 您能否详细说明您的答案详细信息 - 或参考博客链接...以获取完整的教程。抱歉,我对密钥库有点陌生,感谢您的努力 (2认同)