阿里云加密服务支持国密算法证书和国密SSL协议,支持通过GVSM或EVSM产生和存储SSL证书私钥,提升系统的安全性。您可以使用加密服务和配套接口TASSL实现Nginx SSL卸载。本文介绍如何在阿里云ECS上借助加密服务进行SSL的安全卸载。
支持的密码机类型
金融数据密码机(EVSM)、通用服务器密码机(GVSM)。
本文以EVSM为例简要介绍,使用GVSM时请参考执行。您可以在加密服务控制台下载对应密码机的软件包,在软件包中查看详细的使用指南。
软件包下载位置截图:
EVSM:在
路径下,查看《EVSM支持SSL卸载使用指南v1.xx.pdf》和《EVSM支持SSL卸载使用指南v1.xx(密钥密文版).pdf》。GVSM:在
路径下,查看《密码机支持SSL卸载使用指南v1.xx(索引)(nginx)(GHSM&GVSM).pdf》。
典型部署方案图
在阿里云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:在
中获取。GVSM:在
中获取。
TASSL引擎
-
支持调用EVSM或GVSM的TASSL引擎文件包,支持国密算法和国外算法。
请在加密服务控制台下载对应密码机的软件包。
EVSM:在
中获取。GVSM:在
中获取。
Nginx代理
-
配合使用TASSL引擎的Nginx服务包。
请在加密服务控制台下载对应密码机的软件包。
EVSM:在
中获取。GVSM:在
中获取。
步骤一:配置密码机实例管理工具
如果您的业务需要正式上线,在购买加密服务实例后,您需要使用密码机实例管理工具配置密码机客户端。
密码机客户端管理工具只支持在Windows系统运行。
登录加密服务管理控制台,在顶部菜单栏,选择目标地域。
在实例列表页面,定位到目标密码机实例,单击规格列,然后单击下载密码机实例管理工具。
解压获取密码机软件包,选择以下任一方式安装密码机实例管理工具。
在本地终端安装密码机客户端管理工具,然后通过VPN或物理专线使本地终端连接到密码机实例所属的VPC网络。
在ECS实例上安装密码机客户端管理工具,然后通过本地终端远程登录ECS实例,在ECS实例上操作密码机实例管理工具。购买ECS实例的具体操作,请参见自定义购买实例。
初始化密码机实例。
初始化方式
操作步骤
在加密服务控制台一键初始化
重要使用一键初始化,您的密码机必须是通用密码机GVSM且您没有使用UKEY的需求。
在实例列表页面,单击目标实例操作列的图标,然后单击初始化。
在初始化实例对话框,单击确定。
初始化预计需要1~5分钟时间,请耐心等待。初始化完成后,您再次打开初始化实例对话框时,初始化状态会显示已初始化,该状态下请勿重复初始化。
使用密码机实例管理工具初始化
参考密码机软件包中的用户管理手册的《设备初始化》章节,完成初始化操作。
步骤二:在ECS2部署TASSL
登录ECS2实例。具体操作,请参见ECS连接方式概述。
将获取到的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
配置TASSL引擎要访问的EVSM信息。
将/home/tass/tassl/cfg/tasshsm_engine.ini文件中的IP和PORT修改为EVSM的IP地址和主机服务端口号。
步骤三:申请和签发SSL证书
您可以根据需要生成RSA算法、SM2算法、ECC算法服务器的证书请求文件(也称CSR或P10文件)并签发证书。在测试阶段建议采用自签发证书,生产阶段建议采用从CA中心签发或者通过阿里云数字证书管理服务签发的证书。
阿里云数字证书管理服务签发证书的具体操作,请参见提交证书申请。
RSA算法服务端证书(单证)申请和签发
生成证书请求文件。
方式一:通过EVSM的管理工具生成
登录密码机实例管理工具,单击密钥管理页签,然后单击非对称密钥管理。
在非对称密钥管理对话框,单击产生新密钥。
在产生非对称密钥对话框,配置算法标识为RSA、密钥模长为2048、幂指数为65537,然后单击产生。
EVSM将产生新的非对称密钥并输出显示公钥明文和私钥密文。
在非对称密钥管理对话框,单击生成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
签发证书。
如果您在生产阶段,建议采用从CA中心签发或者通过阿里云数字证书管理服务签发的证书。在测试阶段,如果您可以采用通过TASSL配套脚本产生的自签发证书。自签发证书的过程如下:
进入ECS2的/home/tass/tassl/cert/rsa目录。
签发S_RSA_HSM.crt。
./sign_cert.sh S_RSA_HSM.csr S_RSA_HSM.crt
国密SM2算法的服务端证书(双证)申请和签发
生成证书请求文件。
方式一:通过EVSM的管理工具生成
登录密码机实例管理工具,单击密钥管理页签,然后单击非对称密钥管理。
在非对称密钥管理对话框,单击产生新密钥。
在产生非对称密钥对话框,配置算法标识为SM2、密钥索引号为15,然后单击产生。
EVSM将产生新的非对称密钥并输出显示公钥明文和私钥密文。
在非对称密钥管理对话框,单击生成ECC请求。
在生成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
签发证书。
如果您在生产阶段,建议采用从CA中心签发或者通过阿里云数字证书管理服务签发的证书。在测试阶段,如果您可以采用通过TASSL配套脚本产生的自签发证书。自签发证书的过程如下:
进入ECS2的/home/tass/tassl/cert/sm2目录。
签发签名证书文件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算法的服务端证书申请和签发
生成证书请求文件。
方式一:通过EVSM的管理工具生成
登录密码机实例管理工具,单击密钥管理页签,然后单击非对称密钥管理。
在非对称密钥管理对话框,单击产生新密钥。
在产生非对称密钥对话框,配置算法标识为NID_NISTP256、密钥索引号为17,然后单击产生。
EVSM将产生新的非对称密钥并输出显示公钥明文和私钥密文。
在非对称密钥管理对话框,选中产生的ECC曲线密钥,然后单击生成ECC请求。
在生成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
签发证书。
如果您在生产阶段,建议采用从CA中心签发或者通过阿里云数字证书管理服务签发的证书。在测试阶段,如果您可以采用通过TASSL配套脚本产生的自签发证书。自签发证书的过程如下:
进入ECS2的/home/tass/tassl/cert/ecc目录。
签发证书文件S_ECC_HSM.crt。
./sign_cert.sh S_ECC_HSM.csr S_ECC_HSM.crt
步骤四:部署Nginx服务
将配合使用TASSL引擎的Nginx服务包nginx-1.21.2_tassl.tgz上传至ECS2上并解压,例如解压到/home/tass目录。
在/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
配置不同加密算法服务端证书的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; } } …
执行以下命令启动Nginx代理。
cd /home/tass/nginx/sbin ./nginx
步骤五:测试验证
部署完成后,您可以通过以下方式验证RSA算法和国密SM2算法服务端证书是否部署成功。
如果您使用的是RSA算法服务端证书(单证),可以通过浏览器直接访问您申请的域名URL进行验证。
如果您使用的是国密SM2算法的服务端证书(双证),需要按照以下操作进行验证:
在客户端安装支持国密算法的浏览器(例如360安全浏览器),将签发给服务端的CA证书导入到浏览器,并设置为信任。
拷贝ECS2中证书文件/home/tass/tassl/cert/sm2/ca.crt的内容到C:\Users\Administrator\AppData\Roaming\360se6\User Data\Default\gmssl\ctl.dat文件。
重启浏览器。
在C:\Windows\System32\drivers\etc路径修改hosts文件,将服务器地址指向您的测试域名。
通过浏览器访问您的测试域名。