【发布时间】:2015-09-03 17:37:35
【问题描述】:
我有一个 Java 代码,它加载一个在运行时(.war 文件)中定义的密钥库。
KeyStore trustStore = KeyStore.getInstance("PKCS12");
File key = new File ("/was85/resources/security/ecommerce_gr_mobile.p12");
trustStore.load(new FileInputStream(key), "Pass".toCharArray());
但是,我不需要对密钥库进行硬编码 - pass 。我需要从正在运行的 EAR 中获取它们,因为这些值在我们的环境(DEV - QA- UAT 和 PROD)中是不同的。
我读到我需要使用这样的东西:
Properties properties = new java.util.Properties();
InputStream inputStream =
getServletContext().getResourceAsStream("/WEB-INF/web.xml/worklight.properties");
properties.load(inputStream);
String keystore= properties.getProperty("ssl.keystore.path");
但是,worklight.properties 中的值是默认值,而不是我们在运行时中定义的值
worklight.properties:
ssl.keystore.path = /conf/default.keystore
运行时内的JDNI值:
如何获取 JNDI 中定义的而不是默认的?
已编辑:
Web.xml:
<env-entry>
<description>[OPTIONAL] SSL certificate keystore location. Default: conf/default.keystore.</description>
<env-entry-name>ssl.keystore.path</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value/>
</env-entry>
<env-entry>
<description>[OPTIONAL] SSL certificate keystore type. Valid keystore types: jks, PKCS12. Default: jks.</description>
<env-entry-name>ssl.keystore.type</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value/>
</env-entry>
<env-entry>
<description>[OPTIONAL] SSL certificate keystore password.Default: worklight.</description>
<env-entry-name>ssl.keystore.password</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value/>
</env-entry>
【问题讨论】:
标签: java websphere jndi keystore