6.13. 设置 TKS/TPS 共享对称密钥
共享对称密钥必须存在于 TPS 和 TKS 子系统的 NSS
数据库中。此密钥在创建 TPS 子系统时自动生成。如果 TPS 和 TKS 都在同一个 Tomcat 实例中安装,则不需要额外的设置,因为 TKS 将自动使用由 TPS 创建的密钥;但是,如果这两个子系统都位于独立的实例上,甚至不同的物理主机,您必须遵循本节中的步骤安全地将密钥传送到 TKS。
可以使用几种可能的方法在 TPS 和 TKS 之间安全地传输共享密钥:
- authomatic 方法:当将 TPS 的子系统证书保留在软件 NSS 数据库中时,此方法可以正常工作。
-
如果上述方法失败,可以使用一个回退手动方法,其中使用
caTokenUserDelegateAuthKeyEnrollment
工具在 TPS 上生成共享密钥,这会将密钥嵌套在 TPS 中,允许进行安全传输,而无需公开密钥,并将其解封到 TKS NSS 数据库中。
下面描述了 TPS 和 TKS 的一般配置,无论要用于导入密钥的方法是什么。请注意,自动方法会自动生成这些配置。
- TKS
tks.useNewSharedSecretNames=true tps.0.host=dhcp-16-206.sjc.example.com tps.0.nickname=TPS-<tps host name>-8443 sharedSecret tps.0.port=8443 tps.0.userid=,TPS-<tps host name>-8443 tps.list=0
注意当一个 TKS 连接到多个 TPS 实例时,可以扩展上述列表。
- TPS
conn.tks1.tksSharedSymKeyName=TPS-<tps host name>-8443 sharedSecret
注意主机名必须与 TKS 端配置的主机名相同。
6.13.1. 手动生成和传输共享对称密钥
这部分论述了如何手动生成和传输共享对称密钥。在自动生成和传输失败时,此方法很有用,但应该避免使用。
manual 方法由两个过程组成。第一个是在 Token Key Service 一端执行,另一个是在令牌处理系统上执行。
步骤: 手动共享 Secret 密钥方法 - TKS 端
- 在第一个系统上安装 Token Key Service。有关安装说明,请参阅 Red Hat Certificate System 规划、安装和部署指南。
停止 TKS 服务:
# pki-server stop pki-tomcat
更改到
/var/lib/pki/pki-tomcat/alias
目录,并使用caTokenUserDelegateAuthKeyEnrollment
在 TKS 上创建共享 secret 密钥。在重启新的 TKS 实例前,请确保生成共享密钥。重要caTokenUserDelegateAuthKeyEnrollment
脚本将在密钥创建过程中显示密钥的信息。确保记下此信息,因为稍后需要将其导入 TPS。#cd /var/lib/pki/pki-tomcat/alias #tkstool -T -d /var/lib/pki/pki-tomcat/tks/alias -n TPS-<tps host name>-8443 sharedSecret Generating the first session key share . . . first session key share: 792F AB89 8989 D902 9429 6137 8632 7CC4 first session key share KCV: D1B6 14FD Generating the second session key share . . . second session key share: 4CDF C8E0 B385 68EC 380B 6D5E 1C19 3E5D second session key share KCV: 1EC7 8D4B Generating the third session key share . . . third session key share: CD32 3140 25B3 C789 B54F 2C94 26C4 9752 third session key share KCV: 73D6 8633 Generating first symmetric key . . . Generating second symmetric key . . . Generating third symmetric key . . . Extracting transport key from operational token . . . transport key KCV: A8D0 97A2 Storing transport key on final specified token . . . Naming transport key "sharedSecret" . . . Successfully generated, stored, and named the transport key!
在 TKS 中配置新密钥:
tks.useNewSharedSecretNames=true tps.0.host=dhcp-16-206.sjc.redhat.com tps.0.nickname=TPS-<tps host name>-8443 sharedSecret tps.0.port=8443 tps.0.userid=TPS-<tps host name>-8443 sharedSecret tps.list=0
启动 TKS:
#pki-server start pki-tomcat
流程 :手动共享 secret 密钥方法 - TPS 侧
- 在第二个系统上安装令牌处理系统。有关安装说明,请参阅 Red Hat Certificate System 规划、安装和部署指南。
停止 TPS 服务:
# pki-server stop pki-tomcat
进入
/var/lib/pki/pki-tomcat/alias
目录,并使用caTokenUserDelegateAuthKeyEnrollment
将共享密钥导入到 NSS 软件令牌中:# cd /var/lib/pki/pki-tomcat/alias # tkstool -I -d . -n TPS-<tps host name>-8443 sharedSecret
此时,脚本会提示您输入在上述流程生成和嵌套共享密钥时显示的会话密钥共享共享密钥。
在 TPS 中配置共享 secret:
conn.tks1.tksSharedSymKeyName=TPS-<tps host name>-8443 sharedSecret
启动 TPS 服务:
# pki-server start pki-tomcat