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

Installing a certificate in Glassfish v4 without storing password in config files

我有一个要在 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 的更好方法吗?

一般来说,您可以使用别名避免在 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

Documentation for change-master-password

如您在示例中所述,默认值为 changeit,这是众所周知的,因此 "change it"!

是个好主意

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