1.4.2. 使用 Elytron
1.4.2.1. 使用 Elytron 子系统为应用启用单向 SSL/TLS 复制链接链接已复制到粘贴板!
在 JBoss EAP 中,您可以使用 JBoss EAP 管理 CLI 或管理控制台为已部署的应用启用单向 SSL/TLS。
在管理 CLI 中,可通过两种方式启用单向 SSL/TLS:
- 使用 security 命令.
-
使用
elytron子系统命令.
使用安全命令
security enable-ssl-http-server 命令可用于为已部署的应用启用单向 SSL/TLS。
示例:向导使用
security enable-ssl-http-server --interactive
Please provide required pieces of information to enable SSL:
Key-store file name (default default-server.keystore): keystore.jks
Password (blank generated): secret
What is your first and last name? [Unknown]: localhost
What is the name of your organizational unit? [Unknown]:
What is the name of your organization? [Unknown]:
What is the name of your City or Locality? [Unknown]:
What is the name of your State or Province? [Unknown]:
What is the two-letter country code for this unit? [Unknown]:
Is CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown correct y/n [y]?
Validity (in days, blank default): 365
Alias (blank generated): localhost
Enable SSL Mutual Authentication y/n (blank n): n
SSL options:
key store file: keystore.jks
distinguished name: CN=localhost, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
password: secret
validity: 365
alias: localhost
Server keystore file keystore.jks, certificate file keystore.pem and keystore.csr file
will be generated in server configuration directory.
Do you confirm y/n: y
执行命令后,管理 CLI 将重新加载服务器。
现在应用程序启用了单向 SSL/TLS。
使用 Elytron 子系统命令
在 JBoss EAP 中,您可以使用 elytron 子系统和 undertow 子系统,为已部署的应用启用单向 SSL/TLS。
在 JBoss EAP
中配置密钥存储./subsystem=elytron/key-store=httpsKS:add(path=/path/to/keystore.jks, credential-reference={clear-text=secret}, type=JKS)如果密钥存储文件尚不存在,使用以下命令来生成示例密钥对:
/subsystem=elytron/key-store=httpsKS:generate-key-pair(alias=localhost,algorithm=RSA,key-size=1024,validity=365,credential-reference={clear-text=secret},distinguished-name="CN=localhost") /subsystem=elytron/key-store=httpsKS:store()配置一个
key-manager,以引用您的密钥存储。/subsystem=elytron/key-manager=httpsKM:add(key-store=httpsKS, algorithm="SunX509", credential-reference={clear-text=secret})重要您需要了解您使用的 JDK 提供了哪些关键管理器算法。例如,使用 SunJSSE 的 JDK 提供
PKIX和SunX509算法。上面的示例命令将
SunX509用于密钥管理器算法。配置引用您的
key。-manager 的 server-ssl-context/subsystem=elytron/server-ssl-context=httpsSSC:add(key-manager=httpsKM, protocols=["TLSv1.2"])重要您需要确定您要支持的 SSL/TLS 协议。上面的示例命令使用
TLSv1.2。您可以使用cipher-suite-filter参数指定允许哪些密码套件,以及使用-cipher-suites-order参数来执行服务器密码套件顺序。使用-cipher-suites-order属性默认设置为true。这与旧的安全子系统行为不同,后者默认为遵从客户端密码套件顺序。警告红帽建议显式禁用 SSLv2、SSLv3 和 TLSv1.0,以便在所有受影响的软件包中明确禁用 TLSv1.1 或 TLSv1.2。
检查并查看
https-listener是否配置为使用传统安全域进行其 SSL 配置。/subsystem=undertow/server=default-server/https-listener=https:read-attribute(name=security-realm) { "outcome" => "success", "result" => "ApplicationRealm" }以上命令显示
https-listener已配置为使用ApplicationRealm传统安全域进行 SSL 配置。Undertow 无法同时引用 Elytron 中的传统安全域和ssl-context,因此您必须删除对旧安全域的引用。注意如果未定义结果,则无需在下一步中移除对安全域的引用。移除对传统安全域的引用,并将
https-listener更新为从 Elytron 使用ssl-context。注意HTTPS-listener必须始终配置security-realmorssl-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=httpsSSC) run-batch重新加载服务器:
reload现在应用程序启用了单向 SSL/TLS。
您可以使用 disable- ssl-http-server 命令为已部署的应用程序禁用 单向 SSL/TLS。
security disable-ssl-http-server
此命令不会删除 Elytron 资源。它将系统配置为使用 ApplicationRealm 传统安全域进行 SSL 配置。
使用管理控制台
您可以使用管理控制台中的 SSL 向导配置 undertow 子系统,为应用启用 SSL。
访问向导:
- 访问管理控制台。如需更多信息,请参见《JBoss EAP 配置指南 https://access.redhat.com/documentation/en-us/red_hat_jboss_enterprise_application_platform/7.3/html-single/configuration_guide/#management_console_overview 》中的管理控制台部分。
-
导航到 Configuration
Subsystems Web(Undertow) Server。 - 单击要配置的服务器的名称。
- 单击 View。
-
导航到 Listener
HTTPS Listener。 选择要为其启用 SSL 的监听程序,然后单击 Enable SSL 以启动向导。
向导会引导您完成以下场景以启用 SSL:
- 您需要创建证书存储并生成自签名证书。
- 您需要从 Let 的加密认证机构获得证书。
- 您已在文件系统中拥有证书存储,但没有密钥存储配置。
- 您已有使用有效证书存储的密钥存储配置。
使用向导时,您可以选择为相互身份验证创建一个信任存储。