1.10. Elytron 与 Remoting subsystem 集成
1.10.1. Elytron 与补救连接器集成
补救连接器由 SASL 身份验证工厂、套接字绑定和可选的 SSL 上下文指定。特别是,连接器的属性如下:
sasl-authentication-factory
- 对 SASL 身份验证工厂的引用,用于向这个连接器验证请求。有关创建此工厂的更多信息,请参阅创建 Elytron Authentication Factory。
socket-binding
- 对套接字绑定的引用,详细描述了连接器应该侦听传入请求的接口和端口。
ssl-context
- 此连接器使用的服务器端 SSL 上下文的可选引用。SSL 上下文包含要使用的服务器密钥管理器和信任管理器,应在需要 SSL 的实例上定义。
例如,可以添加连接器,如下所示,SASL_FACTORY_NAME
是已经定义的身份验证工厂,SOCKET_BINDING_NAME
是现有的套接字绑定。
/subsystem=remoting/connector=CONNECTOR_NAME:add(sasl-authentication-factory=SASL_FACTORY_NAME,socket-binding=SOCKET_BINDING_NAME)
如果需要 SSL,可以使用 ssl-context
属性来引用预配置的 server-ssl-context
,如下所示。
/subsystem=remoting/connector=CONNECTOR_NAME:add(sasl-authentication-factory=SASL_FACTORY_NAME,socket-binding=SOCKET_BINDING_NAME,ssl-context=SSL_CONTEXT_NAME)
1.10.1.1. 启用单向 SSL/TLS 使用 elytron 子系统重新移动连接器
以下 SASL 机制支持频道绑定到外部安全频道,如 SSL/TLS:
- GS2-KRB5-PLUS
- SCRAM-SHA-1-PLUS
- SCRAM-SHA-256-PLUS
- SCRAM-SHA-384-PLUS
- SCRAM-SHA-512-PLUS
要使用任何这些机制,您可以配置自定义 SASL 工厂,或修改预定义的 SASL 身份验证因素之一。可以在客户端使用 SASL 机制选择器来指定适当的 SASL 机制。
先决条件
-
配置了
密钥存储
。 -
配置了
key-manager
。 -
配置了
server-ssl-context
,它引用定义的key-manager
流程
为连接器创建
socket-binding
。以下命令定义了在端口11199
上侦听的oneWayBinding
绑定。/socket-binding-group=standard-sockets/socket-binding=oneWayBinding:add(port=11199)
创建引用 SASL 身份验证工厂、之前创建的套接字绑定和 SSL 上下文的连接器。
/subsystem=remoting/connector=oneWayConnector:add(sasl-authentication-factory=SASL_FACTORY,socket-binding=oneWayBinding,ssl-context=SSL_CONTEXT)
重要如果您同时定义了
security-realm
和ssl-context
,JBoss EAP 将使用ssl-context
提供的 SSL/TLS 配置。-
配置客户端以信任服务器证书。Elytron Client Side One Way Example 提供了一个常规的示例客户端。这个示例使用客户端
trust-store
来配置ssl-context
。
1.10.1.2. 启用双向 SSL/TLS 使用 elytron 子系统重新移动连接器
以下 SASL 机制支持频道绑定到外部安全频道,如 SSL/TLS:
- GS2-KRB5-PLUS
- SCRAM-SHA-1-PLUS
- SCRAM-SHA-256-PLUS
- SCRAM-SHA-384-PLUS
- SCRAM-SHA-512-PLUS
要使用任何这些机制,您可以配置自定义 SASL 工厂,或修改预定义的 SASL 身份验证因素之一以提供这些机制。可以在客户端使用 SASL 机制来指定适当的 SASL 机制。
先决条件
-
为客户端和服务器证书配置单独的
key-store
组件。 -
为服务器
key-store
配置了一个key-manager
。 -
为服务器
trust-store
配置了一个trust-manager
。 -
配置了
server-ssl-context
,它引用了定义的key-manager
和trust-manager
。
流程
为连接器创建
socket-binding
。以下命令定义了侦听端口11199
的twoWayBinding
绑定。/socket-binding-group=standard-sockets/socket-binding=twoWayBinding:add(port=11199)
创建引用 SASL 身份验证工厂、之前创建的套接字绑定和 SSL 上下文的连接器。
/subsystem=remoting/connector=twoWayConnector:add(sasl-authentication-factory=SASL_FACTORY,socket-binding=twoWayBinding,ssl-context=SSL_CONTEXT)
重要如果您同时定义了
security-realm
和ssl-context
,JBoss EAP 将使用ssl-context
提供的 SSL/TLS 配置。将您的客户端配置为信任服务器证书,并将其证书提供给服务器。
您需要将客户端配置为向服务器提供可信客户端证书,以完成双向 SSL/TLS 身份验证。例如,如果使用浏览器,您需要将可信证书导入到浏览器的信任存储中。Elytronon Client Side Two way Example 包括了一个常规的示例客户端。这个示例使用客户端
trust-store
和key-store
来配置ssl-context
。
现在,在 remoting connector 上启用了双向 SSL/TLS。
1.10.2. Elytron 与补救 HTTP 连接器集成
通过引用 undertow
子系统中的连接器和 elytron
子系统中定义的 SASL 身份验证工厂来指定远程 HTTP 连接。HTTP 连接器为基于 HTTP 升级的补救连接器提供配置,并连接到通过 connector-ref
属性指定的 HTTP 监听程序。
http-connector
的属性如下:
connector-ref
-
对预定义的
undertow
侦听器的引用。 sasl-authentication-factory
- 对 SASL 身份验证工厂的引用,用于向这个连接器验证请求。有关创建此工厂的更多信息,请参阅创建 Elytron Authentication Factory。
例如,可以添加 http-connector
,其中 CONNECTOR_NAME
引用 undertow
侦听器,SASL_FACTORY_NAME
是 elytron
子系统中已经定义了的身份验证工厂。
/subsystem=remoting/http-connector=HTTP_CONNECTOR_NAME:add(connector-ref=CONNECTOR_NAME,sasl-authentication-factory=SASL_FACTORY_NAME)
1.10.2.1. 在 remoting HTTP 连接器中启用单向 SSL
以下 SASL 机制支持频道绑定到外部安全频道,如 SSL/TLS:
- GS2-KRB5-PLUS
- SCRAM-SHA-1-PLUS
- SCRAM-SHA-256-PLUS
- SCRAM-SHA-384-PLUS
- SCRAM-SHA-512-PLUS
要使用上述任何机制,可以配置自定义 SASL 工厂,或者可以修改其中一个预定义的 SASL 身份验证因素来提供这些机制。可以在客户端使用 SASL 机制选择器来指定适当的 SASL 机制。
先决条件
-
配置了
密钥存储
。 -
配置了
key-manager
。 -
配置了
server-ssl-context
,它引用了定义的key-manager
。
流程
检查
https-listener
是否已配置为使用旧安全域进行 SSL 配置。/subsystem=undertow/server=default-server/https-listener=https:read-attribute(name=security-realm) { "outcome" => "success", "result" => "ApplicationRealm" }
以上命令显示
https-listener
被配置为将ApplicationRealm
传统安全 realm 用于其 SSL 配置。Undertow 无法同时引用传统的安全域和 Elytron 中的ssl-context
,因此您必须删除对旧安全域的引用。注意如果结果
未定义
,则不需要在下一步中删除对安全域的引用。删除对旧安全域的引用,并更新
https-listener
以使用 Elytron 中的ssl-context
。注意https-listener
需要始终配置了security-realm
或ssl-context
。在两个配置之间更改时,命令必须作为一个批处理来执行,如下所示。batch /subsystem=undertow/server=default-server/https-listener=https:undefine-attribute(name=security-realm) /subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=ssl-context, value=SERVER_SSL_CONTEXT) run-batch
创建 HTTP 连接器来引用 HTTPS 侦听器和 SASL 身份验证工厂。
/subsystem=remoting/http-connector=ssl-http-connector:add(connector-ref=https,sasl-authentication-factory=SASL_FACTORY)
重新加载服务器。
reload
- 配置客户端以信任服务器证书。例如,如果使用浏览器,您需要将可信证书导入到浏览器的信任存储中。
1.10.2.2. 在 remoting HTTP 连接器中启用双向 SSL/TLS
以下 SASL 机制支持频道绑定到外部安全频道,如 SSL/TLS:
- GS2-KRB5-PLUS
- SCRAM-SHA-1-PLUS
- SCRAM-SHA-256-PLUS
- SCRAM-SHA-384-PLUS
- SCRAM-SHA-512-PLUS
要使用上述任何机制,可以配置自定义 SASL 工厂,或者可以修改其中一个预定义的 SASL 身份验证因素来提供这些机制。可以在客户端使用 SASL 机制选择器来指定适当的 SASL 机制。
先决条件
-
为客户端和服务器证书配置单独的
key-store
组件。 -
为服务器
key-store
配置了一个key-manager
。 -
为服务器
trust-store
配置trust-manager
。 -
配置了
server-ssl-context
,它引用了定义的key-manager
和trust-manager
。
流程
检查
https-listener
是否已配置为使用旧安全域进行 SSL 配置。/subsystem=undertow/server=default-server/https-listener=https:read-attribute(name=security-realm) { "outcome" => "success", "result" => "ApplicationRealm" }
以上命令显示
https-listener
被配置为将ApplicationRealm
传统安全 realm 用于其 SSL 配置。Undertow 无法同时引用传统的安全域和 Elytron 中的ssl-context
,因此您必须删除对旧安全域的引用。注意如果结果
未定义
,则不需要在下一步中删除对安全域的引用。删除对旧安全域的引用,并更新
https-listener
以使用 Elytron 中的ssl-context
。注意https-listener
需要始终配置了security-realm
或ssl-context
。在两个配置之间更改时,命令必须作为一个批处理来执行,如下所示。batch /subsystem=undertow/server=default-server/https-listener=https:undefine-attribute(name=security-realm) /subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=ssl-context, value=SERVER_SSL_CONTEXT) run-batch
创建 HTTP 连接器来引用 HTTPS 侦听器和 SASL 身份验证工厂。
/subsystem=remoting/http-connector=ssl-http-connector:add(connector-ref=https,sasl-authentication-factory=SASL_FACTORY)
重新加载服务器。
reload
将您的客户端配置为信任服务器证书,并将其证书提供给服务器。
通过将客户端配置为向服务器提供可信客户端证书,完成双向 SSL/TLS 身份验证。例如,如果使用浏览器,您需要将可信证书导入到浏览器的信任存储中。
现在,在 remoting HTTP 连接器上启用了双向 SSL/TLS。
如果您同时定义了 security-realm
和 ssl-context
,JBoss EAP 将使用 ssl-context
提供的 SSL/TLS 配置。
1.10.3. Elytron 与远程出站连接器集成
远程出站连接通过出站套接字绑定和验证上下文指定。验证上下文提供连接所需的所有安全信息。特别是 remote-outbound-connection
的属性如下:
-
出站套接字-binding-ref
- 出站套接字绑定的名称,用于确定连接的目标地址和端口。 -
authentication-context
- 对验证上下文的引用,该上下文包含验证配置和定义的 SSL 上下文(如果存在,则为连接需要)。有关定义验证上下文的详情,请参考 创建身份验证上下文。
例如,可以添加 remote-outbound-connection
,其中 OUTBOUND_SOCKET_BINDING_NAME 是已经定义的 出站套接字-binding
和 AUTHENTICATION_CONTEXT_NAME,已在 elytron
子系统配置中定义的 验证上下文
。
/subsystem=remoting/remote-outbound-connection=OUTBOUND_CONNECTION_NAME:add(authentication-context=AUTHENTICATION_CONTEXT_NAME, outbound-socket-binding-ref=OUTBOUND_SOCKET_BINDING_NAME)
其他资源