一、实验概述
1.1 核心工具
- Tongsuo(同策安全开源项目):基于OpenSSL的国密扩展库与工具集,支持SM2/SM3/SM4、NTLS等国密标准,是国密SSL通信的核心密码支撑组件。
- Tengine:阿里巴巴基于Nginx开发的高性能Web/反向代理服务器,集成国密NTLS模块,可对接Tongsuo实现国密HTTPS服务部署。
1.2 实验目标
搭建支持国密SM2/SM3/SM4算法与NTLS协议的HTTPS Web服务,完成国密SSL通信全流程仿真验证,实现服务端国密加密部署、客户端国密访问测试。
1.3 实验环境
实验平台:天枢一体化虚拟仿真平台,openEuler 22.03SP4,操作账号为root,具备编译、网络配置权限。

二、服务端完整配置步骤
2.1 安装编译依赖包
安装gcc、make、pcre、zlib等Tongsuo与Tengine编译必需的系统依赖,确保编译过程无缺失组件报错。
|----------------------------------------------------------------------|
| # 进入依赖包目录 cd guomi/rpms/ # 查看依赖包列表 ls # 批量安装所有rpm依赖包 rpm -Uvh *.rpm |
2.2 编译安装Tongsuo
要求Tongsuo标签版本**≥8.4.0**,指定安装路径并开启国密NTLS支持,这是国密通信的核心密码库。
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| # 进入Tongsuo源码目录 cd guomi/Tongsuo/ # 确认版本满足要求 git describe --tags # 配置编译参数(指定安装路径、开启NTLS、绑定库文件路径) ./config --prefix=/opt/tongsuo -Wl,-rpath=/opt/tongsuo/lib64 enable-ntls --api=1.1.1 # 多线程编译 make -j$(nproc) # 安装到指定目录 make install # 验证安装结果 cd /opt/tongsuo/ ls |
安装成功后目录包含:bin、include、lib64、ssl。
2.3 编译安装Tengine
要求Tengine标签版本**≥2.3.4**,集成国密NTLS模块,编译时绑定Tongsuo源码与库文件路径,实现国密协议对接。
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| # 进入Tengine源码目录 cd /root/guomi/tengine/ # 确认版本满足要求 git describe --tags # 配置编译参数(开启SSL、集成国密模块、对接Tongsuo) ./configure \ --add-module=modules/ngx_openssl_ntls \ --prefix=/opt/tengine \ --with-http_ssl_module \ --with-openssl=/root/guomi/Tongsuo \ --with-openssl-opt="-Wl,-rpath=/opt/tongsuo/lib64 --api=1.1.1 enable-ntls" # 多线程编译 make -j$(nproc) # 安装到指定目录 make install # 验证安装结果 cd /opt/tengine/ ls |
安装成功后目录包含:conf、html、logs、sbin。
2.4 生成国密双证书
按照国密SSL标准,基于SM2椭圆曲线算法生成CA根证书 、签名证书 、加密证书,双证书机制分别用于身份认证与数据加密。
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| # 创建证书存储目录 mkdir -p /opt/tengine/ssl cd /opt/tengine/ssl/ # 1. 生成CA证书(自签名根证书) /opt/tongsuo/bin/openssl ecparam -name sm2 -genkey -out CA.key.pem /opt/tongsuo/bin/openssl req -new -x509 -sm3 -key CA.key.pem -out CA.cert.pem -subj "/C=CN/ST=Beijing/L=Haidian/O=Tongsuo/OU=Test CA/CN=Test CA" # 2. 生成签名证书(用于握手、身份验证) /opt/tongsuo/bin/openssl ecparam -name sm2 -genkey -out sign.key.pem /opt/tongsuo/bin/openssl req -new -sm3 -key sign.key.pem -out sign.csr.pem -subj "/C=CN/ST=Beijing/L=Haidian/O=Tongsuo/OU=Test Sign/CN=Sign Cert" /opt/tongsuo/bin/openssl x509 -req -sm3 -in sign.csr.pem -CA CA.cert.pem -CAkey CA.key.pem -CAcreateserial -out sign.cert.pem -days 365 # 3. 生成加密证书(用于数据加解密) /opt/tongsuo/bin/openssl ecparam -name sm2 -genkey -out enc.key.pem /opt/tongsuo/bin/openssl req -new -sm3 -key enc.key.pem -out enc.csr.pem -subj "/C=CN/ST=Beijing/L=Haidian/O=Tongsuo/OU=Test Enc/CN=Enc Cert" /opt/tongsuo/bin/openssl x509 -req -sm3 -in enc.csr.pem -CA CA.cert.pem -CAkey CA.key.pem -CAcreateserial -out enc.cert.pem -days 365 # 查看生成的证书文件 ls |
生成文件:CA.cert.pem、CA.key.pem、enc.cert.pem、enc.key.pem、sign.cert.pem、sign.key.pem等。
2.5 Tengine国密HTTPS服务配置
修改nginx.conf配置文件,启用NTLS国密协议、配置双证书、指定国密密码套件,完成国密HTTPS服务部署。
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Bash # 配置文件路径:/opt/tengine/conf/nginx.conf worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 443 ssl; server_name localhost; # 核心:启用国密NTLS协议 enable_ntls on; # 国密签名证书及私钥(身份认证) ssl_sign_certificate /opt/tengine/ssl/sign.cert.pem; ssl_sign_certificate_key /opt/tengine/ssl/sign.key.pem; # 国密加密证书及私钥(数据加密) ssl_enc_certificate /opt/tengine/ssl/enc.cert.pem; ssl_enc_certificate_key /opt/tengine/ssl/enc.key.pem; # 国密密码套件配置 ssl_ciphers "ECC-SM2-SM4-GCM-SM3:ECDHE-SM2-SM4-GCM-SM3"; ssl_protocols TLSv1.3; default_type text/plain; add_header "Content-Type" "text/html;charset=utf-8"; # 测试页面返回 location / { return 200 "tengine ntls test OK, ssl_protocol is $ssl_protocol (NTLSv1.1 表示国密,其他表示国际)"; } } } |
2.6 启动服务与防火墙配置
启动Tengine服务,开放443端口,确保客户端可正常访问国密HTTPS服务。
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| # 进入Tengine执行文件目录 cd /opt/tengine/sbin/ # 启动国密HTTPS服务 ./nginx # 防火墙永久开放443端口 sudo firewall-cmd --permanent --add-port=443/tcp # 重载防火墙配置 sudo firewall-cmd --reload |
三、客户端访问验证
3.1 普通浏览器访问(Edge/Chrome)
- 访问地址 :https://192.168.0.100

- 访问结果 :报错ERR_SSLVERSION_OR_CIPHER_MISMATCH,提示不支持的协议
- 原因:普通国际浏览器仅支持标准SSL/TLS协议,不兼容国密NTLS、SM2/SM3/SM4算法
3.2 国密浏览器访问
- 访问地址 :https://192.168.0.100

- 访问结果 :成功加载页面,显示 tengine ntls test OK, ssl_protocol is NTLSv1.1
- 协议说明 :NTLSv1.1为国密通信协议,基于SM2密钥交换、SM4-GCM加密、SM3摘要算法
- 证书提示:因使用自签名测试证书,浏览器提示证书风险,正式环境需替换合规国密证书
四 、实验总结
本实验成功完成Tongsuo+Tengine国密HTTPS服务全流程部署,实现了国密SM2/SM3/SM4算法与NTLS协议的应用仿真,验证了国密SSL通信的完整性与兼容性。实验符合国家商用密码应用规范,可作为Web系统国密改造的参考方案。