SSL 配置在 Wildfly 26.0.1 中不起作用

SSL configuration is not working in Wildfly 26.0.1

我们正在尝试将 Wildfly 从 8.1.0.Final 迁移到 26.0.1.Final。目前 Wildfly 运行 处于独立模式,因此 standalone.xml 用于配置,目前还没有域配置。

一切正常,包括管理控制台、程序包部署等,但使用 https 请求 URL 给我们“无法访问此站点”。 Wildfly 26.0.1.Final 中的 SSL 配置似乎有问题,因为在版本 8.1.0.Final.

中使用了相同的 SSL 证书

这是我们正在使用的 SSL/TLS 配置:

            <tls>
                <key-stores>
                    <key-store name="abc-keystore">
                        <credential-reference clear-text="clearpasswordonetwothree"/>
                        <implementation type="JKS"/>
                        <file path="abc-keystore.jks" relative-to="jboss.server.config.dir"/>
                    </key-store>
                </key-stores>
                <key-managers>
                    <key-manager name="applicationKM" key-store="abc-keystore">
                        <credential-reference clear-text="clearpasswordonetwothree"/>
                    </key-manager>
                </key-managers>
                <server-ssl-contexts>
                    <server-ssl-context name="applicationSSC" key-manager="applicationKM"/>
                </server-ssl-contexts>
            </tls>

我们已从配置中删除 generate-self-signed-certificate-host="localhsot",因为证书在我们的案例中不是自签名的。 正如我之前提到的,相同的 SSL 证书已在版本 8.1.0 中使用。

请注意,这与版本 26.0 特别相关。1.Final,我不知道除了上述之外是否还需要其他配置。

非常感谢任何帮助。

以下是我的 Widfly (20) 关于 SSL 的配置方式。

假设您已经设置了一个 Java 密钥库,其名为 'server' 的条目包含您的 certificate/key,您必须告诉 Wildfly 查找该特定别名('server') 在你的密钥库中:

<management>
    <security-realms>            
            ...
        <security-realm name="ApplicationRealm">
            <server-identities>
                <ssl>
                    <keystore path="application.keystore" relative-to="jboss.server.config.dir" keystore-password="..." alias="server" key-password="..." generate-self-signed-certificate-host="localhost"/>
                </ssl>
            </server-identities>

我 运行 遇到了同样的问题,因为他们删除了安全领域。我使用了本手册的顶部:https://docs.jboss.org/author/display/WFLY/Simple%20SSL%20Migration.html
我的设置是我有一个 .cer 证书和密钥,我必须 re-create 使用这两个答案的密钥库: and How to import an existing X.509 certificate and private key in Java keystore to use in SSL?

  1. 使用虚拟证书创建密钥库:keytool -genkeypair -alias boguscert -storepass changeit -keypass changeit -keystore server.keystore -dname "CN=Developer, OU=Department, O=Company, L=City, ST=State, C=CA"
  2. 从密钥库中删除虚拟证书:keytool -delete -alias boguscert -storepass changeit -keystore server.keystore
  3. 从密钥和 .crt 文件创建 pkcs12 证书openssl pkcs12 -export -in <SERVERNAME>.crt -inkey <SERVERNAME>.key -out server.p12 -name server
  4. 将 pkcs12 证书导入空密钥库:keytool -importkeystore -deststorepass changeit -destkeypass changeit -destkeystore server.keystore -srckeystore server.p12 -srcstoretype PKCS12 -srcstorepass changeit -alias server

然后我使用位于 bin 目录中的 wildfly-cli 按照上面链接的 jboss 文档的顶部进行操作。
这会将所需的 xml 写入 standalone.xml 因此请确保您使用的是 wildfly 26.0.1 附带的原版。
之后我不得不使用这个启用 ssl 重定向:

希望对您有所帮助

这是我在 Wildfly 支持的帮助下整理出来的。就我而言,它是独立模式。

TLS 块:

<tls>
                <key-stores>
                    <key-store name="applicationKS">
                        <credential-reference clear-text="password"/>
                        <implementation type="JKS"/>
                        <file path="C:\wildfly26\application.keystore.jks"/>
                    </key-store>
                </key-stores>
                <key-managers>
                    <key-manager name="applicationKM" key-store="applicationKS" generate-self-signed-certificate-host="localhost">
                        <credential-reference clear-text="password"/>
                    </key-manager>
                </key-managers>
                <server-ssl-contexts>
                    <server-ssl-context name="applicationSSC" protocols="TLSv1.2" key-manager="applicationKM"/>
                </server-ssl-contexts>
            </tls>

在 https-listener

中引用 SSL 上下文
<https-listener name="https" socket-binding="https" ssl-context="applicationSSC" enable-http2="true"/>

socket-binding-group下的套接字绑定 将端口从 8443 更改为 443

<socket-binding name="https" port="${jboss.https.port:443}"/>

配置界面

<interfaces>
        <interface name="management">
            <inet-address value="${jboss.bind.address.management:127.0.0.1}"/>
        </interface>
        <interface name="public">
            <inet-address value="${jboss.bind.address:0.0.0.0}"/>
        </interface>
    </interfaces>