Установка сертификата в Glassfish v4 без сохранения пароля в конфигурационных файлах
У меня есть подстановочный сертификат, который я хочу установить на сервере 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 ответ
В целом, вы можете избежать хранения конфиденциальных данных в domain.xml, используя псевдоним.
Например, предполагая, что у меня есть пароль БД "secretDB password" для производственной базы данных, используемой для "myApp", я мог бы сделать следующее:
Создайте псевдоним пароля:
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.