在 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 中的任何地方指定任何密码。
我有一个要在 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 中的任何地方指定任何密码。