Tengine + BabaSSL ,让国密更易用!

开放原子训练营(第一季)铜锁探密Nginx+国密的应用 总的来说,这次铜锁活动让我更深入地了解了商用密码的原理和应用方法,同时也让我认识到,在实践过程中,需要不断地思考和尝试,才能真正掌握商用密码的技能和技巧。我相信,这些知识和经验对于我未来的发展和工作都非常有帮助。 阅读详情

cd6d8980acf9e9fef71ef101cd3358a9.gif

文|杨洋(花名:凯申 )

蚂蚁集团高级技术专家

负责密码学工程能力建设

BabaSSL 开源社区建设

本文 2366 字 阅读 5 分钟

近日,国内著名 Web 服务器和反向代理开源软件 Tengine(https://tengine.taobao.org)完成了对 BabaSSL(https://www.babassl.cn)的适配工作。

Tengine 对 BabaSSL 提供的特殊 API 进行了适配,并增加对 NTLS 相关能力的支持。

「详细 Pull Request 请见」:

https://github.com/alibaba/tengine/pull/1595 

至此,对我国密码行业相关安全通信协议,有使用需求的用户可以直接使用 Tengine + BabaSSL 的组合。而无需额外的 patch 或者代码改动,从用户使用的角度进一步提升了便利性。

PART. 1

NTLS

目前,我国密码行业中有两个主要的通信协议相关的技术标准。一个是由信安标委于 2020 年发布的 TLCP 协议,即传输层密码协议;另外一个则是由密标委在 2012 年发布的 GM/T 0024《SSL VPN 技术规范》(以下简称 0024)。

TLCP 和 0024 的具体内容差别不大,均是从 TLS 协议发展而来,他们的主要特点是将商用密码算法 SM2、SM3 和 SM4 应用到了 TLS 协议中,并使用 SM2 密钥交换机制替换掉了 TLS 协议原有的密钥交换流程。

TLCP 和 0024 另外一个显著的特点将 TLS 协议中使用的数字证书拆分成了加密和签名两种用途的证书,加密证书和签名证书以及对应私钥均需要进行配置使用,所以 TLCP 和 0024 也俗称“国密双证书”协议。

BabaSSL 对上述国密双证书协议进行了支持,并统称为 NTLS。

NTLS 的全名为 National TLS,即我国核准的传输层安全协议,所以也可以叫做国密 TLS。

由此可见,NTLS 并不是指某一种具体的符合商用密码相关技术标准要求的网络协议,而是多个协议的统称。在 BabaSSL 中代指 TLCP 和 0024 国密双证书协议,因为 NTLS 和标准 TLS 协议存在工作方式的不同,因此 BabaSSL 中增加了一些新的 API 来对其进行支持。而应用程序若想使用 NTLS 功能,就需要调用这些新增 API,给现有基于 OpenSSL API 进行适配的应用程序带来了额外的开发工作量。

PART. 2

Tengine + BabaSSL

Tengine 是由淘宝网发起的 Web 服务器项目,它在 Nginx 的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。

Tengine 的性能和稳定性已经在大型的网站(如淘宝网,天猫商城等)得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的 Web 平台。

Tengine 作为国内知名的开源 Web 服务器软件,在各领域均得到了广泛的使用且享有很高的知名度。

BabaSSL 是一款轻巧、灵活且靠谱的密码学和 TLS 协议工具集。BabaSSL 是蚂蚁集团和阿里集团的各主要业务中所使用的底层密码库,目前开源出来供业界使用。BabaSSL 广泛的应用在包括网络、存储、移动端 App 等场景中。

Tengine 来源于 Nginx,所以默认使用的是 OpenSSL。此次 Tengine 针对 BabaSSL 中的 NTLS 功能进行了适配,用户如果选择使用 BabaSSL 作为 Tengine 的底层密码库来实现通信加密的能力,则可以无需对 Tengine 进行任何代码改动,原生开启 NTLS 能力。

PART. 3

Tengine 启用 NTLS

具体来说,此次在 Tengine 中增加了几个新的指令,对 NTLS 进行支持。

 1. 下载 BabaSSL 和 Tengine 

- 前往 👇 下载 BabaSSL 的源代码包:

https://github.com/BabaSSL/BabaSSL/releases 

- 前往 👇 获取 Tengine 的最新代码:

「git clone」

https://github.com/alibaba/tengine.git

 2. 编译 BabaSSL 和 Tengine

使用如下配置:

./configure --add-module=modules/ngx_openssl_ntls \
    --with-openssl=../path/to/BabaSSL \
    --with-openssl-opt="--strict-warnings enable-ntls" \
    --with-http_ssl_module --with-stream \
    --with-stream_ssl_module --with-stream_sni

 3. 配置 Tengine 开启 NTLS 

一个开启了 NTLS 的 Tengine 配置文件的例子:

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    server {
        listen       443 ssl;
        server_name  localhost;
        enable_ntls  on;
        ssl_sign_certificate        server_sign.crt;
        ssl_sign_certificate_key    server_sign.key;
        ssl_enc_certificate         server_enc.crt;
        ssl_enc_certificate_key     server_enc.key;
        location / {
            return 200 "body $ssl_protocol:$ssl_cipher";
        }
    }
}
stream {
     server {
        listen       8443 ssl;
        enable_ntls  on;
        ssl_sign_certificate        server_sign.crt;
        ssl_sign_certificate_key    server_sign.key;
        ssl_enc_certificate         server_enc.crt;
        ssl_enc_certificate_key     server_enc.key;
        return "body $ssl_protocol:$ssl_cipher";
    }
}

 4. 测试 NTLS 

