1. 概述
1.1 缘起
haproxy作为开源高性能http/tcp代理服务器得到了广泛应用,它可以支持国际ssl加密通信功能,但是对于国密ssl却一直没有被官方得到支持。随着国密标准规范的推广应用,以及等保2.0明确规定要求对网络通信中的报文或会话过程全文加密(三级),这样导致在haproxy在国内的很多业务场景中不符合等保要求而不能使用。因此有必要对haproxy进行国密ssl功能支持进行改造。
铜锁/Tongsuo是由阿里巴巴基于openssl,衍生开发并开源的同时提供国际ssl和国密ssl的一个提供现代密码学算法和安全通信协议的开源基础密码库,为存储、网络、密钥管理、隐私计算等诸多业务场景提供底层的密码学基础能力,实现数据在传输、使用、存储等过程中的私密性、完整性和可认证性,为数据生命周期中的隐私和安全提供保护能力。
本文描述了基于洞锁加密库,为haproxy添加国密ssl的加密传输能力。
1.2 支持的特性
- 支持ntls v1.1 国密ssl 协议
- 支持监听器国密ssl握手协议
- 支持作为上游服务器的客户端进行国密ssl握手
- 支持国际和国密双证书配置
2 环境搭建
2.1 测试环境准备
为了支持测试国密测试,首先需要准备测试的客户端工具和web服务器。
-
测试工具:支持国密ssl的curl
国密curl下载链接
直接下载linux版本的二进制文件,经测试在ubuntu 22.04中直接可以用。 -
支持国密ssl的nginx web服务器
国密nginx下载链接
从以上地址下载源码后根据文档自行编译部署。
最新版本的tengine需要修改一下configure:
./configure --prefix=/opt/nginx \--add-module=modules/ngx_tongsuo_ntls \