netty实现gmssl_gmssl国密总结

1、gmssl组成

分为加密和通信两部分

2、加密

主要指的是sm2 sm3 sm4加密算法,以及相关的加密组件

3、通信

指的是gmtls

按照一个 GM/T 0024-2014规范实现的,采用双证书,签名证书+加密证书

4、生成证书

可使用地址https://github.com/jntass/TASSL/tree/master/Tassl_demo/mk_tls_cert 下的SM2certgen.sh生成双证书。

注意:生成请求时指定的摘要算法 在用请求生成证书时并不生效,需要重新指定,否则会使用默认的算法rsa-sha256

针对gmssl,签名算法一定要是sm2sign-with-sm3

针对tassl,只要加密用的是sm2即可,sm2sign-with-sm3不是必须

5、兼容性

指的是gmssl对openssl的兼容性

ssl/tls下,仅支持有限的套件:

ECDHE-SM2-WITH-SMS4-SM3

ECDHE-SM2-WITH-SMS4-SHA256

不是完全兼容的

采用老的openssl证书,要指定tls版本为1或1.2才可以,或者直接使用TSLv1_2_method,使用TSL_method不可以,号称的会自己检测版本并没有实现,貌似默认是使用1.1版本

6、双证书

gmssl对双证书和双密钥的设置

直接设置两个sm2证书和密钥就可以,没有新增接口,都是代码里自己适配:

keyusagedigitalSignature 类型的证书是签名证书,否则是加密证书,密钥呢,加密证书存在的时候是加密密钥,否则是签名密钥

这个其实是有漏洞的,必须先设置签名证书。。然后才是加密证书

tassl是有的,增加了一个设置加密密钥的接口SSL_use_enc_PrivateKey,设置证书的接口也是代码里适配的,证书类型需要keyusage(keyAgreementkeyEnciphermentdataEncipherment)

7、版本

以上总结仅针对GmSSL最新版(v2.3.1)和tassl当前最新版(2018-09-17)

8、最新版的openssl已经支持国密算法

仅仅支持国密的算法,通信还未支持

9、编程实现

server.c:

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

//#define CERTSERVER "/tmp/testopenssl/demoCA/cacert.pem"

//#define KEYSERVER "/tmp/testopenssl/demoCA/private/cakey.pem"

#define CERTSERVER "SS.pem"

#define KEYSERVER "SS.key.pem"

#define SM2_SERVER_ENC_CERT    "SE.pem"

#define SM2_SERVER_ENC_KEY      "SE.key.pem"

#define CHK_

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值