4.6.2.3. 配置双向 TLS
本节中的步骤演示了如何配置双向传输层安全(TLS)来保护 broker-client 连接的安全。
在双向 TLS 中,代理和客户端都显示证书。代理和客户端使用这些证书在有时称为相互身份验证的过程中 相互验证。
先决条件
- 在客户端使用主机名验证时,您应该了解代理证书生成的要求。如需更多信息,请参阅 第 4.6.2.1 节 “为主机名验证配置代理证书”。
步骤
为代理密钥存储生成自签名证书。
$ keytool -genkey -alias broker -keyalg RSA -keystore ~/broker.ks
从代理密钥存储中导出证书,以便它可以与客户端共享。以 Base64 编码的
.pem
格式导出证书。例如:$ keytool -export -alias broker -keystore ~/broker.ks -file ~/broker_cert.pem
在客户端,创建导入代理证书的客户端信任存储。
$ keytool -import -alias broker -keystore ~/client.ts -file ~/broker_cert.pem
在客户端上,为客户端密钥存储生成自签名证书。
$ keytool -genkey -alias broker -keyalg RSA -keystore ~/client.ks
在客户端上,从客户端密钥存储中导出证书,以便它可以与代理共享。以 Base64 编码的
.pem
格式导出证书。例如:$ keytool -export -alias broker -keystore ~/client.ks -file ~/client_cert.pem
创建导入客户端证书的代理信任存储。
$ keytool -import -alias broker -keystore ~/broker.ts -file ~/client_cert.pem
以管理员身份登录 OpenShift Container Platform。例如:
$ oc login -u system:admin
切换到包含代理部署的项目。例如:
$ oc project my-openshift-project
创建用于存储 TLS 凭据的机密。例如:
$ oc create secret generic my-tls-secret \ --from-file=broker.ks=~/broker.ks \ --from-file=client.ts=~/broker.ts \ --from-literal=keyStorePassword=<password> \ --from-literal=trustStorePassword=<password>
注意在生成机密时,OpenShift 要求您同时指定密钥存储和信任存储。信任存储密钥通常命名为
client.ts
。对于代理和客户端之间的双向 TLS,您必须生成包括代理信任存储的 secret,因为这会保存客户端证书。因此,在前面的步骤中,您为client.ts
键指定的值实际上是 代理 信任存储文件。将 secret 链接到安装 Operator 时创建的服务帐户。例如:
$ oc secrets link sa/amq-broker-operator secret/my-tls-secret
在安全接受或连接器的
sslSecret
参数中指定 secret 名称。例如:spec: ... acceptors: - name: my-acceptor protocols: amqp,openwire port: 5672 sslEnabled: true sslSecret: my-tls-secret expose: true connectionsAllowed: 5 ...