我想在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而不将密码存储到配置文件中?
答案 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中的任何位置指定任何密码。