可以使用 BabaSSL 的 s_client 工具对开启了 NTLS 的 Tengine 进行测试。

「具体可以参考」:

https://babassl.readthedocs.io/zh/latest/Tutorial/SM/ntls/

PART. 4

总 结

随着互联网业务的发展,在新时期下,数据成为了影响人们正常生活的核心要素。

因此数据安全和个人信息保护等问题变得更加需要重视,国家近期也针对数据安全领域进行了相关立法。

密码学技术作为整个信息安全领域的基础技术能力,对数据安全也存在着很大的影响。同时密码行业是属于受到国家强监管的行业,其相关技术的应用和实施均有一定的特殊性。

BabaSSL 作为一个开源的密码库,其核心目标之一就是为用户提供合规的技术能力,使得用户在符合要求的情况下可以更加便捷的将国家核定的技术标准应用起来。从而在满足技术合规的要求,也同时实现了对数据安全需求的达成。

Tengine 作为国内著名的 Web 服务器和反向代理开源软件,在国内各行业的应用十分广泛,同时也是网络通信领域中实现对数据进行加密的关键开源软件。此次 Tengine 官方对 BabaSSL 进行适配和支持,让用户可以更加便捷的使用 BabaSSL 所提供的商用密码能力,也必将进一步的扩大各行业对商用密码算法的应用落地。

BabaSSL 在未来会持续在技术合规和前沿密码学等方向上持续演进,给广大用户带来高效、易用、安全、稳定的密码学基础库。

BabaSSL 的代码目前托管在 Github 上:

https://github.com/BabaSSL/BabaSSL

欢迎广大开发者

积极参与到 BabaSSL 的建设中

为我国密码行业的发展壮大贡献力量!

   本周推荐阅读  

19a932749a691f14f519482f60d6682b.png

TLS 握手带宽直降 80%,BabaSSL 是怎么做到的


2bae321c0a4343558fe71861a7dc2ef6.png

RFC8998+BabaSSL---让国密驶向更远的星辰大海


f47161101ae697c264fc1853c0ddf5f1.png

还在为多集群管理烦恼吗?OCM来啦!

