GVSM(国密)配置SSL卸载

本文介绍业务部署在Linux系统时,如何通过GVSM实现SSL卸载。

步骤一:准备工作

  1. 准备以下软件资源。

    资源类型

    说明

    获取方式

    密码机实例管理工具

    用于配置密码机实例。

    1. 登录加密服务管理控制台,下载软件包。image

    2. 在软件包的\阿里云加密服务-GVSM软件包XXXX\管理工具及用户手册目录下,获取密码机实例管理工具及使用手册。

    TASSL引擎

    支持调用GVSMTASSL引擎文件包,支持国密算法和国际算法。

    请联系阿里云技术支持。

    Nginx代理

    配合使用TASSL引擎的Nginx服务包。

    请联系阿里云技术支持。

  2. 部署如下云产品资源。

    资源名称

    规格

    说明

    ECS1

    64Windows 10系统

    GVSM进行管理配置,和密码机实例在同个VPC。如何购买,请参见自定义购买实例

    访问GVSM的管理端口为8020。

    ECS2

    64Linux系统

    用于部署用户的业务系统、TASSL、Nginx,和密码机实例在同个VPC。

    说明
    • ECS2访问GVSM的服务端口为8019。

    • 您需要设置ECS2SSL端口服务。

    GVSM

    通用服务器密码机(GVSM)

    用于完成卸载SSL证书相关的密码运算。

步骤二:在ECS1上配置密码机实例管理工具

重要

密码机客户端管理工具只支持在Windows系统运行。

  1. 登录ECS1实例。具体操作,请参见ECS连接方式概述

  2. ECS1上安装密码机实例管理工具,然后通过本地终端远程登录ECS实例,在ECS实例上操作密码机实例管理工具。

    说明

    您也可以在本地终端安装密码机客户端管理工具,然后通过VPN或物理专线使本地终端连接到密码机实例所属的VPC网络。

  3. 初始化密码机实例。

    如果您已初始化过密码机,请跳过本步骤。

    • 方式一:在加密服务控制台一键初始化

      重要

      如果您的业务没有使用UKEY的需求,可以使用一键初始化,否则请使用密码机实例管理工具初始化。

      1. 访问加密服务控制台的虚拟密码机实例页面,在顶部菜单栏,选择目标地域。

      2. 定位到目标密码机,在操作列单击image > 初始化

      3. 初始化实例对话框,单击确定

        初始化预计需要1~5分钟时间,请耐心等待。初始化完成后,状态会显示已初始化

    • 方式二:使用密码机实例管理工具,初始化密码机实例。

      具体操作,请参见软件包中的用户使用手册的《原始初始化》章节。

步骤三:在ECS2部署TASSL

  1. 登录ECS2实例。具体操作,请参见ECS连接方式概述

  2. 将获取到的TASSL引擎文件包nginx_tassl_tasshsmXX.XX.XX上传至ECS2并解压,例如解压到/home/tass目录。

    说明

    文件包中通常还会包含Nginx服务包,Nginx服务包也请解压到/home/tass目录。

    如果tassl.tgz未解压到/home/tass目录,则需要配置两个环境变量,分别用于查找引擎库和引擎库配置文件。例如:

    export OPENSSL_ENGINES=/home/other/tassl/lib/engines-1.1/
    export TASSL_ENGINE_CFG=/home/other/tassl/cfg/tasshsm_engine.ini
  3. 配置TASSL引擎要访问的GVSM信息。

    /home/tass/tassl/cfg/tasshsm_engine.ini文件中的HSM_IPHSM_PORT修改为GVSMIP地址和主机服务端口号。

    #GVSMIP地址。
    HSM_IP      = 172.XX.XX.183 
    #固定为8019。
    HSM_PORT    = 8019          

    GVSMIP地址请在控制台的IP地址列查看。image

步骤四:申请和签发SSL证书

您可以根据需要生成RSA算法、SM2算法的服务器的证书请求文件(也称CSRP10文件)并签发证书。

