第 2 章 为管理界面和应用程序启用双向 SSL/TLS
SSL/TLS 或传输层安全(TLS)是基于证书的安全协议,用于保护通过网络通信的两个实体之间的数据传输。如果您希望服务器只与可信客户端连接时,请使用双向 SSL/TLS。
双向 SSL/TLS 提供以下安全功能:
- 身份验证
- 在单向 SSL/TLS 中,服务器向客户端提供证书以验证其自身。在双向 SSL/TLS 中,客户端还向服务器提供证书来验证客户端。因此,双向 SSL/TLS 也称为 mutual 身份验证。
- 保密性
- 在客户端和服务器间传输的数据会被加密。
- 数据完整性
-
TLS 协议提供具有安全哈希功能的数据完整性,用于消息身份验证代码(MAC)计算。您可以使用 SSL 上下文资源的 cipher-suite-
filter 和属性为连接强制实施特定的算法和哈希功能。cipher-suite-names
如需更多信息,请参阅 server-ssl-context 属性。
您可以使用双向 SSL/TLS 保护 JBoss EAP 管理接口和部署的应用程序。
要使用双向 SSL/TLS 保护管理接口,请使用以下流程:
- 从客户端的证书颁发机构(CA)获取证书。另外,对于非生产环境,您可以按照以下步骤生成自签名证书: 生成客户端证书。
- 为客户端证书配置信任存储和信任管理器
- 为双向 SSL/TLS 配置服务器证书。
- 配置 SSL 上下文以使用 SSL/TLS 保护 JBoss EAP 管理接口
要使用双向 SSL/TLS 保护在 JBoss EAP 上部署的应用程序,请使用以下流程:
- 从客户端的证书颁发机构(CA)获取证书。另外,对于非生产环境,您可以按照以下步骤生成自签名证书: 生成客户端证书。
- 为客户端证书配置信任存储和信任管理器
- 为双向 SSL/TLS 配置服务器证书
- 配置 SSL 上下文,以使用 SSL/TLS 保护在 JBoss EAP 上部署的应用程序
您可以按照在 Elytron 中配置证书撤销检查中的步骤来配置证书撤销检查。
2.1. 生成客户端证书 复制链接链接已复制到粘贴板!
在 CLI 中使用 keytool 命令生成自签名客户端证书,以测试和开发双向 SSL/TLS 配置。
不要在生产环境中使用自签名证书。仅使用证书颁发机构(CA)签名的证书。
流程
生成客户端证书。
语法
keytool -genkeypair -alias <keystore_alias> -keyalg <algorithm> -keysize <key_size> -validity <validity_in_days> -keystore <keystore_name> -dname "<distinguished_name>" -keypass <private_key_password> -storepass <keystore_password>
$ keytool -genkeypair -alias <keystore_alias> -keyalg <algorithm> -keysize <key_size> -validity <validity_in_days> -keystore <keystore_name> -dname "<distinguished_name>" -keypass <private_key_password> -storepass <keystore_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
keytool -genkeypair -alias exampleClientKeyStore -keyalg RSA -keysize 2048 -validity 365 -keystore exampleclient.keystore.pkcs12 -dname "CN=client" -keypass secret -storepass secret
$ keytool -genkeypair -alias exampleClientKeyStore -keyalg RSA -keysize 2048 -validity 365 -keystore exampleclient.keystore.pkcs12 -dname "CN=client" -keypass secret -storepass secretCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将客户端证书导出到文件。
语法
keytool -exportcert -keystore <keystore_name> -alias <keystore_alias> -keypass <private_key_password> -storepass <keystore_password> -file <file_path>
$ keytool -exportcert -keystore <keystore_name> -alias <keystore_alias> -keypass <private_key_password> -storepass <keystore_password> -file <file_path>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
keytool -exportcert -keystore exampleclient.keystore.pkcs12 -alias exampleClientKeyStore -keypass secret -storepass secret -file EAP_HOME/standalone/configuration/client.cer Certificate stored in file <EAP_HOME/standalone/configuration/client.cer>
$ keytool -exportcert -keystore exampleclient.keystore.pkcs12 -alias exampleClientKeyStore -keypass secret -storepass secret -file EAP_HOME/standalone/configuration/client.cer Certificate stored in file <EAP_HOME/standalone/configuration/client.cer>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
现在,您可以使用生成的客户端证书在服务器中配置服务器信任存储和信任管理器。如需更多信息,请参阅为客户端证书配置信任存储和信任管理器。