0

我有一个要安装在 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 而不将密码存储到配置文件中的更好方法?

4

1 回答 1

2

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

例如,假设我有一个用于“myApp”的生产数据库的数据库密码“secretDBpassword”,我可以执行以下操作:

创建密码别名:

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.

将密码属性的值设置为:

${ALIAS=myApp-production-db}

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

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

asadmin> change-master-password

文档change-master-password

正如您在示例中所指出的,默认值为changeit,这是众所周知的,因此“更改它”是个好主意!

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

于 2017-08-22T15:11:57.540 回答