893830ca74dbc74238155370ceed1ea4.png

一行降低 100000kg 碳排放量的代码!


302c3f70699f2710137ad6ac8a1b2169.png

为什么你的Nginx配置SM2国密SSL证书失败?这些坑我都帮你踩过了 本文针对Nginx配置SM2国密SSL证书的常见失败原因,提供了详细的排查与解决方案。核心在于使用支持国密算法的Nginx版本(如集成Tongsuo库),正确处理从阿里云等平台获取的证书格式,并正确配置ssl_ciphers等关键参数。文章还解释了浏览器兼容性差异及双证书部署等进阶场景,帮助运维和开发人员高效完成国密合规改造。 阅读详情

相关推荐

支持国密ssl的curl编译和测试验证(上)

本文详细描述了支持国密ssl和http2的curl的编译和测试验证的过程。

一个致力于开源代码学习、分析和交流的博客 2638

TLS 握手带宽直降 80%,BabaSSL 是怎么做到的

文|张成龙(花名:刻一)蚂蚁集团技术专家负责 BabaSSL 密码库产品、OpenSSL 贡献者本文3085字 阅读 5分钟|前言|随着 5G 网络的建设,加速了移动互联网应用的发...

金融级分布式架构 1360

[密码学实战]国密安全代理离线部署(二)

国密安全代理离线部署(一)

曼岛_的博客 617

Tengine + BabaSSL ,让国密更易用

文|杨洋(花名:凯申 ) 蚂蚁集团高级技术专家 负责密码学工程能力建设、BabaSSL 开源社区建设 本文 2366 字 阅读 5 分钟 近日,国内著名 Web 服务器和反向代理开源软件 TengineBabaSSL 完成了对 BabaSSL的适配工作。 Tengine 对 BabaSSL 提供的特殊 API 进行了适配,并增加对 NTLS 相关能力的支持。 「详细 Pull Request 请见」:https://github.com/alibaba/tengine/pull/1595 至此,对我国密码.

金融级分布式架构 3657

国密浏览器+tengine+Tongsuo实现国密https离线部署

国密浏览器+tengine+Tongsuo实现国密https离线部署

基于C语言的Tongsuo(铜锁/BabaSSL)开源基础密码库设计源码

本项目是基于C语言开发的Tongsuo(铜锁/BabaSSL)开源基础密码库设计源码,共包含23212个文件。其中C源代码文件1272个,PEM证书文件661个,头文件412个,测试文件275个,Shell脚本文件190个,文本文件106个,输入文件87个,INFO文件85个,CNF文件71个,DER文件69个。Tongsuo是一个提供现代密码学算法和安全通信协议的开源基础密码库,它为存储、网络、密钥管理、隐私计算等诸多业务场景提供底层的密码学基础能力,实现数据在传输、使用、存储等过程中的私密性、完整性和可认证性,为数据生命周期中的隐私和安全提供保护能力。项目结构清晰,代码注释详尽,适合用于学习和研究C语言和Tongsuo在密码学基础能力开发中的应用。

国密NGINX(tengine)部署web测试

因没有国密SSL浏览器,打开了rsa证书验证可访问。1、安装tengine+tongsuo。4、国密浏览器或命令行验证。2、配置conf证书。

Youdef 1615

Aurix TC387 Ethernet代码解析之二_移植

英飞凌官方仅提供了TC397的例程,故需通过TC397例程来移植到TC387新建工程里。TC397官方例程名称【Ethernet_1_KIT_TC397_TFT】,网络上可以免费获取到,此处不赘述。使用工具【

m0_69929716的博客 884

windows下如何编译tengine

本文的主要宗旨是使用cygwin在windows下编译tengine, 同时使用tongsuo, 使tengine支持国密SSL. 本文的编译环境为win10专业版. 详细步骤如下.

c_cppcoder的博客 2597

silvaco——GaN HEMT探索

