全部产品
Search
文档中心

加密服务:快速入门

更新时间:Dec 05, 2023

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

说明

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

前提条件

  • 已创建专有网络VPC(Virtual Private Cloud),并且已在VPC下创建交换机。具体操作,请参见搭建IPv4专有网络

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

步骤一:创建密码机实例

  1. 登录加密服务管理控制台,在顶部菜单栏,选择目标地域。

  2. 实例列表页面,单击创建密码机实例

  3. 在加密服务购买页面,参考下表配置信息,单击立即购买并完成支付。

    配置项

    说明

    区域

    选择密码机实例的地域。支持的地域,请参见支持的地域和可用区

    密码机只能在VPC中使用,且地域必须与您的ECS及VPC的地域相同。

    可用区

    选择密码机实例的可用区。建议您将密码机部署在不同的可用区,保障您的业务不会因可用区内某一机房发生事故而受影响。

    说明
    • 只有处于同一地域的可用区之间才能实现网络互通。

    • 加密服务和ECS实例可以在不同的可用区。

    购买数量

    选择需要购买的密码机实例数量。为了保证加密服务的高可用性,建议您至少购买2个密码机实例。

    购买时长

    选择购买的有效服务时间。

    为了防止加密服务到期未及时续费而导致的密钥永久性丢失,建议您购买时选择到期自动续费。当您选择到期自动续费后,阿里云会在服务到期前9个自然日从您购买密码机时使用的支付账户自动扣款,为了防止扣费失败,请确保您的支付账户余额充足。

    创建成功后,您可以在实例列表页面查看密码机实例,状态未启用

步骤二:启用密码机实例

  1. 实例列表页面,定位到已创建的密码机实例,单击操作列的启用

  2. 密码机实例配置对话框,配置密码机实例,然后单击确定

    配置项

    说明

    所属的VPC网络ID

    选择密码机实例需要绑定的VPC。

    所属的VPC子网

    选择密码机实例所属的VPC子网网段。

    分配私网IP地址

    为密码机实例分配一个私网IP地址。

    重要
    • 私网IP地址必须是所属的VPC子网网段中的IP地址,否则配置将会失败。

    • 末位为253、254、255的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,不配置白名单即可。

    配置成功后,密码机实例的状态变为已启用

步骤三:创建并激活集群

一个集群中包括一个主密码机实例与若干个非主密码机实例。集群内一个可用区的密码机实例使用同一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个交换机才能成功创建并激活集群。

  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库

相关文档

使用密码机实例集群