2.4. 配置 SSL 上下文以使用 SSL/TLS 保护 JBoss EAP 管理接口


使用双向 SSL/TLS 保护 JBoss EAP 管理接口,以便只有提供服务器信任的证书的客户端才能连接到服务器的管理界面。

先决条件

流程

  1. 配置服务器 SSL 上下文以启用双向 SSL。

    语法

    /subsystem=elytron/server-ssl-context=<server_ssl_context_name>:add(key-manager=<key_manager_name>,trust-manager=<trust_manager_name>,need-client-auth=true)
    Copy to Clipboard Toggle word wrap

    Example

    /subsystem=elytron/server-ssl-context=exampleServerSSLContext:add(key-manager=exampleServerKeyManager,trust-manager=exampleTLSTrustManager,need-client-auth=true)
    {"outcome" => "success"}
    Copy to Clipboard Toggle word wrap

    默认情况下,SSL 上下文使用 TLSv1.2。您可以将 protocol 属性 配置为使用 TLSv1.3,如下所示:

    语法

    /subsystem=elytron/server-ssl-context=<server-ssl-context-name>:add(key-manager=<key_manager_name>,trust-manager=<trust_manager_name>,need-client-auth=true,protocols=[TLSv1.3])
    Copy to Clipboard Toggle word wrap

  2. 添加对用于 http 管理界面的 SSLContext 的引用。

    语法

    /core-service=management/management-interface=http-interface:write-attribute(name=ssl-context, value=<server_ssl_context_name>)
    Copy to Clipboard Toggle word wrap

    Example

    /core-service=management/management-interface=http-interface:write-attribute(name=ssl-context,value=exampleServerSSLContext)
    {
        "outcome" => "success",
        "response-headers" => {
            "operation-requires-reload" => true,
            "process-state" => "reload-required"
        }
    }
    Copy to Clipboard Toggle word wrap

  3. 定义用于 HTTPS 管理接口套接字的套接字绑定配置。

    语法

    /core-service=management/management-interface=http-interface:write-attribute(name=secure-socket-binding, value=<socket_binding>)
    Copy to Clipboard Toggle word wrap

    Example

    /core-service=management/management-interface=http-interface:write-attribute(name=secure-socket-binding, value=management-https)
    {
        "outcome" => "success",
        "response-headers" => {
            "operation-requires-reload" => true,
            "process-state" => "reload-required"
        }
    }
    Copy to Clipboard Toggle word wrap

  4. 重新加载服务器。

    reload
    
    ...
    Accept certificate? [N]o, [T]emporarily, [P]ermanently :
    Copy to Clipboard Toggle word wrap

    输入 TP 以接受由服务器临时或永久提供的证书。

    管理 CLI 断开连接,因为它需要提供客户端证书。

验证

  • 验证管理控制台是否受到保护。

    1. 使用 CLI 验证:

      语法

      $ curl --verbose --location --cacert <server_certificate> --cert <client_keystore>:<password> --cert-type P12 https://localhost:9993
      Copy to Clipboard Toggle word wrap

      Example

      $ curl --verbose --location --cacert server.cer --cert EAP_HOME/standalone/configuration/exampleclient.keystore.pkcs12:secret --cert-type P12 https://localhost:9993
      ...
      < HTTP/1.1 200 OK
      ...
      Copy to Clipboard Toggle word wrap

    2. 使用浏览器进行验证。

      1. 将客户端证书导入到您的浏览器中。生成客户端证书过程中创建的示例证书 称为 exampleclient.keystore.pkcs12,以及用于导入它的示例密码是 secret

        有关将证书导入到浏览器的信息,请参阅浏览器的文档。

      2. 在浏览器中打开 https://localhost:9993

        浏览器提示您显示与服务器相关的证书。

      3. 选择您导入到浏览器的证书。例如: exampleclient.keystore.pkcs12

        如果您使用自签名证书,浏览器会显示一个警告,表示服务器出示的证书未知。

      4. 检查证书,并验证浏览器中显示的指纹是否与密钥存储中的证书的指纹匹配。您可以使用以下命令在密钥存储中查看证书:

        语法

        /subsystem=elytron/key-store=<server_keystore_name>:read-alias(alias=<alias>)
        Copy to Clipboard Toggle word wrap

        Example

        /subsystem=elytron/key-store=exampleServerKeyStore:read-alias(alias=localhost)
        ...
        "sha-1-digest" => "5e:3e:ad:c8:df:d7:f6:63:38:05:e2:a3:a7:31:07:82:c8:c8:94:47",
        "sha-256-digest" => "11:b6:8f:00:42:e1:7f:6c:16:ef:db:08:5e:13:d9:b8:16:6e:a0:3c:2e:d4:e5:fd:cb:53:90:88:d2:9c:b1:99",
        Copy to Clipboard Toggle word wrap

    接受服务器证书后,会提示您输入登录凭证。您可以使用现有 JBoss EAP 用户的用户凭证登录。

  • 验证管理 CLI 是否受到保护。

    • 使用以下内容创建文件 wildfly-config.xml

      Example

      <?xml version="1.0" encoding="UTF-8"?>
      
      <configuration>
          <authentication-client xmlns="urn:elytron:client:1.7">
              <key-stores>
                  <key-store name="truststore" type="PKCS12">
                      <file name="${path_to_client_truststore}/client.truststore.p12"/>
                      <key-store-clear-password password="secret" />
                  </key-store>
                  <key-store name="keystore" type="PKCS12">
                      <file name="${path_to_client_truststore}/exampleclient.keystore.pkcs12"/>
                      <key-store-clear-password password="secret" />
                  </key-store>
              </key-stores>
              <ssl-contexts>
                  <ssl-context name="client-context">
                      <trust-store key-store-name="truststore"/>
                      <key-store-ssl-certificate key-store-name="keystore">
                          <key-store-clear-password password="secret" />
                      </key-store-ssl-certificate>
                      <providers>
                          <global/>
                      </providers>
                  </ssl-context>
              </ssl-contexts>
              <ssl-context-rules>
                  <rule use-ssl-context="client-context" />
              </ssl-context-rules>
          </authentication-client>
      </configuration>
      Copy to Clipboard Toggle word wrap

      注意

      您可以在 key-store-clear-password 元素中使用屏蔽的密码来代替明文处理。

    • 通过提供客户端证书来访问管理 CLI。

      $ ./jboss-cli.sh --controller=remote+https://127.0.0.1:9993 -Dwildfly.config.url=/path/to/wildfly-config.xml --connect
      Copy to Clipboard Toggle word wrap

两种客户端:客户端的 Web 浏览器和管理 CLI,信任服务器证书,并且服务器信任这两个客户端。客户端和服务器之间的通信通过 SSL/TLS。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat