2.4. 配置 SSL 上下文以使用 SSL/TLS 保护 JBoss EAP 管理接口
使用双向 SSL/TLS 保护 JBoss EAP 管理接口,以便只有提供服务器信任的证书的客户端才能连接到服务器的管理界面。
先决条件
- JBoss EAP 正在运行。
您已为客户端证书配置了服务器信任存储和信任管理器。
如需更多信息,请参阅为客户端证书配置信任存储和信任管理器。
您已配置了服务器证书。
如需更多信息,请参阅为 SSL/TLS 配置服务器证书
流程
配置服务器 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)
/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 Copied! Toggle word wrap Toggle overflow Example
/subsystem=elytron/server-ssl-context=exampleServerSSLContext:add(key-manager=exampleServerKeyManager,trust-manager=exampleTLSTrustManager,need-client-auth=true) {"outcome" => "success"}/subsystem=elytron/server-ssl-context=exampleServerSSLContext:add(key-manager=exampleServerKeyManager,trust-manager=exampleTLSTrustManager,need-client-auth=true) {"outcome" => "success"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 默认情况下,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])
/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 Copied! Toggle word wrap Toggle overflow 添加对用于 http 管理界面的 SSLContext 的引用。
语法
/core-service=management/management-interface=http-interface:write-attribute(name=ssl-context, value=<server_ssl_context_name>)
/core-service=management/management-interface=http-interface:write-attribute(name=ssl-context, value=<server_ssl_context_name>)Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 定义用于 HTTPS 管理接口套接字的套接字绑定配置。
语法
/core-service=management/management-interface=http-interface:write-attribute(name=secure-socket-binding, value=<socket_binding>)
/core-service=management/management-interface=http-interface:write-attribute(name=secure-socket-binding, value=<socket_binding>)Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新加载服务器。
reload ... Accept certificate? [N]o, [T]emporarily, [P]ermanently :
reload ... Accept certificate? [N]o, [T]emporarily, [P]ermanently :Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入
T或P以接受由服务器临时或永久提供的证书。管理 CLI 断开连接,因为它需要提供客户端证书。
验证
验证管理控制台是否受到保护。
使用 CLI 验证:
语法
curl --verbose --location --cacert <server_certificate> --cert <client_keystore>:<password> --cert-type P12 https://localhost:9993
$ curl --verbose --location --cacert <server_certificate> --cert <client_keystore>:<password> --cert-type P12 https://localhost:9993Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
curl --verbose --location --cacert server.cer --cert EAP_HOME/standalone/configuration/exampleclient.keystore.pkcs12:secret --cert-type P12 https://localhost:9993
$ 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 Copied! Toggle word wrap Toggle overflow 使用浏览器进行验证。
将客户端证书导入到您的浏览器中。生成客户端证书过程中创建的示例证书 称为
exampleclient.keystore.pkcs12,以及用于导入它的示例密码是secret。有关将证书导入到浏览器的信息,请参阅浏览器的文档。
在浏览器中打开
https://localhost:9993。浏览器提示您显示与服务器相关的证书。
选择您导入到浏览器的证书。例如:
exampleclient.keystore.pkcs12。如果您使用自签名证书,浏览器会显示一个警告,表示服务器出示的证书未知。
检查证书,并验证浏览器中显示的指纹是否与密钥存储中的证书的指纹匹配。您可以使用以下命令在密钥存储中查看证书:
语法
/subsystem=elytron/key-store=<server_keystore_name>:read-alias(alias=<alias>)
/subsystem=elytron/key-store=<server_keystore_name>:read-alias(alias=<alias>)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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",
/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 Copied! Toggle word wrap Toggle overflow
接受服务器证书后,会提示您输入登录凭证。您可以使用现有 JBoss EAP 用户的用户凭证登录。
验证管理 CLI 是否受到保护。
使用以下内容创建文件
wildfly-config.xml:Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您可以在
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
$ ./jboss-cli.sh --controller=remote+https://127.0.0.1:9993 -Dwildfly.config.url=/path/to/wildfly-config.xml --connectCopy to Clipboard Copied! Toggle word wrap Toggle overflow
两种客户端:客户端的 Web 浏览器和管理 CLI,信任服务器证书,并且服务器信任这两个客户端。客户端和服务器之间的通信通过 SSL/TLS。