RSA算法服务端证书(单证)申请和签发

  1. 生成CSR证书请求文件。

    1. 登录密码机实例管理工具。

      端口默认为8020,无需修改。

    2. 产生新密钥。

      1. 单击密钥管理页签,然后单击非对称密钥管理

      2. 非对称密钥管理对话框,单击产生新密钥

      3. 产生非对称密钥对话框,配置算法标识RSA密钥模长2048幂指数65537,自定义密钥索引,然后单击产生

      4. GVSM将产生新的非对称密钥并显示公钥明文和私钥密文。

    3. 生成证书请求文件。

      • 方式一:通过密码机管理工具生成

        1. 非对称密钥管理对话框,单击生成RSA请求

        2. 生成RSA对话框,输入合法的主题,选择是否使用内部索引,并输入密钥索引,单击确定生成RSA

        3. P10请求复制保存为证书请求文件。文件名称以S_RSA_HSM.csr为例。

      • 方式二:通过TASSL配套脚本生成

        进入ECS2/home/tass/tassl/cert/rsa目录,生成证书请求文件S_RSA_HSM.csr。

        [tass@localhost rsa]#./gen_rsa_csr_with_hsm -r S_RSA_HSM.csr -k ./S_RSA_HSM.key
        请输入DN:/C=CN/ST=BJ/L=HaiDian/O=JNTA/OU=BSRC of TASS/CN=rsa_commoname/
        请输入密钥模长[1024 - 2048]:2048
        请选择摘要算法: 1)SHA1
        	        2)SHA224
        		3)SHA256
        		4)SHA384
        		5)SHA512
        请输入:3
        请输入加密机存储私钥的索引号:15
  2. 签发证书。

    重要

    在测试阶段建议采用自签发证书,生产阶段建议采用从CA中心签发或者通过阿里云数字证书管理服务签发的证书。

    本文以自签发证书为例,阿里云数字证书管理服务签发证书的具体操作,请参见提交证书申请

    1. 进入ECS2/home/tass/tassl/cert/rsa目录。

    2. 签发S_RSA_HSM.crt

      ./sign_cert.sh S_RSA_HSM.csr S_RSA_HSM.crt

国密SM2算法的服务端证书(双证)申请和签发

  1. 生成CSR证书请求文件。

    1. 登录密码机实例管理工具。

      端口默认为8020,无需修改。

    2. 产生签名密钥和加密密钥。

      1. 单击密钥管理页签,然后单击非对称密钥管理

      2. 非对称密钥管理对话框,单击产生新密钥

      3. 产生非对称密钥对话框,配置算法标识SM2、输入密钥索引号,然后单击产生

        签名密钥索引号以15为例,加密密钥索引号以16为例。

      4. GVSM将产生新的非对称密钥并输出显示公钥明文和私钥密文。

    3. 生成签名证书请求文件,以及加密证书请求文件。

      1. 方式一:通过密码机实例管理工具生成

        1. 非对称密钥管理对话框,单击生成SM2/ECC请求。

        2. 生成ECC/SM2请求对话框中,曲线标识选择SM2算法标识选择SM3WithSM2,输入主题密钥索引,单击确定。生成签名证书请求文件时,密钥索引填15,生成加密证书请求文件密钥索引填16。

        3. P10请求复制保存为证书文件。签名证书请求文件名称以SS_SM2_HSM.csr为例,加密证书请求文件名称以SE_SM2_HSM.csr为例。

      2. 方式二:通过TASSL配套脚本生成

        进入ECS2/home/tass/tassl/cert/sm2目录,生成签名证书请求文件和加密证书请求文件。签名证书请求文件名称以SS_SM2_HSM.csr为例,加密证书请求文件名称以SE_SM2_HSM.csr为例。

        #产生证书请求文件SS_SM2_HSM.csr
        [tass@localhost rsa]# ./gen_sm2_csr_with_hsm -r SS_SM2_HSM.csr
        请输入DN:/C=CN/ST=BJ/L=HaiDian/O=Beijing JNTA Technology LTD./OU=BSRC of TASS/CN=sm2_commoname/
        请输入加密机存储私钥的索引号:15
        
        #产生加密证书请求文件SE_SM2_HSM.csr
        [tass@localhost rsa]# ./gen_sm2_csr_with_hsm -r SE_SM2_HSM.csr
        请输入DN:/C=CN/ST=BJ/L=HaiDian/O=Beijing JNTA Technology LTD./OU=BSRC of TASS/CN=sm2_commoname/
        请输入加密机存储私钥的索引号:16

  2. 签发证书。

    重要

    在测试阶段建议采用自签发证书,生产阶段建议采用从CA中心签发或者通过阿里云数字证书管理服务签发的证书。

    本文以自签发证书为例,阿里云数字证书管理服务签发证书的具体操作,请参见提交证书申请

    1. 进入ECS2/home/tass/tassl/cert/sm2目录。

    2. 签发签名证书文件SS_SM2_HSM.crt和加密证书文件SE_SM2_HSM.crt

      #签发签名证书文件SS_SM2_HSM.cr
      ./sign_cert_s.sh SS_SM2_HSM.csr SS_SM2_HSM.crt
      
      #签发加密证书文件SE_SM2_HSM.crt
      ./sign_cert_e.sh SE_SM2_HSM.csr SE_SM2_HSM.crt

