本文介绍如何快速上手使用加密服务。
如果您需要创建KMS硬件密钥管理实例的密码机集群,请参见配置KMS硬件密钥管理实例的密码机集群。
前提条件
已购买并启用密码机实例。具体操作,请参见购买并启用密码机实例。
警告为了保证密码机实例数据的安全,请不要在实际生产环境中使用测试密钥。
仅启用主密码机实例即可,无需启用子密码机。
已购买Linux系统(CentOS 8或Alibaba Cloud Linux)的ECS实例,且ECS实例需要和密码机实例在同一VPC。具体操作,请参见Linux系统实例快速入门。
说明该ECS实例用于安装密码机管理工具,而非用于业务服务器。
步骤一:创建并激活集群
一个集群中包括一个主密码机实例与若干个非主密码机实例。集群内一个可用区的密码机实例使用同一VPC子网。
在实例列表页面,定位到主密码机实例,单击操作列的创建集群。
在创建并激活集群面板,完成①创建集群,然后单击下一步。
配置项
说明
集群名称
自定义集群的名称。名称不能重复且长度不允许超过24个字符。
设置集群访问白名单
允许访问集群的IP地址。如果未设置白名单,则所有IP地址都能访问集群,如果设置了白名单,则不在白名单内的访问请求将被拒绝。
您可以输入单个IP地址或网段地址,每行输入1条数据,最多可以输入10条数据。
重要集群的白名单优先级高于集群中密码机实例的白名单。例如,您设置的集群中密码机实例的白名单为10.10.10.10,集群的白名单为172.16.0.1,则您只能通过172.16.0.1访问集群中的密码机实例。
不支持配置为0.0.0.0/0(放行所有来源IP)。
基于安全考虑,不推荐您放行所有来源IP。如果因临时测试等原因确实需要放行所有来源IP,不配置白名单即可。
指定集群的交换机(2~4个)
根据业务需要选择可用区的交换机。
在密码机实例集群中,您至少配置2个交换机才能成功创建并激活集群。
在创建并激活集群面板,完成②激活集群。
导入集群证书。
在导入集群证书区域,单击集群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操作系统。
CentOS
方式一:下载密码机实例管理工具。
方式二:执行如下命令下载密码机实例管理工具,该操作需要您的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'
方式三:在实例列表页面,找到目标密码机实例,通过单击规格列的图标。
方式四:在激活集群页面,单击下载密码机实例管理工具。
Debian
访问hsm-client-2.03.15.10-20240710_1.x86_64.deb,下载密码机实例管理工具。
步骤2:安装密码机管理工具。
执行如下命令:将程序和配置文件安装在/opt/hsm目录下。
CentOS
sudo yum install -y hsm-client-v2.03.15.10-1.x86_64.rpm
Debian
sudo dpkg -i hsm-client-2.03.15.10-20240710_1.x86_64.deb
步骤3:修改客户端配置文件。
在密码机管理工具的安装目录下,修改/opt/hsm/etc/hsm_mgmt_tool.cfg文件中的servers配置项。
name、hostname修改为主密码机的私有IP地址。
owner_cert_path修改为issuerCA.crt的文件路径。
步骤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身份登录加密机。cloudmgmt>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用户不会自动同步至子密码机。
执行
createUser
命令创建一个CU用户。CU用户名和密码支持ASCII字符,其中CU用户名不超过20个字符,密码为8~32个字符。
本文以CU用户名为
crypto_user
为例,您可以根据业务需要自主命名。如果您是配置KMS硬件密钥管理实例的密码机集群,CU用户名请使用kmsuser
。createUser CU crypto_user <enter password>
执行
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 crypto_user NO 0 NO
步骤7:验证主密码机状态
返回到加密服务控制台,在激活集群页面单击图标刷新密码机状态,然后单击下一步。
在③添加加密机页面,根据提示添加子密码机到集群,然后单击完成。
如果需要更多的密码机实例,您需要购买密码机实例,并添加密码机实例到集群。
步骤二:启动HSM客户端(hsm_proxy)
修改HSM客户端配置文件。
在密码机管理工具的安装目录下,找到/opt/hsm/etc/hsm_proxy.cfg文件,修改server.hostname为当前实例所属VPC的IP地址,client.e2e_owner_crt_path为issuerCA.crt的文件路径。
说明issuerCA.crt即您在激活集群的过程中创建的自签名证书。具体信息,请参见步骤一:创建并激活集群。
{ "ssl": { "certificate": "/opt/hsm/etc/client.crt", "pkey": "/opt/hsm/etc/client.key", "CApath": "/opt/hsm/etc/certs", "server_ssl": "yes", "server_ch_ssl_ciphers": "default" }, "client": { "socket_type" : "UNIXSOCKET", "tcp_port" : 1111, "zoneid" : 0, "workers" : 1, "daemon_id" : 1, "reconnect_attempts": -1, "reconnect_interval": 1, "log_level": "INFO", "sslreneg": 0, "CriticalAlertScript": "", "e2e_owner_crt_path" : "<issuerCA.crt file path>", "create_object_minimum_nodes" : 1, "logfiles_location" : "" }, "loadbalance" : { "enable" : "yes", "prefer_same_zone": "no", "success_rate_weight" : 1, "relative_idleness_weight" : 1 }, "dualfactor": { "enable" : "no", "port" : 2225, "certificate" : "certificate.crt", "pkey" : "pkey.pem", "dualfactor_ssl": "yes", "dualfactor_ch_ssl_ciphers": "default" }, "server": { "hostname": "<instance ip>", "port": 2224 } }
启动HSM客户端(hsm_proxy),并设置日志文件路径。
本文以将日志保存到liquidSecurity.1.WKCrty.log为例。
/opt/hsm/bin/hsm_proxy /opt/hsm/etc/hsm_proxy.cfg logfiles_location is not specified, logs will be available in current directory Logs will be available in liquidSecurity.1.WKCrty.log file
验证hsm_proxy是否连接成功。
通过执行
tail
命令获取hsm_proxy的日志文件,查看hsm_proxy是否连接成功。例如,执行tail liquidSecurity.1.WKCrty.log
命令,如果结果中出现e2e_handle_client_request:HSM FIPS STATE 2,表示已连接成功。tail liquidSecurity.1.WKCrty.log 2023-10-28T13:33:05Z liquidSecurity INF: check_preferred_srv_status_noclock: New preferred server node id:0 2023-10-28T13:33:05Z liquidSecurity INF: do_e2e_encryption_handshake: Trying to login to server as new server connection is established 2023-10-28T13:33:05Z liquidSecurity INF: e2e_handle_client_request: Got Authorize session response 2023-10-28T13:33:05Z liquidSecurity INF: get_partition_info: Get pHSM Info using e2e mgmtch 2023-10-28T13:33:05Z liquidSecurity INF: e2e_handle_client_request: Authorize session SUCCESS 2023-10-28T13:33:05Z liquidSecurity INF: e2e_handle_client_request: Got Partition Info 2023-10-28T13:33:05Z liquidSecurity INF: e2e_handle_client_request: GetPartitionInfo success 0 : HSM Return: SUCCESS 2023-10-28T13:33:05Z liquidSecurity INF: e2e_handle_client_request: HSM FIPS STATE 2 2023-10-28T13:33:06Z liquidSecurity INF: libevmulti_init: Initializing events 2023-10-28T13:33:06Z liquidSecurity INF: libevmulti_init: Ready !
(可选)步骤三:创建密钥
如果您是配置KMS硬件密钥管理实例的密码机集群,请跳过本步骤。
启动key_mgmt_tool命令行工具。
/opt/hsm/bin/key_mgmt_tool
执行
loginHSM
命令,以CU身份登录HSM。Command: loginHSM -u CU -s crypto_user -p <enter password> Cfm3LoginHSM returned: 0x00 : HSM Return: SUCCESS Cluster Status: Node id 0 status: 0x00000000 : HSM Return: SUCCESS
执行
genSymKey
命令,生成一个对称密钥。Command: genSymKey -l testkey -t 31 -s 32 Cfm3GenerateSymmetricKey returned: 0x00 : HSM Return: SUCCESS Symmetric Key Created. Key Handle: 6 Cluster Status: Node id 0 status: 0x00000000 : HSM Return: SUCCESS
执行
findKey
命令,查询您创建的密钥。Command: findKey Total number of keys present: 1 Number of matching keys from start index 0::0 Handles of matching keys: 6 Cluster Status: Node id 0 status: 0x00000000 : HSM Return: SUCCESS Cfm3FindKey returned: 0x00 : HSM Return: SUCCESS
执行
exit
命令,退出key_mgmt_tool命令行工具。Command: exit
(可选)步骤四:使用密码机实例集群进行加密解密
您可以通过OpenSSL引擎、JCE或PKCS#11库提供的接口使用密码机集群。更多信息,请参见OpenSSL动态引擎、JCE或PKCS #11库。