Netty集成国密开源基础密码库Tongsuo

本文介绍了如何将Netty框架与开源密码库Tongsuo集成,以支持国密SSL通道加密。文章详细阐述了选择Tongsuo的原因,Netty的实现方式,编译和集成过程,以及测试TLCP协议的步骤。主要涉及Netty-tcnative编译Tongsuo密码库,Netty-tcnative调用Tongsuo以及Netty的相应改动。
摘要由CSDN通过智能技术生成

目录

一、Tongsuo是啥?

二、为什么选择Tongsuo?

三、Netty的实现

四、编译方法

 1.Netty

 2.Netty-tcnative

 3.Tongsuo

五、集成过程

 1.Netty-tcnative编译Tongsuo密码库

 2.Netty-tcnative调用Tongsuo密码库

 3.Netty调用Netty-tcnative

六、测试TLCP协议

总结


前言

        当前的软件形势来看,国密和信创都是大势所趋。项目组中也越来越多场景要求使用通道加密。维护的项目中大多用到netty框架,netty默认支持SSL/TLS,但都是国际算法,当前openssl对国密算法支持仅限于基础算法层面,还没有涉及到通道加密。记录一下Netty适配国密SSL通道加密的过程,避免遗忘,也算是让自己这段时间的成果不白费。


一、Tongsuo是啥?
铜锁开源密码库 · 语雀铜锁/Tongsuo(原BabaSSL)是一个提供现代...https://www.yuque.com/tsdoc

二、为什么选择Tongsuo?

        简单粗暴,选择Tongsuo是因为他获得了国密资质,了解这个东西的人估计都会选择Tongsuo吧。

三、Netty的实现

        Netty调用Netty-tcnative组件,Netty-tcnative调用集成Openssl算法库的JNI动态库。集成思路:将Openssl替换为Tongsuo。

        Netty编译需要依赖Netty-tcnative组件。Netty-tcnative使用Maven编译时会去下载密码库代码,编译密码库组件,并将密码库的库文件静态依赖到JNI动态库中。由此完成Netty到密码库的通道加密的调用。

四、编译方法

 1.Netty

mvnw clean install \
 -DskipTests \
 -Dmaven.test.skip=true \
 -Dcheckstyle.skip=true 

 2.Netty-tcnative

mvnw clean install

 3.Tongsuo

config -O3 -fno-omit-frame-pointer -fPIC \
no-ssl3 no-shared no-comp \
-DOPENSSL_NO_HEARTBEATS \
--strict-warnings enable-ntls \
--prefix=${opensslHome} --openssldir=${opensslHome}

make -j

make install

五、集成过程

 1.Netty-tcnative编译Tongsuo密码库

        Netty-tcnative主要分为openssl-classes(JNI Java类模块)、openssl-dynamic(JNI 动态库C代码模块)、openssl-static(动态库集成密码库模块),其他的两个模块boringssl-static和libressl-static没用过,没有深入了解。maven编译时直接注释了。

openssl-static pom.xml中编译openssl有windows、linux、mac不同系统的profile,对应替换Tongsuo下载路径:

<configuration>
  <target>
	<taskdef resource="net/sf/antcontrib/antcontrib.properties" />
	<if>
	  <available file="${opensslSourceDir}" />
	  <then>
		<echo message="OpenSSL was already downloaded, skipping the build step." />
	  </then>
	  <else>
		<echo message="Downloading Tongsuo" />
		<mkdir dir="${opensslSourceDir}" />
		<get 
src="https://codeload.github.com/Tongsuo-Project/Tongsuo/zip/refs/heads/master" 
dest="${project.build.directory}/tongsuo-${opensslVersion}.zip" verbose="on" />
		<exec executable="unzip" failonerror="true" 
dir="${project.build.directory}/" resolveexecutable="true">
		   <arg line="tongsuo-${opensslVersion}.zip" />
		 </exec>
		<move file="${project.build.directory}/Tongsuo-master"
 tofile="${opensslSourceDir}" /&g
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值