上图为输出特性曲线 ,分别是在栅压为1v、3v、5v的情况下,可以看出在1v时器件处于截止状态,只有非常小近似于0的电流通过,随着栅压逐渐增大,沟道开启,产生漏极电流。上图为栅极漏电流曲线和转移特性曲线以及其提取的参数,可以看到阈值电压为=1.30249V,当栅压为0v时,Id=8.01032e-006,当栅压为5V时,Ig=3.11627e-006。albrct.n,低场迁移率模型,bn.albrct,an.albrct是albrct模型中的参数,可以由用户自己设定。lat.temp,晶格自热模型;

weixin_61913839的博客 7616

BabaSSL 8.3.1 发布稳定版本

密码学开源项目 BabaSSL 近日发布了 8.3.1 稳定版本,该版本中修复了若干 bug。 BabaSSL 8.3.1 主要存在如下方面的更新: 修改 EC-ElGamal 的 bug 修复 2 处 SM2 签名算法的实现 bug [0x9527-zhou] 修复 CVE-2022-0778 8.3.1 版本的下载地址:https://github.com/BabaSSL/BabaSSL/releases/tag/8.3.1 【BabaSSL 简介】 BabaSSL 是一个提供现代密码学算法和安全.

金融级分布式架构 4475

深度学习入门:使用CMSIS-NN在微控制器上部署模型的完整指南与Python Jupyter实践

CMSIS-NN是ARM为Cortex-M系列微控制器设计的神经网络库。它旨在提供一套高效、轻量级的神经网络API,使得开发者可以在资源受限的微控制器上运行深度学习模型。CMSIS-NN优化了各种常见的神经网络层,如卷积层、全连接层等,确保它们在微控制器上的运行效率。# 定义模型])# 编译模型# 训练模型这样,我们就得到了一个简单的手写数字识别模型。注意:为了简洁和清晰,本文中的代码可能不是最优的或最完整的实现。为了获得完整的项目和更多的优化技巧,请下载完整项目。

m0_57781768的博客 5884

RFC8998+BabaSSL---让国密驶向更远的星辰大海

01 引言-TLS 1.3 协议及 SM 算法 说起 TLS,大家一定不会陌生,TLS 可以说是整个互联网安全的基石,保障着我们的通信数据的安全。自从 2014 年 Heartbleed 漏洞被发现以来,网络安全受人关注的程度越来越高,出于更安全更快捷的需求,TLS 1.3 协议也随之被提出,其相应的 RFC 于 2018 年正式发布。随着网络安全越来越受到重视,安全战略也逐步上升到国家战略的高度,国家密码局在 2010 年底公布了我国自主研制的“椭圆曲线公钥密码算法”(SM2 算法),并随后陆续发布了国密

金融级分布式架构 3518

Windows下通过Ollama安装使用DeepSeek本地大模型

本地安装运行Deepseek大模型

canbaojun的博客 1283

RM3100应用笔记驱动程序SPI接口

PNI磁传感器套件RM3100磁传感器套件由2个Sen-XY-f(pn13104)地磁传感器,1个Sen-Z-f(pn13101)地磁传感器和MagI2C(pn13156)控制芯片组成,能够实现三维空间的磁场大小测量。

AIoT技术栈的博客 4923

安装BaBassl

(2)如果是 CentOS/RHELcd BabaSSLconfigmake -j$(nproc) # 多核并行编译sudo make install # 安装到指定路径注意:默认安装不会替换任何标准操作系统系统自带的OpenSSL档案,而是将其放入/usr/local作为选用安装。

m0_63797448的博客 1115

Unity - gamma space下还原linear space效果

