本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
使用密钥管理服务KMS(Key Management Service)的硬件密钥管理实例时,需要连接加密服务密码机集群,由密码机集群实现数据自动同步、负载均衡以及数据高可用性。本文介绍如何配置KMS硬件密钥管理实例的密码机集群。
架构示例
KMS集成密码机集群可以兼顾密钥管理的灵活性与硬件级安全保障,满足国密或FIPS 140-2 Level 3的合规要求。KMS提供密钥管理,确保密钥的生命周期得到严格管控,降低使用密码机的复杂度,HSM通过硬件级的安全保障设施,安全存储密钥材料。双方通信采用TLS双向认证加密通道,确保传输安全。
由于密码机管理工具仅支持安装在阿里云ECS,因此您必须在主密码机所属的VPC子网内部署一台ECS服务器,用于连接主密码机进行密码机相关配置。您也可以使用本地终端进行配置,但需确保与密码机网络打通。
注意事项
KMS硬件密钥管理实例关联的密码机仅支持通用密码机。
密码机、KMS硬件密钥管理实例、ECS实例必须属于同一个地域、且属于同一个VPC。
管理中国内地密码机时,ECS需要为Windows操作系统。管理非中国内地密码机时,ECS需要为CentOS 8或 Alibaba Cloud Linux操作系统。
密码机支持的地域和可用区
中国内地
地域
地域ID
可用区
华东1(杭州)
cn-hangzhou
可用区A、可用区G
华东2(上海)
cn-shanghai
可用区A、可用区B、可用区F
华北2(北京)
cn-beijing
可用区A、可用区F、可用区K
华南1(深圳)
cn-shenzhen
可用区A、可用区E
西南1(成都)
cn-chengdu
可用区A、可用区B
非中国内地
地域
地域ID
可用区
中国香港
cn-hongkong
可用区B、可用区C
新加坡
ap-southeast-1
可用区A、可用区B
马来西亚(吉隆坡)
ap-southeast-3
可用区A、可用区B
前提条件
已创建VPC,并在两个可用区内分别创建了一个交换机。具体操作,请参见创建专有网络和交换机。
已创建ECS实例,且ECS实例与主密码机实例在同一个VPC。具体操作,请参见使用向导创建实例。
说明操作中国内地密码机时,ECS需要为Windows操作系统。操作非中国内地密码机时,ECS需要为CentOS 8或 Alibaba Cloud Linux操作系统。
本文以ECS实例为例进行介绍,您也可以使用本地终端管理密码机。使用本地终端时,请通过VPN或物理专线使本地终端连接到密码机实例所属的VPC网络。具体操作,请参见客户端远程连接VPC或通过物理专线实现本地IDC与云上VPC互通。
配置中国内地密码机集群
步骤一:购买密码机集群
集群即将处于同一地域不同可用区、用于相同业务的一组密码机实例关联起来,进行统一管理,为业务应用提供密码计算的高可用性、负载均衡以及横向扩展的能力。
登录加密服务管理控制台,在顶部菜单栏,选择目标地域。
在虚拟密码机实例页签,单击创建密码机实例。
在加密服务购买页面,参考下表配置信息,单击立即购买并完成支付。
配置项
说明
地域
选择密码机实例的地域。
重要密码机实例只能在VPC中使用,且必须与您的VPC、KMS硬件密钥管理实例的地域相同。
密码服务类型
选择通用服务器密码机GVSM。
部署模式
选择双可用区。
集群名称
长度为1~24个字符,以英文大小写字母、中文或数字开头,可包含数字、下划线(_)或中划线(-)。
专有网络
选择密码机所属的VPC。
加入白名单
选择是。此时HSM会将VPC网段加入到集群白名单中,使得该VPC下的IP均可访问密码机集群。
交换机
选择2~4个交换机,交换机的可用区不能重复。
数据备份恢复
支持密码机实例备份和恢复功能,确保数据安全持久性。每个备份可以备份一个密码机数据。
备份镜像在密码机实例释放后将保留90天,期满自动删除。此外,提供镜像跨地域复制功能,以增强灾难恢复能力。详细介绍,请参见数据备份恢复。
镜像扩展
备份中的镜像数量,每个镜像可以备份一次密码机数据。
密码机实例每日的北京时间00:00自动备份一次,生成一个镜像。当镜像数量达到上限时,系统将自动覆盖最早生成的镜像。
购买数量
默认为2,无需修改。
购买时长
选择购买的有效服务时间。
为了防止加密服务到期未及时续费而导致的密钥永久性丢失,建议您购买时选择到期自动续费。当您选择到期自动续费后,阿里云会在服务到期前9个自然日从您购买密码机时使用的支付账户自动扣款,为了防止扣费失败,请确保您的支付账户余额充足。
仔细阅读服务协议,单击去支付,然后单击订购,完成购买。
购买成功后,您可以在虚拟密码机实例页面查看密码机实例,密码机集群将在约5分钟后完成创建。
步骤二:为主密码机实例配置双向TLS认证
为了确保安全性,您需要为主密码机配置双向TLS认证。
访问下载链接,下载证书文件生成工具(dkms_cert_tool)。
将下载的文件解压后,运行证书文件生成工具生成CA证书、客户端证书和服务端证书。
说明后续在密钥管理服务控制台启用KMS硬件密钥管理实例时,也会用到这些证书和私钥,因此请您妥善保管。
工具的运行环境没有限制,可以是本地计算机、ECS实例或其他满足工具运行条件的环境。
工具仅为阿里云提供的辅助性工具,如果您有相关技术能力可以自己生成这些证书文件,则无需使用本工具。
工具运行操作系统
说明
Windows系统
方式一:在Windows文件夹,双击鼠标左键运行hsm_certificate_generate.exe文件,在certs文件夹获取证书文件。
说明该方式生成的PKCS12格式证书文件(后缀为.p12)和CA私钥文件(后缀为.key)的口令为默认值12345678,如果您需要指定口令,请使用方式二。
方式二:切换到Windows文件夹所在路径,然后运行以下命令,在certs文件夹获取证书文件。
./hsm_certificate_generate -dir ./certs -pswd 12345678
-dir
用于指定生成证书文件的保存路径,-pswd
用于指定生成的PKCS12格式证书文件(后缀为.p12)和CA私钥文件(后缀为.key)的口令。
Linux系统
切换到Linux文件夹所在路径,然后运行以下命令,在certs文件夹获取证书文件。
./hsm_certificate_generate -dir ./certs -pswd 12345678
-dir
用于指定生成证书文件的保存路径,-pswd
用于指定生成的PKCS12格式证书文件(后缀为.p12)和CA私钥文件(后缀为.key)的口令。macOS系统
切换到darwin文件夹所在路径,然后运行以下命令,在certs文件夹获取证书文件。
./hsm_certificate_generate -dir ./certs -pswd 12345678
-dir
用于指定生成证书文件的保存路径,-pswd
用于指定生成的PKCS12格式证书文件(后缀为.p12)和CA私钥文件(后缀为.key)的口令。运行成功后,将在certs文件夹中生成下列文件:
certs/ ├── client.p12 (PKCS12格式客户端证书,包含客户端证书以及私钥) ├── client.pem (PEM格式客户端证书) ├── rootca.key (CA私钥) ├── rootca.pem (PEM格式CA证书) ├── server.p12 (PKCS12格式服务端证书) └── server.pem (PEM格式服务端证书)
在ECS实例上安装密码机实例管理工具。
重要密码机实例管理工具只支持在Windows系统运行。
单击主密码机实例的规格列的
图标,下载密码机实例管理工具。
解压获取到的密码机软件包,找到
PKIManager-X.X.X.X.exe
然后上传到ECS实例上。具体操作,请参见使用远程桌面或Windows APP向Windows实例传输文件。
使用密码机实例管理工具配置主密码机。
在ECS实例上使用密码机实例管理工具连接主密码机GVSM。
双击
PKIManager-X.X.X.X.exe
打开密码机实例管理工具,选择系统>TCP/IP连接。在TCP/IP连接对话框,输入主密码机的IP地址和端口号(固定为8020)。
IP地址请在控制台此处查看。
单击连接,在弹出的PKIManager对话框单击确定,然后单击登录。
说明登录成功后,建议您注册管理员账号,使用管理员账号登录以获得更高的安全性。具体操作,请参见随密码机实例管理工具下载的GVSM用户管理手册中的2.1.3. 注册管理员、2.1.2. 管理员登录。
使用密码机实例管理工具完成如下配置。
配置项
操作步骤
配置客户端证书(
client.pem
)选择密钥管理 > 客户端管理。
在客户端证书管理对话框,单击导入证书。
在导入证书对话框,证书类型选择国际TLS客户端RSA证书[pem],然后选择证书文件生成工具生成的客户端证书(
client.pem
),单击导入。
配置服务端证书(
server.p12
)选择密钥管理 > 服务端管理。
在服务端p12证书管理对话框,单击导入证书。
在导入证书对话框,证书类型选择国际TLS服务端RSA证书[p12],然后选择证书文件生成工具生成的服务端证书(
server.p12
),输入证书口令(即您在生成证书文件时设置的口令,如果您未设置,默认为12345678)。单击导入。
配置主密码机GVSM设备端口属性
选择设备管理 > 主机端口属性。
在主机端口属性对话框,配置以下参数:
Socket KeepAlive时间:60。
消息报文头长度:0。
消息报文编码格式:ASCII。
主机服务通讯方式:双向通讯。
主机服务通讯协议:TLSv1.2。
单击重置。
单击立即重启,然后单击确定。
步骤三:同步集群数据
根据集群同步方式,确定是否需要同步集群中密码机的数据。
集群类型为自动同步集群
集群内密码机数据会自动同步,您无需同步集群数据。
集群类型为手动同步集群
第一次创建并激活集群后,您需要将集群的主密码机数据手动同步到集群的子密码机实例。当您对集群进行扩容时,集群数据会自动同步到新添加的密码机实例。
单击操作列的同步集群,将主密码机数据同步到子密码机。
同步过程中集群的状态为同步中。
集群同步结束后,查看密码机摘要是否一致。
请在密码机详情页面查看摘要,如果两台密码机摘要信息完全一致,表示您已经完成密码机集群配置。如果摘要信息不一致请重复同步集群数据的操作,若摘要信息仍不一致,请联系我们。
配置非中国内地密码机集群
步骤一:购买2个密码机实例
登录加密服务管理控制台,在顶部菜单栏,选择目标地域。
在虚拟密码机实例页签,单击创建密码机实例。
在加密服务购买页面,参考下表配置信息,单击立即购买。
配置项
说明
地域
选择密码机实例的地域。
重要密码机实例只能在VPC中使用,且必须与您的VPC、KMS硬件密钥管理实例的地域相同。
密码服务类型
选择通用密码机。
部署模式
选择双可用区,具体可用区由HSM分配。
数据备份恢复
每个备份可以备份一个密码机数据。开启后需要选择镜像数量,每个镜像表示可以备份一次密码机数据。详细介绍,请参见数据备份恢复。
购买数量
默认为2,无需修改。
购买时长
购买的有效服务时间。建议您选择与KMS硬件密钥管理实例相同的购买时长。
说明建议您购买时选择到期自动续费,防止加密服务到期未及时续费而导致的密钥永久性丢失。您选择到期自动续费后,阿里云会在服务到期前9个自然日从您购买密码机时使用的支付账户自动扣款。
仔细阅读服务协议,单击去支付,然后单击订购,完成购买。
步骤二:启用密码机实例
只需启用主密码机,无需启用子密码机。
访问加密服务控制台的虚拟密码机实例页面,在顶部菜单栏,选择目标地域。
启用主密码机。
在密码机实例配置对话框,配置密码机实例,然后单击确定。配置成功后,密码机实例的状态变为已启用。
配置项
说明
所属的VPC网络ID
选择密码机实例需要绑定的VPC,和KMS硬件密钥管理实例所属的VPC必须保持一致。
所属的VPC子网
选择密码机实例所属的VPC子网IP,即选择VPC下的其中一个交换机。
分配私网IP地址
为密码机实例配置一个私网IP地址。
重要私网IP地址必须是所属的VPC子网网段中的IP地址,否则配置将会失败。
末位为253、254、255的IP地址为系统保留地址,请勿使用。
设置密码机实例白名单
本场景下无需配置。
由于在后续创建并激活集群操作中会设置密码机集群的白名单,而集群的白名单优先级高于集群中密码机实例的白名单, 因此本场景下无需配置。
步骤三:创建并激活集群
集群即将处于同一地域不同可用区、用于相同业务的一组密码机实例关联起来,进行统一管理,为业务应用提供密码计算的高可用性、负载均衡以及横向扩展的能力。
使用主密码机创建集群,然后添加子密码机。
访问加密服务控制台的虚拟密码机实例页面,在顶部菜单栏,选择目标地域。
定位到主密码机实例,单击操作列的创建集群。
在创建并激活集群面板,完成①创建集群,然后单击下一步 。
配置项
说明
集群名称
自定义集群的名称。名称不能重复且长度不允许超过24个字符。
设置集群访问白名单
允许访问集群的IP地址。
您可以输入单个IP地址或网段地址,每行输入1条数据,最多可以输入10条数据。
在本文示例中请确保如下IP均已添加到白名单中。
集群中各密码机实例所在交换机的网段
例如,集群中密码机实例所属的VPC子网(交换机)网段分别为172.16.1.0/24和172.16.2.0/24,则在编辑框中增加输入两行,内容分别为:172.16.1.0/24和172.16.2.0/24。
ECS实例的私网IP
例如,ECS实例的私网IP为172.16.3.0,则在编辑框中增加输入一行,内容为:172.16.3.0。
KMS实例绑定的交换机的网段
如果此时还未购买KMS实例,请在购买并启用KMS实例后,再为集群添加该白名单。
重要集群的白名单优先级高于集群中密码机实例的白名单。例如,您设置的集群中密码机实例的白名单为10.10.10.10,集群的白名单为172.16.0.1,则您只能通过172.16.0.1访问集群中的密码机实例。
不支持配置为0.0.0.0/0(放行所有来源IP)。
基于安全考虑,不推荐您放行所有来源IP。如果因临时测试等原因确实需要放行所有来源IP,不配置白名单即可。
指定另外一个可用区的交换机
配置另外一个密码机实例绑定的交换机。
在创建并激活集群面板,完成②激活集群。
导入集群证书。
在导入集群证书区域,单击集群CSR证书下载CSR证书文件,然后上传到ECS实例上保存。以保存为cluster.csr为例。
创建私钥,并根据提示设置私钥口令。以保存为issuerCA.key为例。
openssl genrsa -aes256 -out issuerCA.key 2048
创建自签名证书。以保存为issuerCA.crt为例。
openssl req -new -x509 -days 3652 -key issuerCA.key -out issuerCA.crt
签署集群CSR证书,颁发的集群证书存储在cluster.crt文件中。
说明该步骤会使用到cluster.csr、issuerCA.key、issuerCA.crt文件。
openssl x509 -req -in cluster.csr -days 3652 -CA issuerCA.crt -CAkey issuerCA.key -set_serial 01 -out cluster.crt
返回加密服务管理控制台,导入集群证书并单击提交。
在请输入签发者证书(PEM编码)区域,输入issuerCA.crt文件的内容。
在请输入签发集群证书(PEM编码)区域,输入cluster.crt文件的内容。
初始化主密码机实例。
步骤
说明
步骤1:下载密码机实例管理工具。
重要密码机实例管理工具仅支持安装在Linux操作系统。
选择如下方式之一下载工具:
执行如下命令下载密码机实例管理工具,该操作需要您的ECS服务器连接公网。
wget -O hsm-client-v2.03.15.10-1.x86_64.rpm 'https://yundun-hsm4.oss-ap-southeast-1.aliyuncs.com/hsm-client-v2.03.15.10-1.x86_64.rpm'
在实例列表页面,找到目标密码机实例,通过单击密码机实例的规格列信息,然后单击下载密码机实例管理工具。
在激活集群页面,单击下载密码机实例管理工具。
步骤2:安装密码机管理工具。
执行如下命令:将程序和配置文件安装在/opt/hsm目录下。
sudo yum install -y hsm-client-v2.03.15.10-1.x86_64.rpm
步骤3:修改客户端配置文件。
在密码机管理工具的安装目录下,修改/opt/hsm/etc/hsm_mgmt_tool.cfg文件中的servers配置项。
name、hostname修改为主密码机的私有IP地址。
owner_cert_path修改为issuerCA.crt的文件路径。
hsm_mgmt_tool.cfg文件示例
{ "servers": [{ "name": "172.16.XX.XX", "hostname": "172.16.XX.XX", "port": 2225, "certificate": "/opt/hsm/etc/client.crt", "pkey": "/opt/hsm/etc/client.key", "CAfile": "", "CApath": "/opt/hsm/etc/certs", "ssl_ciphers": "", "server_ssl": "yes", "enable": "yes", "owner_cert_path": "<issuerCA.crt file path>" }], "scard": { "enable": "no", "port": 2225, "ssl": "no", "ssl_ciphers": "", "certificate": "cert-sc", "pkey": "pkey-sc", } }
步骤4:登录主密码机并查看用户列表。
通过以下命令登录主密码机。
/opt/hsm/bin/hsm_mgmt_tool /opt/hsm/etc/hsm_mgmt_tool.cfg
执行
listUsers
命令显示用户列表。cloudmgmt>listUsers Users on server 0(172.16.XX.XX): Number of users found:2 User Id User Type User Name MofnPubKey LoginFailureCnt 2FA 1 PRECO admin NO 0 NO 2 AU app_user NO 0 NO
步骤5:将PRECO用户改为CO用户。
执行
loginHSM
命令并以PRECO身份登录加密机。server0>loginHSM PRECO admin password loginHSM success
执行
changePswd
命令修改PRECO用户的密码,当您更改密码后,PRECO用户将成为CO用户。cloudmgmt>changePswd PRECO admin <NewPassword> *************************CAUTION******************************** This is a CRITICAL operation, should be done on all nodes in the cluster. Cav server does NOT synchronize these changes with the nodes on which this operation is not executed or failed, please ensure this operation is executed on all nodes in the cluster. **************************************************************** Do you want to continue(y/n)?y Changing password for admin(PRECO) on 1 nodes
通过
listUsers
命令查看用户列表,验证PRECO用户是否更改为CO用户。cloudmgmt>listUsers Users on server 0(172.16.XX.XX): Number of users found:2 User Id User Type User Name MofnPubKey LoginFailureCnt 2FA 1 CO admin NO 0 NO 2 AU app_user NO 0 NO
步骤6:创建密码机操作员(CU用户)
警告请您先创建CU用户,再将子密码机添加到集群,否则创建的CU用户不会自动同步至子密码机。
为了确保安全性,KMS硬件密钥管理实例通过用户名为kmsuser的CU用户身份访问密码机集群。
使用密码机实例管理工具登录主密码机,执行
createUser
命令创建一个名为kmsuser的Crypto User(CU)用户。createUser CU kmsuser <enter password>
重要请您牢记kmsuser的初始密码,在后续启用KMS硬件密钥管理实例时会用到。
执行
listUsers
命令,查看CU用户是否已经创建成功。cloudmgmt>listUsers Users on server 0(172.16.XX.XX): Number of users found:3 User Id User Type User Name MofnPubKey LoginFailureCnt 2FA 1 CO admin NO 0 NO 2 AU app_user NO 0 NO 3 CU kmsuser NO 0 NO
执行
quit
命令退出管理工具。cloudmgmt>quit disconnecting from servers, please wait...
步骤7:验证主密码机状态
返回到加密服务控制台,在激活集群页面单击
图标刷新密码机状态,然后单击下一步。
在③添加加密机页面,根据提示将子密码机添加到集群,然后单击完成。
说明当待添加的密码机实例状态是已初始化时,无法添加到集群,请联系我们。
配置成功后,集群会自动将主密钥数据同步到子密码机,例如将主密码机中的kmsuser同步至子密码机。您只需查看集群中两台密码机实例的摘要信息是否一致,若摘要信息不一致,请联系我们。
后续配置
请前往密钥管理服务控制台购买KMS硬件密钥管理实例,并完成相关配置。具体操作,请参见购买和启用KMS实例和密钥服务快速入门。
使用中国内地密码机集群时,请您记录以下信息,在KMS实例配置时需要使用。
密码机集群的名称
使用证书生成工具生成的证书文件
证书文件的保护口令
使用非中国内地密码机集群时,请您记录以下信息,在KMS实例配置时需要使用。
密码机集群的名称
kmsuser的初始密码