文档

非中国内地密码机

更新时间:
重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

本文介绍如何快速上手使用加密服务。

说明

如果您需要创建KMS硬件密钥管理实例的密码机集群,请参见配置KMS硬件密钥管理实例的密码机集群

前提条件

  • 已购买并启用密码机实例。具体操作,请参见购买并启用密码机实例

  • 已创建CentOS 8或Alibaba Cloud Linux操作系统的ECS实例,且ECS实例与主密码机实例在同一个VPC子网网段。具体操作,请参见使用向导创建实例

步骤一:创建并激活集群

一个集群中包括一个主密码机实例与若干个非主密码机实例。集群内一个可用区的密码机实例使用同一VPC子网。

  1. 实例列表页面,定位到主密码机实例,单击操作列的创建集群

  2. 创建并激活集群面板,完成①创建集群,然后单击下一步

    配置项

    说明

    集群名称

    自定义集群的名称。名称不能重复且长度不允许超过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个交换机才能成功创建并激活集群。

  3. 创建并激活集群面板,完成②激活集群。

    1. 导入集群证书。

      1. 导入集群证书区域,单击集群CSR证书下载CSR证书文件,然后上传到ECS实例上保存。例如,保存为cluster.csr。

      2. 创建私钥,并根据提示设置私钥口令。例如,保存为issuerCA.key。

        openssl genrsa -aes256 -out issuerCA.key 2048
      3. 创建自签名证书。例如,保存为issuerCA.crt。

        openssl req -new -x509 -days 3652 -key issuerCA.key -out issuerCA.crt
      4. 签署集群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
      5. 返回加密服务管理控制台,导入集群证书并单击提交

        • 请输入签发者证书(PEM编码)区域,输入issuerCA.crt文件的内容。

        • 请输入签发集群证书(PEM编码)区域,输入cluster.crt文件的内容。

    2. 初始化主密码机实例。

      步骤

      说明

      步骤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:登录主密码机并查看用户列表。

      1. 通过以下命令登录主密码机。

        /opt/hsm/bin/hsm_mgmt_tool /opt/hsm/etc/hsm_mgmt_tool.cfg
      2. 执行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用户。

      1. 执行loginHSM命令并以PRECO身份登录加密机。

        cloudmgmt>loginHSM PRECO admin password
        loginHSM success
      2. 执行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
      3. 通过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用户不会自动同步至子密码机。

      1. 执行createUser命令创建一个CU用户。

        CU用户名和密码支持ASCII字符,其中CU用户名不超过20个字符,密码为8~32个字符。

        本文以CU用户名为crypto_user为例,您可以根据业务需要自主命名。如果您是配置KMS硬件密钥管理实例的密码机集群,CU用户名请使用kmsuser

        createUser CU crypto_user <enter password>
      2. 执行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:验证主密码机状态

      返回到加密服务控制台,在激活集群页面单击update图标刷新密码机状态,然后单击下一步

  4. ③添加加密机页面,根据提示添加子密码机到集群,然后单击完成

    如果需要更多的密码机实例,您需要购买密码机实例,并添加密码机实例到集群。

步骤二:启动HSM客户端(hsm_proxy)

  1. 修改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
        }
    }
  2. 启动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
  3. 验证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硬件密钥管理实例的密码机集群,请跳过本步骤。

  1. 启动key_mgmt_tool命令行工具。

    /opt/hsm/bin/key_mgmt_tool
  2. 执行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
  3. 执行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
  4. 执行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
                            
  5. 执行exit命令,退出key_mgmt_tool命令行工具。

    Command:  exit

(可选)步骤四:使用密码机实例集群进行加密解密

您可以通过OpenSSL引擎、JCE或PKCS#11库提供的接口使用密码机集群。更多信息,请参见OpenSSL动态引擎JCEPKCS #11库

相关文档

非中国内地密码机