文档

基于加密服务的SSL安全卸载

更新时间:

阿里云加密服务支持国密算法证书和国密SSL协议,支持通过GVSM或EVSM产生和存储SSL证书私钥,提升系统的安全性。您可以使用加密服务和配套接口TASSL实现Nginx SSL卸载。本文介绍如何在阿里云ECS上借助加密服务进行SSL的安全卸载。

支持的密码机类型

金融数据密码机(EVSM)、通用服务器密码机(GVSM)。

本文以EVSM为例简要介绍,使用GVSM时请参考执行。您可以在加密服务控制台下载对应密码机的软件包,在软件包中查看详细的使用指南。

软件包下载位置截图:

image

  • EVSM:在EVSM软件包 > SDK > TASSL路径下,查看《EVSM支持SSL卸载使用指南v1.xx.pdf》和《EVSM支持SSL卸载使用指南v1.xx(密钥密文版).pdf》。

  • GVSM:在GVSM软件包 > SSL卸载 > nginx_tassl_tasshsm2.x.x路径下,查看《密码机支持SSL卸载使用指南v1.xx(索引)(nginx)(GHSM&GVSM).pdf》。

典型部署方案图

在阿里云ECS上实现SSL卸载的典型部署方案如下图所示。ECS上卸载SSL的典型部署场景

前提条件

  • 已创建密码机实例。

  • 已准备以下资源:

    资源类型

    资源名称

    规格

    说明

    云资源

    ECS1

    64位Windows 10系统

    对租用的EVSM进行管理配置。

    说明

    您需要设置ECS1访问EVSM的管理端口为8013,访问GVSM的管理端口为8020。

    ECS2

    64位Linux系统

    用于部署用户的业务系统、TASSL、Nginx。

    说明
    • 您需要设置ECS2访问EVSM的服务端口为8018,访问GVSM的业务端口为8019。

    • 您需要设置ECS2的SSL端口服务。

    金融数据密码机(EVSM)或通用服务器密码机(GVSM)

    EVSM或GVSM

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

    软件资源

    密码机实例管理工具

    -

    用于配置密码机实例。

    请在加密服务控制台下载对应密码机的软件包。

    • EVSM:在EVSM软件包 > 管理工具 > 2-ECSM管理客户端软件 > HsmManager_EVSM_1.x.x.xx.zip中获取。

    • GVSM:在GVSM软件包 > 管理工具及用户手册 > GVSM-CS管理工具-PKIManager_1.x.x.x_ALG-全算法版本.zip中获取。

    TASSL引擎

    -

    支持调用EVSM或GVSM的TASSL引擎文件包,支持国密算法和国外算法。

    请在加密服务控制台下载对应密码机的软件包。

    • EVSM:在EVSM软件包 > SDK > TASSL > tassl_v1.x.x-nginx_v1.x-bin-master.zip > tassl.tgz中获取。

    • GVSM:在GVSM软件包 > SSL卸载 > nginx_tassl_tasshsm2.1.4.zip > tassl中获取。

    Nginx代理

    -

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

    请在加密服务控制台下载对应密码机的软件包。

    • EVSM:在EVSM软件包 > SDK > TASSL > tassl_v1.x.x-nginx_v1.x-bin-master.zip > nginx.tgz中获取。

    • GVSM:在GVSM软件包 > SSL卸载 > nginx_tassl_tasshsm2.1.4.zip > nginx中获取。

步骤一:配置密码机实例管理工具

如果您的业务需要正式上线,在购买加密服务实例后,您需要使用密码机实例管理工具配置密码机客户端。

重要

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

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

  2. 实例列表页面,定位到目标密码机实例,单击规格列,然后单击下载密码机实例管理工具下载密码机实例管理工具

  3. 解压获取密码机软件包,选择以下任一方式安装密码机实例管理工具。

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

    • 在ECS实例上安装密码机客户端管理工具,然后通过本地终端远程登录ECS实例,在ECS实例上操作密码机实例管理工具。购买ECS实例的具体操作,请参见自定义购买实例

  4. 初始化密码机实例。

    初始化方式

    操作步骤

    在加密服务控制台一键初始化

    重要

    使用一键初始化,您的密码机必须是通用密码机GVSM且您没有使用UKEY的需求。

    1. 实例列表页面,单击目标实例操作列的扩展图标图标,然后单击初始化

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

      初始化预计需要1~5分钟时间,请耐心等待。初始化完成后,您再次打开初始化实例对话框时,初始化状态会显示已初始化,该状态下请勿重复初始化。

    使用密码机实例管理工具初始化

    参考密码机软件包中的用户管理手册的《设备初始化》章节,完成初始化操作。

步骤二:在ECS2部署TASSL

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

  2. 将获取到的TASSL引擎文件包tassl.tgz上传至ECS2并解压,例如解压到/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引擎要访问的EVSM信息。

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

    HSM的IP和端口号

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