步骤五:部署Nginx服务

  1. 配置不同加密算法服务端证书的Nginx服务。

    您可以参考下表代码示例编辑/home/tass/nginx/conf/nginx.conf配置文件的证书部分。

    RSA

    user  root;
    worker_processes  1;
    
    events {
        worker_connections  1024;
    }
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
        # HTTPS server
        server {
            listen       8020 ssl;
            server_name  localhost;
    
            #use tasshsm engine by key index
            ssl_certificate  /home/tass/tassl/cert/rsa/S_RSA_HSM.crt;  #配置RSA证书文件。
            ssl_certificate_key  engine:tasshsm_rsa:15; #配置存储RSA私钥的索引号。
    
            location / {
                root   html;
                index  index.html index.htm;
            }
          
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
    }

    SM2

    user  root;
    worker_processes  1;
    events {
        worker_connections  1024;
    }
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
    
        # HTTPS server
        server {
            listen       8020 ssl;
            server_name  localhost;
    
            #use tasshsm engine by key index
            ssl_certificate   /home/tass/tassl/cert/sm2/SS_SM2_HSM.crt; #配置签名证书文件。
            ssl_certificate_key   engine:tasshsm_sm2:15; #配置存储签名私钥的索引号。
            ssl_enc_certificate   /home/tass/tassl/cert/sm2/SE_SM2_HSM.crt; #配置加密证书文件。
            ssl_enc_certificate_key  engine:tasshsm_sm2:16; #配置存储加密私钥的索引号。
    
            location / {
                root   html;
                index  index.html index.htm;
            }
    
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
    
  2. 执行以下命令启动Nginx代理。

    cd /home/tass/nginx/sbin
    ./nginx

步骤六:测试验证

部署完成后,您可以通过以下方式验证RSA算法和国密SM2算法服务端证书是否部署成功。

  • 如果您使用的是RSA算法服务端证书(单证),可以通过浏览器直接访问您申请的域名URL进行验证。访问域名示例

  • 如果您使用的是国密SM2算法的服务端证书(双证),需要按照以下操作进行验证:

    1. 在客户端安装支持国密算法的浏览器(例如360安全浏览器),将签发给服务端的CA证书导入到浏览器,并设置为信任。

    2. 拷贝ECS2中证书文件/home/tass/tassl/cert/sm2/ca.crt的内容到C:\Users\Administrator\AppData\Roaming\360se6\User Data\Default\gmssl\ctl.dat文件。

    3. 重启浏览器。

    4. C:\Windows\System32\drivers\etc路径修改hosts文件,将服务器地址指向您的测试域名。

    5. 通过浏览器访问您的测试域名。