GMSSL双证书认证C/S(Linux版)

1 篇文章 0 订阅
1 篇文章 0 订阅

一、下载与安装GMSSL

二、生成证书文件

三、认证通信

对于新手小白,不知道怎么入坑GMSSL学习的可以看。首先需要明白什么是 gmssl,以及怎么初步使用它,初步搞懂双证书以及认证过程,下面我给几个链接方便大家快速找到合适的学习内容(也是我挑选过的了)。
非对称加密算法(双证书需要涉及到)
常用对称、非对称、摘要加密算法介绍
国密SSL协议之双证书体系
GMSSL官方文档
环境:Ubuntu18.0.4

一、下载与安装GMSSL

到这里通过前面几篇文章,我们会对GMSSL有一个初步的了解了,下面直接上手吧!我们直接安装的话后面使用可能会有冲突,因为GmSSL是支持国密算法和标准的OpenSSL的分支,也就是说GmSSL是在OpenSSL的基础上增加的国密算法,Linux上很多软件都依赖于系统中的OpenSSL库,所以在编译安装gmssl时可能会有冲突。下面的安装流程解决了冲突问题。
(1)去GMSS官网下载压缩包:GMSSL-master压缩包
在这里插入图片描述
(2)将压缩包放到你想放置的目录下,我是直接放在主目录下面进行解压安装的。
在这里插入图片描述
(3)解压

unzip GmSSL-master.zip

(4)进入解压目录,因为我是解压在主目录下的,所以是这个指令。

cd GmSSL-master/

(5)编译选项,配置安装路径,编译为静态库,解决冲突问题。

./config --prefix=/usr/local/gmssl --openssldir=/usr/local/gmssl no-shared 
//–prefix表示安装路径;no-shared 表示只编译静态库;默认生成64位库

(6)编译与安装,最好在root用户下面执行,否则可能使用的时候会报错。

make //编译

等待编译结束后再执行安装指令:

make install //安装

耐心等待就行。
(7)配置环境变量,在~/.bashrc文件中,添加GmSSL命令行工具路径

vim ~/.bashrc //进入文件进行编辑
export PATH=$PATH:/usr/local/gmssl/bin  //在文件尾部添加,并保存退出
source ~/.bashrc  //文件更改保存后执行这个指令

(8)查看安装版本:(与OpenSSL不冲突)
在这里插入图片描述

二、生成证书文件

先下载安装TASSL,因为大多都成参考这个项目里的.sh文件来生成双证书的,所以先去下载相关文件放到主目录下面(我是将整个文档都下载下来了)。
TASSL-master下载
在这里插入图片描述

在这里插入图片描述
将TASSL-master/Tassl_demo/mk_tls_cert 目录下的SM2certgen.sh这个脚本进行修改,修改如图部分就行:
在这里插入图片描述

cd TASSL-master/Tassl_demo/mk_tls_cert  //进入文件目录
sh SM2certgen.sh //执行文件,生成证书

在这里插入图片描述
生成的证书与密钥等相关文件在sm2Certs子目录里:

CA.key.pem和CA.cert.pem分别是CA私钥和CA证书。

CE.cert.pem和CE.key.pem分别是客户端的加密证书和对应的私钥。

CS.cert.pem和CS.key.pem分别是客户端的签名证书和对应的私钥。

SE.cert.pem和SE.key.pem分别是服务器的加密证书和对应的私钥。

SS.cert.pem和SS.key.pem分别是服务器的签名证书和对应的私钥。

三、认证通信

打开两个终端,一个充当服务器端一个充当客户端进行认证通信(这是在linux下的执行代码,windows的执行代码会有略微不同)。
服务器端执行如下代码:

gmssl s_server -accept 44330 -key ./SS.key.pem -cert ./SS.cert.pem  -dkey ./SE.key.pem -dcert ./SE.cert.pem -CAfile ./CA.cert.pem

在这里插入图片描述

客户端执行如下代码:

gmssl s_client -connect localhost:44330 -key ./CS.key.pem -cert ./CS.cert.pem -CAfile ./CA.cert.pem

在这里插入图片描述
当客户端也运行成功后,在服务器端会有一个显示:
在这里插入图片描述
然后就可以发消息进行通信了。

参考文章如下:
(1)https://blog.csdn.net/qq_40153886/article/details/106937556
(2)https://blog.csdn.net/zyhse/article/details/112350363

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
gmssl 是一个开源的基于 OpenSSL 的加密工具库,支持多种密码算法和证书操作。下面是使用 gmssl C 语言生成证书的简要步骤: 1. 首先,你需要在你的 C 程序中引入相应的头文件: ```c #include <openssl/x509.h> #include <opensll/pem.h> ``` 2. 创建一个 X509 结构体,并设置证书本信息、序列号、有效期等基本信息: ```c X509 *cert = X509_new(); // 设置证书本 X509_set_version(cert, 3); // 3 表示本号为 X509 v3 // 设置证书序列号 ASN1_INTEGER_set(X509_get_serialNumber(cert), 1); // 这里设置序列号为 1,可以根据实际需要设置 // 设置证书有效期 X509_gmtime_adj(X509_get_notBefore(cert), 0); // 设置为当前时间 X509_gmtime_adj(X509_get_notAfter(cert), 31536000L); // 设置为一年有效期,单位为秒 ``` 3. 设置证书的公钥和私钥: ```c RSA *rsa = RSA_generate_key(2048, RSA_F4, NULL, NULL); // 生成 RSA 密钥对 // 将 RSA 密钥对赋值给证书的公钥和私钥 X509_set_pubkey(cert, EVP_PKEY_new()); EVP_PKEY_assign_RSA(X509_get_pubkey(cert), rsa); X509_set_privkey(cert, EVP_PKEY_new()); EVP_PKEY_assign_RSA(X509_get_privkey(cert), rsa); ``` 4. 生成证书文件,并将证书写入文件中: ```c FILE *cert_file = fopen("cert.crt", "wb"); // 创建证书文件 // 将证书结构体 PEM 编码后写入文件 PEM_write_X509(cert_file, cert); fclose(cert_file); // 关闭文件 ``` 以上就是使用 gmssl C 语言生成证书的简要步骤,你可以根据实际需求进行进一步的操作,例如设置证书扩展信息、颁发者信息等。同时,你也可以使用 gmssl 的其他功能,例如证书签名、证书验证等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值