在Glassfish v4中安装证书而不在配置文件中存储密码

时间:2017-08-22 14:13:28

标签: keystore glassfish-4 glassfish-4.1 keystore-access

我想在Glassfish v4服务器上安装通配符证书。 转换证书格式并将其导入java密钥库(使用其他主题中已讨论过的命令)后,我们必须配置文件domain.xml以包含JKS的密码。类似的东西:

<jvm-options>-Djavax.net.ssl.keyStore=/myappdir/keystore.jks</jvm-options>
<jvm-options>-Djavax.net.ssl.keyStorePassword=changeit</jvm-options>
<jvm-options>-Djavax.net.ssl.trustStore=/myappdir/cacerts.jks</jvm-options>
<jvm-options>-Djavax.net.ssl.trustStorePassword=changeit</jvm-options>
<jvm-options>-Djavax.net.ssl.keyAlias=myapp-cert</jvm-options>
<jvm-options>-Djavax.net.ssl.keyStoreAlias=myapp-cert</jvm-options>
<jvm-options>-Dcom.sun.enterprise.security.httpsOutboundKeyAlias=myapp-cert</jvm-options>

这里的问题是必须将JKS的密码插入文件domain.xml (请参阅-Djavax.net.ssl.trustStorePassword=changeit),出于安全考虑,我认为这不是一个好协议。

有没有人知道更好的方法将证书导入glassfish v4而不将密码存储到配置文件中?

1 个答案:

答案 0 :(得分:2)

通常,您可以使用别名来避免在domain.xml中存储敏感数据。

例如,假设我的数据库密码为&#34; secretDBpassword&#34;用于&#34; myApp&#34;的生产数据库我可以做到以下几点:

创建密码别名:

asadmin> create-password-alias myApp-production-db
Please enter the alias password>   // enter secretDBpassword
Please enter the alias password again>  // enter secretDBpassword
Command create-password-alias executed successfully.

将password属性的值设置为:

${ALIAS=myApp-production-db}

这不必用于密码。任何字符串都可以存储为别名。

但是,在您的情况下,我们正在讨论用于密钥库和信任库的密码。这是 主密码 ,可以使用asadmin命令进行设置:

asadmin> change-master-password

<强> Documentation for change-master-password

正如您在示例中所述,默认值为changeit,这是众所周知的,因此最好更改它&#34;!

以这种方式使用主密码将避免在JVM选项中或domain.xml中的任何位置指定任何密码。