1.2.10. 使用传统核心管理身份验证为管理接口设置双向 SSL/TLS
双向 SSL/TLS 身份验证(也称为客户端身份验证 )使用 SSL/TLS 证书验证客户端和服务器。这与为单向 SSL/TLS 部分的 Configure the Management Interfaces 的不同之处在于,客户端和服务器都有证书。这不仅保证了它所表示的服务器,而且客户端也知道它的位置。
在本节中,使用以下惯例:
- HOST1
-
JBoss 服务器主机名.例如:
jboss.redhat.com。 - HOST2
-
客户端的合适名称。例如:
myclient。请注意,这不一定是实际主机名。 - CA_HOST1
-
用于 HOST1 证书的 DN(区分名称)。例如:
cn=jboss,dc=redhat,dc=com。 - CA_HOST2
-
用于 HOST2 证书的 DN(区分名称)。例如:
cn=myclient,dc=redhat,dc=com。
先决条件
如果使用密码库来存储密钥存储和信任存储密码(建议使用密码库),则应已创建密码库。有关密码库的更多信息,请参阅红帽 JBoss 企业应用平台 7 安全架构指南中 的密码 Vault 部分和密码 Vault 系统部分。
红帽建议显式禁用 SSLv2、SSLv3 和 TLSv1.0,以便在所有受影响的软件包中明确禁用 TLSv1.1 或 TLSv1.2。
生成密钥存储。
$ keytool -genkeypair -alias HOST1_alias -keyalg RSA -keysize 1024 -validity 365 -keystore HOST1.keystore.jks -dname "CA_HOST1" -keypass secret -storepass secret $ keytool -genkeypair -alias HOST2_alias -keyalg RSA -keysize 1024 -validity 365 -keystore HOST2.keystore.jks -dname "CA_HOST2" -keypass secret -storepass secret导出证书。
$ keytool -exportcert -keystore HOST1.keystore.jks -alias HOST1_alias -keypass secret -storepass secret -file HOST1.cer $ keytool -exportcert -keystore HOST2.keystore.jks -alias HOST2_alias -keypass secret -storepass secret -file HOST2.cer将证书导入到相反的信任存储中。
$ keytool -importcert -keystore HOST1.truststore.jks -storepass secret -alias HOST2_alias -trustcacerts -file HOST2.cer $ keytool -importcert -keystore HOST2.truststore.jks -storepass secret -alias HOST1_alias -trustcacerts -file HOST1.cer定义证书副本.
在服务器(
host.xml 或)的配置中定义 CertificateRealm,并将接口指向该服务器。这可以使用以下命令完成:standalone.xml/core-service=management/security-realm=CertificateRealm:add() /core-service=management/security-realm=CertificateRealm/server-identity=ssl:add(keystore-path=/path/to/HOST1.keystore.jks, keystore-password=secret,alias=HOST1_alias) /core-service=management/security-realm=CertificateRealm/authentication=truststore:add(keystore-path=/path/to/HOST1.truststore.jks,keystore-password=secret)将
http更改为新 CertificateRealm。-interface 的 security-realm/core-service=management/management-interface=http-interface:write-attribute(name=security-realm,value=CertificateRealm)为 CLI 添加 SSL/TLS 配置。
重要除了添加双向 SSL/TLS 外,还要将管理接口配置为绑定到 HTTPS。 详情请查看授权为带有传统核心管理身份验证的单向 SSL/TLS 配置管理接口的部分中确保管理接口绑定至 HTTPS。
为 CLI 添加 SSL/TLS 配置,它将
EAP_HOME/bin/jboss-cli.xml用作设置文件。要以纯文本形式存储密钥存储和信任存储密码,请编辑
EAP_HOME/bin/jboss-cli.xml,并使用变量的适当值添加 SSL/TLS 配置:示例:jboss-cli.xml Storing Keystore 和 Truststore Passwords in Plain Text
<ssl> <alias>HOST2_alias</alias> <key-store>/path/to/HOST2.keystore.jks</key-store> <key-store-password>secret</key-store-password> <trust-store>/path/to/HOST2.truststore.jks</trust-store> <trust-store-password>secret</trust-store-password> <modify-trust-store>true</modify-trust-store> </ssl>要使用密码库中存储的密钥存储和信任存储密码,您需要将 vault 配置和适当的 vault 值添加到
EAP_HOME/bin/jboss-cli.xml:示例:jboss-cli.xml Storing Keystore 和 Truststore 密码(Password Vault)
<ssl> <vault> <vault-option name="KEYSTORE_URL" value="path-to/vault/vault.keystore"/> <vault-option name="KEYSTORE_PASSWORD" value="MASK-5WNXs8oEbrs"/> <vault-option name="KEYSTORE_ALIAS" value="vault"/> <vault-option name="SALT" value="12345678"/> <vault-option name="ITERATION_COUNT" value="50"/> <vault-option name="ENC_FILE_DIR" value="EAP_HOME/vault/"/> </vault> <alias>HOST2_alias</alias> <key-store>/path/to/HOST2.keystore.jks</key-store> <key-store-password>VAULT::VB::cli_pass::1</key-store-password> <key-password>VAULT::VB::cli_pass::1</key-password> <trust-store>/path/to/HOST2.truststore.jks</trust-store> <trust-store-password>VAULT::VB::cli_pass::1</trust-store-password> <modify-trust-store>true</modify-trust-store> </ssl>
如果您 同时 定义了 security-realm 和 ssl-context,JBoss EAP 将使用由 ssl-context 提供的 SSL/TLS 配置。