您可以根据需要生成RSA算法、SM2算法、ECC算法服务器的证书请求文件(也称CSR或P10文件)并签发证书。在测试阶段建议采用自签发证书,生产阶段建议采用从CA中心签发或者通过阿里云数字证书管理服务签发的证书。

说明

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

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

  1. 生成证书请求文件。

    • 方式一:通过EVSM的管理工具生成

      1. 登录密码机实例管理工具,单击密钥管理页签,然后单击非对称密钥管理

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

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

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

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

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

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

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

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

    如果您在生产阶段,建议采用从CA中心签发或者通过阿里云数字证书管理服务签发的证书。在测试阶段,如果您可以采用通过TASSL配套脚本产生的自签发证书。自签发证书的过程如下:

    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. 生成证书请求文件。

    • 方式一:通过EVSM的管理工具生成

      1. 登录密码机实例管理工具,单击密钥管理页签,然后单击非对称密钥管理

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

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

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

        产生非对称密钥

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

      5. 生成ECC对话框中,选择算法标识主题标识,输入主题密钥索引,单击确定

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

      进入ECS2的/home/tass/tassl/cert/sm2目录,生成证书请求文件和加密证书请求文件SS_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中心签发或者通过阿里云数字证书管理服务签发的证书。在测试阶段,如果您可以采用通过TASSL配套脚本产生的自签发证书。自签发证书的过程如下:

    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

ECC算法的服务端证书申请和签发

  1. 生成证书请求文件。

    • 方式一:通过EVSM的管理工具生成

      1. 登录密码机实例管理工具,单击密钥管理页签,然后单击非对称密钥管理

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

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

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

        产生非对称密钥

      4. 非对称密钥管理对话框,选中产生的ECC曲线密钥,然后单击生成ECC请求

      5. 生成ECC对话框中,选择算法标识主题标识,输入主题密钥索引,单击确定

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

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

      [tass@localhost rsa]# ./gen_ecc_csr_with_hsm -r S_ECC_HSM.csr
      请输入DN:/C=CNST=BJ/L=HaiDian/O=Beijing JNTA Technology LTD./OU=BSRC of TASS/CN=ecc_commoname/
      请选择摘要算法:1)SHA1
      							2)SHA224
      							3)SHA256
      							4)SHA384
      							5)SHA512
      请输入:3
      请输入加密卡存储私钥的索引号(0代表不保存,并且输出加密私钥):17
  2. 签发证书。

    如果您在生产阶段,建议采用从CA中心签发或者通过阿里云数字证书管理服务签发的证书。在测试阶段,如果您可以采用通过TASSL配套脚本产生的自签发证书。自签发证书的过程如下:

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

    2. 签发证书文件S_ECC_HSM.crt

      ./sign_cert.sh S_ECC_HSM.csr S_ECC_HSM.crt

步骤四:部署Nginx服务

  1. 将配合使用TASSL引擎的Nginx服务包nginx-1.21.2_tassl.tgz上传至ECS2上并解压,例如解压到/home/tass目录

  2. 在/home/tass/nginx-1.21.2_tassl目录安装Nginx服务。

    ./configure --with-http_ssl_module --with-stream --with-stream_ssl_module --with-openssl=/home/tass/tassl --prefix=/home/tass/nginx
    make
    make install
  3. 配置不同加密算法服务端证书的Nginx服务。

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

    RSA

    worker_processes auto;
    …
    …
        # 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私钥的索引号。
    
            ssl_verify_client off; #for one way https #表示不验证客户端。
    
            ssl_session_cache    shared:SSL:1m;
            ssl_session_timeout  5m;
    
            ssl_ciphers  HIGH:!aNULL:!MD5;
            ssl_prefer_server_ciphers  on;
    
            location / {
                root   html;
                index  index.html index.htm;
            }
    }
    …

    SM2

    worker_processes auto;
    …
    …
        # HTTPS server
        server {
            listen       8021 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; #配置存储加密私钥的索引号。
    
            ssl_verify_client off; # for one way https #表示不验证客户端。
            …
            location / {
                root   html;
                index  index.html index.htm;
            }
    }
    …

    ECC

    worker_processes auto;
    …
    …
        # HTTPS server
        server {
            listen       8022 ssl;
            server_name  localhost;
    
            #use tasshsm engine by key index
            ssl_certificate  /home/tass/tassl/cert/ecc/S_ECC_HSM.crt; #配置RSA证书文件。
            ssl_certificate_key  engine:tasshsm_ecc:17; #配置存储RSA私钥的索引号。
    
            ssl_verify_client off; #for one way https #表示不验证客户端。
    
            ssl_session_cache    shared:SSL:1m;
            ssl_session_timeout  5m;
    
            ssl_ciphers  HIGH:!aNULL:!MD5;
            ssl_prefer_server_ciphers  on;
    
            location / {
                root   html;
                index  index.html index.htm;
            }
    }
    …

  4. 执行以下命令启动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. 通过浏览器访问您的测试域名。