【发布时间】:2010-11-04 14:03:55
【问题描述】:
我正在编写一个使用 SSL 的应用程序。 因此,我有一个虚拟密钥库和一个虚拟信任库,我想提供给我的客户。 是否有任何默认文件夹可以将它们放入我的发行版中? 例如文档、库、bin ...等。密钥库通常放在服务器的什么位置,而信任库通常放在客户端的什么位置?
谢谢
【问题讨论】:
我正在编写一个使用 SSL 的应用程序。 因此,我有一个虚拟密钥库和一个虚拟信任库,我想提供给我的客户。 是否有任何默认文件夹可以将它们放入我的发行版中? 例如文档、库、bin ...等。密钥库通常放在服务器的什么位置,而信任库通常放在客户端的什么位置?
谢谢
【问题讨论】:
在 Java 中,根据JSSE Reference Guide,keystore 没有默认值,truststore 的默认值是“jssecacerts,如果存在。否则,cacerts”。
一些应用程序使用~/.keystore 作为默认密钥库,但这并非没有问题(主要是因为您可能不希望用户运行的所有应用程序都使用该信任库)。
我建议使用与应用程序捆绑在一起的特定于应用程序的值,它通常更适用。
【讨论】:
就像布鲁诺说的,你最好自己配置它。这是我的做法。 首先创建一个属性文件 (/etc/myapp/config.properties)。
javax.net.ssl.keyStore = /etc/myapp/keyStore
javax.net.ssl.keyStorePassword = 123456
然后将属性从您的代码加载到您的环境中。这使您的应用程序可配置。
FileInputStream propFile = new FileInputStream("/etc/myapp/config.properties");
Properties p = new Properties(System.getProperties());
p.load(propFile);
System.setProperties(p);
【讨论】: