6.2. 为密钥管理器服务创建 secret
以下步骤使用 Luna HSM 的密钥、证书和配置来创建两个 secret。一个名为 login_secret,其中包含您的 HSM 分区密码。其他 secret 称为 luna_data_secret,其中包含您的证书、密钥和 chrystoki.conf 配置文件。Red Hat OpenShift Container Platform 环境中需要这些 secret,以启用 Key Manager 服务和 HSM 之间的安全通信。您可以创建一个 Ansible playbook 来标识要复制到的客户端证书。
先决条件
- Luna HSM 的客户端证书。如需更多信息,请参阅 比较 NTLS 和 STC。
-
您必须在 Luna HSM 上禁用
ntls ipcheck,如需更多信息,请参阅 ntls ipcheck。
流程
将 Luna 证书和密钥放在
/opt/luna目录树中:$ cp <luna_client_name>.pem /opt/luna $ cp <luna_client_name>Key.pem /opt/luna-
将
<luna_client_name> 替换为 Luna 证书的名称。
-
将
从 HSM 设备下载服务器证书:
$ scp -O <hsm-device.examle.com:server.pem> /opt/luna/可选:如果您有多个 HSM for HA,请从 HSM 中获取每个证书,并将其串联为一个文件:
$ scp -O <hsm-device-01.examle.com:server-01.pem> /opt/luna/ $ scp -O <hsm-device-02.examle.com:server-02.pem> /opt/luna/ $ cat /opt/luna/cert/server-01.pem > /opt/luna/CAFile.pem $ cat /opt/luna/cert/server-02.pem >> /opt/luna/CAFile.pem更新您的
Crystoki.conf文件,使其类似于如下:注意LunaClient-Minimal tarball 的内容提取到 Key Manager 容器的
/usr/local/luna/目录中。您必须更新Crystoki.conf文件中的路径以匹配此示例。Chrystoki2 = { LibUNIX = /usr/local/luna/libs/64/libCryptoki2.so; LibUNIX64 = /usr/local/luna/libs/64/libCryptoki2.so; } Luna = { DefaultTimeOut = 500000; PEDTimeout1 = 100000; PEDTimeout2 = 200000; PEDTimeout3 = 10000; KeypairGenTimeOut = 2700000; CloningCommandTimeOut = 300000; CommandTimeOutPedSet = 720000; } CardReader = { RemoteCommand = 1; } Misc = { PE1746Enabled = 0; ToolsDir = ./bin/64; PartitionPolicyTemplatePath = ./ppt/partition_policy_templates; ProtectedAuthenticationPathFlagStatus = 0; MutexFolder = ./lock; } LunaSA Client = { ReceiveTimeout = 20000; SSLConfigFile = /usr/local/luna/openssl.cnf; ClientPrivKeyFile = /usr/local/luna/<luna_client_name>Key.pem; ClientCertFile = /usr/local/luna/<luna_client_name>.pem; ServerCAFile = /usr/local/luna/CAFile.pem; NetClient = 1; TCPKeepAlive = 1; ServerName00 = <ip_address>; ServerPort00 = 1792; ServerHtl00 = 0; }-
将
<luna_client_name> 替换为 Luna 证书的名称。 -
将
<ip_address> 替换为 Luna HSM 的 IP 地址。
-
将
可选:如果要配置 HA,您必须为每个 HSM 的 IP 地址包括额外的条目,以及
VirtualToken、HASynchronize、和HAConfigurations参数的配置:... ServerName00 = <ip_address>; ServerPort00 = 1792; ServerHtl00 = 0; ServerName01 = <ip_address>; ServerPort01 = 1792; ServerHtl01 = 0; } VirtualToken = { VirtualToken00Label = myHAGroup; VirtualToken00SN = <virtual_token_sn>; VirtualToken00Members = <virtual_token_member>,<virtual_token_member>; } HASynchronize = { myHAGroup = 1; } HAConfiguration = { haLogStatus = enabled; }-
将
<virtual_token_sn> 替换为第一个分区的序列号,并带有一个 1。例如,对于分区545000014,使用值1545000014 -
将
<virtual_token_member> 替换为您使用的 HSM 的分区序列号。
-
将
将
chrystoki.conf配置文件移到/opt/luna:$ mv chrystoki.conf /opt/luna创建名为
create-luna-secrets.yaml的 Ansible playbook,以创建所需的 secret:--- - name: Create secrets with the HSM certs and hsm-login credentials ansible.builtin.include_role: name: rhoso_luna_hsm tasks_from: create_secrets vars: luna_client_name: <luna_client_name>1 chrystoki_conf_src: "/opt/luna/chrystoki.conf" luna_server_cert_src: "/opt/luna/<server.pem>"2 luna_client_cert_src: "/opt/luna/" luna_partition_password: "<my_partion_password>"3 kubeconfig_path: "<kubeconfig_path>"4 oc_dir: "<path_to_oc>"5 luna_data_secret: "luna_data_secret" login_secret: "login_secret" ---运行 Ansible play 书:
ansible-playbook create-luna-secrets.yaml