使用 letencrypt 证书在 Wildfly 19 上设置 ssl 证书

Posted

技术标签:

【中文标题】使用 letencrypt 证书在 Wildfly 19 上设置 ssl 证书【英文标题】:Setting up ssl certificate on Wildfly 19 using letencrypt certificate 【发布时间】:2020-08-30 19:17:37 【问题描述】:

我正在尝试在 Wildfly 19.0.0-Final 上实现 SSL 证书,在 CentOS 上运行 centos-release-7-7.1908.0.el7.centos.x86_64 与 Java openjdk 版本“1.8.0_242” OpenJDK 运行时环境(内部版本 1.8.0_242-b08) OpenJDK 64 位服务器 VM(内部版本 25.242-b08,混合模式)

我已执行以下步骤将 https://www.example.com 域映射到我的 Wildfly 内容工资单

我的密钥库位于以下位置: /opt/wildfly-19.0.0.Final/standalone/configuration/www.example.com.jks

向服务器添加证书。 http://www.mastertheboss.com/jboss-server/jboss-security/complete-tutorial-for-configuring-ssl-https-on-wildfly

在 sh /opt/wildfly-19.0.0.Final/bin/jboss-cli.sh 登录管理控制台 连接

然后运行以下脚本

batch
# Configure Server Keystore
/subsystem=elytron/key-store=demoKeyStore:add(path=server.keystore,relative-to=jboss.server.config.dir, credential-reference=clear-text=secret,type=JKS)
# Server Keystore credentials  
/subsystem=elytron/key-manager=demoKeyManager:add(key-store=demoKeyStore,credential-reference=clear-text=secret)
# Server keystore Protocols  
/subsystem=elytron/server-ssl-context=demoSSLContext:add(key-manager=demoKeyManager,protocols=["TLSv1.2"]) 
# This is only needed if WildFly uses by default the Legacy security realm
/subsystem=undertow/server=default-server/https-listener=https:undefine-attribute(name=security-realm)
# Store SSL Context information in undertow
/subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=ssl-context,value=demoSSLContext)

run-batch

reload

现在它将在配置文件中添加一个 tls 部分

看起来像

<tls>
    <key-stores>
        <key-store name="demoKeyStore">
        <credential-reference clear-text="secret"/>
        <implementation type="JKS"/>
        <file path="server.keystore" relative-to="jboss.server.config.dir"/>
        </key-store>
    </key-stores>
    <key-managers>
        <key-manager name="demoKeyManager" key-store="demoKeyStore">
        <credential-reference clear-text="secret"/>
        </key-manager>
    </key-managers>
    <server-ssl-contexts>
        <server-ssl-context name="demoSSLContext" protocols="TLSv1.2" key-manager="demoKeyManager"/>
    </server-ssl-contexts>
</tls>

停止 wildfly 以开始更改配置。 /usr/sbin/wildfly-19.0.0.最后停止 阻止野蝇: 改成

 <tls>
                <key-stores>
                    <key-store name="demoKeyStore">
                        <credential-reference clear-text="Some1pwD"/>
                        <implementation type="JKS"/>
                        <file path="www.example.com.jks" relative-to="jboss.server.config.dir"/>
                    </key-store>
                </key-stores>
                <key-managers>
                    <key-manager name="demoKeyManager" key-store="demoKeyStore">
                        <credential-reference clear-text="Some1pwD"/>
                    </key-manager>
                </key-managers>
                <server-ssl-contexts>
                    <server-ssl-context name="demoSSLContext" protocols="TLSv1.2" key-manager="demoKeyManager"/>
                </server-ssl-contexts>
            </tls>

/usr/sbin/wildfly-19.0.0.最终开始

http://www.example.com 工作时,我无法访问 https://www.example.com 上的 wildfly

【问题讨论】:

【参考方案1】:

可以使用 WildFly CLI 从 Let's Encrypt 获取证书。请查看以下描述如何执行此操作的博客文章:

https://developer.jboss.org/people/fjuma/blog/2018/08/31/obtaining-certificates-from-lets-encrypt-using-the-wildfly-cli

此处还有第 4.3.6 节中的其他文档:

https://docs.wildfly.org/19/WildFly_Elytron_Security.html#configure-ssltls

请注意,要使用新证书而不需要重新启动服务器,您只需重新初始化您的密钥管理器(例如,/subsystem=elytron/key-manager=httpsKM:init())。

【讨论】:

以上是关于使用 letencrypt 证书在 Wildfly 19 上设置 ssl 证书的主要内容,如果未能解决你的问题,请参考以下文章

Mosquitto websockets ERR_CONNECTION_REFUSED letencrypt

Wildfly 8.2:导入通配符证书,缺少中间证书

证书 pem 转 jks

给网站配置免费的HTTS证书

Letsencrypt SSL 证书过期问题

给网站配置免费的HTTS证书