还有头发之后的 (头发没有处理完整,因为使用 ASE 连连看练出来的,使用 surface shader,虽然可以生成一下 vert, frag 的方式在修改,但是我懒得去修改了,这样就是 PBR 的 BRDF 里面的部分曲线是不一样的,所以可以看到头发有一些差异)其实上面的代码判断 是否有分量 > 1.0f 的方式来判断是否 HDR 是不太合理的,因为不同的贴图格式的编码方式不同。还有比较隐蔽的一些颜色相关的常量值 (比如PBR中的 绝缘体的 F0 常量值,等等)

Jave.Lin 的学习笔记 2830

BabaSSL:支持半同态加密算法 EC-ElGamal

文|王祖熙(花名:金九)蚂蚁集团开发工程师负责国产化密码库BabaSSL的开发和维护专注于密码学、高性能网络、网络安全等领域本文3063字 阅读 5分钟—— 数据不出域、可用不可见...

金融级分布式架构 1573

QT绘制饼图+柱状图+折线图

使用qt绘制,折线图,饼图,柱状图,多柱状图

梅山 3878

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

安全攻防 - 02 标准背景:国际 TLS、RFC 8998 与中国 TLCP

国密SSL相关协议与标准解析 摘要:本文系统梳理了国密SSL相关概念的区别与联系,包括国际TLS标准(1.2/1.3)、中国TLCP标准(GB/T 38636-2020)、RFC 8998国密套件等不同体系。重点分析了SM2/SM3/SM4算法在协议中的分工,以及TLCP、GMSSL、NTLS等名称的对应关系。通过对比标准规范与实现方案(如Tencent Kona),说明国密SSL在实际应用中的配置要点,为开发者正确选择和使用国密协议提供技术参考。文章最后给出典型场景的对接判断方法,帮助区分TLCP双证书与

小工匠 860

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

国密docker容器实战

网上大部分国密教程都是基于国密SSL实验室(www.gmssl.cn)提供的国密版OpenSSL,可以与Nginx集成。 但是其声明了 https://gmssl.cn/gmssl/index.jsp 每年年底会自动退出,因此采用Tengine+BabaSSl(https://www.babassl.cn/2022/01/11/BabaSSL-plus-Tengine.html),阿里系来构建国密应用,均为开源,没有限制。(Tengine是阿里维护的nginx,完全兼容nginx语法) 限制 1. 免费版本

pakchoily的博客 1297

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

BabaSSL 发布 8.3.0|实现相应隐私计算的需求

BabaSSL 8.3.0 稳定版本发布!密码学开源项目 BabaSSL 近日发布了8.3.0 稳定版本,该版本中提供了若干 bug 修复以及较多的新特性支持。从具体特性角度来看,Ba...

金融级分布式架构 706

SOFAChannel#26 解读 BabaSSL :项目概况和最新进展 |直播预告

从数据存储到网络通信,从密码合规再到隐私计算,这些场景都离不开密码学算法和协议。BabaSSL 密码库作为蚂蚁和阿里的统一基础密码库,广泛的应用在各类蚂蚁和阿里的业务当中,提供了 TLS ...

金融级分布式架构 586

nginx中配置的ssl_certificate_key和ssl_certificate是什么,是如何发挥作用的

当客户端与服务器建立连接时,Nginx会使用指定的证书和私钥来进行SSL/TLS握手过程。客户端会验证服务器提供的证书,并使用服务器的公钥加密会话密钥,以确保通信的机密性和完整性。SSL证书文件包含用于验证服务器身份的公钥以及相关信息,如服务器的域名和证书颁发机构(CA)的签名。: 这个指令用于指定SSL证书的私钥文件的路径。私钥文件通常包含与SSL证书配对的私钥,用于加密和解密通信中的数据。私钥是SSL/TLS加密的关键组成部分,它用于生成加密的会话密钥和对数据进行解密。

lonelyhiker 7347
上一篇: SOFA Weekly |社区插话小剧场、本周 Contributor、QA 整理
下一篇: Tengine + BabaSSL ,让国密更易用
SOFAStack
博客等级 码龄7年 747粉丝 389原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值