【问题标题】:Change Master Password on Payara/Glassfish Server在 Payara/Glassfish 服务器上更改主密码
【发布时间】:2017-11-21 10:39:25
【问题描述】:

背景:我需要更改 payara-server 主密码。根据文档,主密码必须与密钥库和信任库中的密码匹配,才能使 SSL 证书正常工作。让我的网站在 https 而不是 http 上运行。

我让 Payara-Server 在 Docker Container through the guide 中运行:

我尝试更改 payaradomain 主密码,但出现非循环错误。 1. 确保 payara-domain 没有运行。

- ./asadmin stop-domain --force=true payaradomain

当我运行这个命令时,domain1 被杀死了。 & 然后被踢出 docker 容器:

./asadmin stop-domain --kill=true payaradomain

当我执行这个命令时:

./asadmin list-domains

回复:

domain1 running
payaradomain not running
Command list-domains executed successfully.

然后尝试命令:

./asadmin stop-domain --force=true payaradomain

回复:

 CLI306: Warning - The server located at /opt/payara41/glassfish/domains/payaradomain is not running.

我对此很满意,但是当我尝试时:

./asadmin change-master-password payaradomain

我收到以下回复:

Domain payaradomain at /opt/payara41/glassfish/domains/payaradomain is running. Stop it first.

我已附上下面的图片:请帮助...

【问题讨论】:

    标签: ssl glassfish keystore change-password payara


    【解决方案1】:

    如果你想在 docker 中配置 Payara 服务器,包括主密码,你应该通过扩展默认的 Payara docker 镜像来创建自己的 docker 镜像。这是最简单的 Dockerfile:

    FROM payara/server-full
    
    # specify a new master password "newpassword" instead of the default password "changeit"
    RUN echo 'AS_ADMIN_MASTERPASSWORD=changeit\nAS_ADMIN_NEWMASTERPASSWORD=newpassword' >> /opt/masterpwdfile
    
    # execute asadmin command to apply the new master password
    RUN ${PAYARA_PATH}/bin/asadmin change-master-password --passwordfile=/opt/masterpwdfile payaradomain
    

    然后您可以使用以下命令构建您的自定义 docker 映像:

    docker build -t my-payara/server-full .
    

    然后运行my-payara/server-full 而不是payara/server-full

    还要注意,使用默认的 Payara docker 镜像,您应该指定 PAYARA_DOMAIN 变量来运行 payaradomain 而不是 domain1,例如:

    docker run --env PAYARA_DOMAIN=payaradomain payara/server-full
    

    上面的示例Dockerfile重新定义了这个变量,所以默认使用payaradomain,运行容器时不需要指定。

    更改主密码的替代方法

    您也可以在不运行 Payara Server 的情况下运行 docker 映像。相反,您可以先运行 bash shell,在控制台中执行必要的命令,然后从 shell 运行服务器。

    为此,您可以使用以下命令运行 docker 映像:

    docker run -t -i --entrypoint /bin/bash payara/server-full
    

    这种方法的缺点是 docker 容器在前台运行,如果你重新启动它,那么 payara 服务器必须手动重新启动,所以它实际上只是用于测试目的。

    【讨论】:

    • 嗨@OndrejM,您的回复非常有用。非常感谢你。我学到了很多东西。一直以来,我都试图在容器中实现配置,而不是在自定义构建的 docker 映像中应用解决方案。比你。
    • 我是否也可以继续并将以下内容添加到 DockerFile 中,就在示例的最后一行下方:ADD ca.crt:/etc/ssl/certs 下一行:RUN update-ca-certificates,如本示例所示:stackoverflow.com/questions/26028971/… ...是否建议将 ssl 证书存储在 docker 映像/构建中?
    • 另一件事。我注意到 docker-java-home 的 ssl 证书的默认路径在 /etc/ssl/certs 但 glassfish 会期待 ssl 证书在:/opt/payara41/glassfish/domains/payaradomain/config/ 如何处理这样一个令人困惑的实现?
    • 我刚刚了解到我需要阅读 docker secrets 并了解如何使用 docker 完成这项工作。
    • Payara/Glassfish 不使用证书的默认位置,并期望您在 payaradomain/config 中编写证书。我在这里写了一篇关于向 Payara 添加证书的详细博文:blog.payara.fish/…
    【解决方案2】:

    您收到消息称payaradomain 正在运行的原因是因为您已启动domain1payaradomaindomain1 使用相同的端口,并且检查域是否正在运行会查看给定域的管理端口是否正在使用中。

    要更改主密码,您必须停止两个域或更改 payaradomain 的管理端口。

    【讨论】:

      【解决方案3】:

      与其在 dockerfile 中回显密码,不如在构建期间复制包含密码的文件并在构建完成时将其删除。

      【讨论】:

        猜你喜欢
        • 2017-08-23
        • 1970-01-01
        • 2019-07-08
        • 2011-05-20
        • 2019-06-27
        • 2014-11-27
        • 2016-07-18
        • 2020-08-07
        • 1970-01-01
        相关资源
        最近更新 更多