用Nginx 衍生版 Angie + Tongsuo(铜锁) 配合实现SM2/RSA双证书部署方案
环度小编:ihuandu

Angie是一个高效、强大和可扩展的 Web 服务器,是由 Nginx 的几个核心成员 fork Nginx 的衍生版。是 Nginx 的直接替代品,因此可以使用现有的 Nginx 配置而无需进行重大更改。更多关于Angie 的说明,请参见Angie官网

Angie 已对铜锁/Tongsuo进行适配,并增加了对NTLS(National TLS,也称国密TLS)相关能力的支持。对于有使用国密算法进行安全通信协议需求的用户,可以直接使用Angie +Tongsuo的组合。

铜锁/Tongsuo是一个提供现代密码学算法和安全通信协议的开源基础密码库,如需了解更多,请参见铜锁密码库

安装所使用的命令包

在服务器执行以下命令安装需要使用的软件命令包。

yum -y install wget 
yum -y install gcc  gcc-c++
yum -y install make
yum -y install pcre  pcre-devel
yum -y install gzip
yum -y install zlib-devel
yum -y install perl

下载安装Tongsuo和Tengine

在服务器上执行以下命令,下载TongsuoAngie

下载Tongsuo 8.2.1并解压。

wget -c https://github.com/BabaSSL/BabaSSL/archive/refs/tags/8.2.1.tar.gz
tar -zxvf Tongsuo-8.2.1.tar.gz  #解压BabaSSL压缩包

下载Tengine 2.4.1并解压。

curl -O https://download.angie.software/files/angie-1.8.1.tar.gz
tar -xpf angie-1.8.1.tar.gz
cd angie-1.8.1

在Angie解压目录下,执行以下命令,编译安装Angie并关联Tongsuo。
复制命令后,请参考下述说明修改对应的目录:

--prefix=/usr/local/angie:指定angie安装目录为/usr/local/angie,您可以指定其他目录。
--with-openssl=../Tongsuo-8.2.1:OpenSSL替换为Tongsuo以实现SM2。../Tongsuo-8.2.1需替换为实际Tongsuo安装路径。

./configure --prefix=/usr/local/angie \
       --with-openssl=../Tongsuo-8.2.1 \
       --with-openssl-opt=enable-ntls  \
       --with-ntls --with-http_ssl_module 
make -j
make install

Angie服务器安装证书

执行以下命令在Angie服务器配置文件目录中创建证书存放目录。

cd /usr/local/angie/conf #步骤二中指定的Angie安装目录,请您可以根据实际配置调整。

将证书相关文件上传到conf目录(示例中为/usr/local/angie/conf)。

编辑Angie配置文件angie.conf(示例中文件位于/usr/local/angie/conf),修改与证书相关的配置。配置内容如下:

server {    
    listen 443 ssl;    
    server_name yourdomain.com; #需修改为对应的网站域名
    
    # 启用NTLS。
    ssl_ntls on;  
      
    # 配置国密算法签名证书和加密证书
    ssl_certificate      sign.crt enc.crt;
        ssl_certificate_key  sign.key enc.key;

    # 配置RSA算法证书
    ssl_certificate rsa/server_rsa.pem; #需修改为实际证书文件路径
    ssl_certificate_key rsa/server_rsa.key; #需修改为实际私钥文件路径

    ssl_session_cache shared:SSL:1m;    
    ssl_session_timeout 5m;    
    
    # 配置加密套件 # 确保下面配置中有这两个套件即可ssl_ciphers "ECC-SM2-SM4-CBC-SM3:ECDHE-SM2-WITH-SM4-SM3";
    ssl_ciphers ECC-SM2-SM4-CBC-SM3:ECDHE-SM2-WITH-SM4-SM3:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA:AES128-GCM-SHA256:AES128-SHA256:AES128-SHA:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:AES256-GCM-SHA384:AES256-SHA256:AES256-SHA:ECDHE-RSA-AES128-SHA256:!aNULL:!eNULL:!RC4:!EXPORT:!DES:!3DES:!MD5:!DSS:!PKS;    
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;    
    ssl_prefer_server_ciphers on;
       
    location / {        
        root html;        
        index index.html index.htm;
    }
}

执行如下命令,重启Angie服务

cd /usr/local/angie/sbin #进入Angie服务的可执行目录。
./angie -s reload  #重新载入配置文件。

验证安装是否成功

证书安装完成后,您可通过访问证书的绑定域名验证该证书是否安装成功。

https://yourdomain.com   #需要将yourdomain替换成证书绑定的域名。
  • 国密算法证书验证需要使用国密浏览器测试。

  • RSA算法证书使用Google、Firefox、Edge等浏览器测试。

通过浏览器访问网站时,服务器会根据浏览器对国密算法的支持情况自动切换使用相应的加密方式:

  • 如果浏览器支持国密算法,则服务器会选择国密SM2算法证书进行HTTPS加密通信。

  • 若使用的浏览器不支持国密算法(如大多数国际主流浏览器),则服务器将使用RSA算法证书进行HTTPS加密通信。



  • 扫一扫二维码可分享朋友或朋友圈

400-9989-115
24小时客服热线

电话7x24小时值班

多项服务供您筛选
适合个人小微中大型单位

安全签章