20201321周慧琳

第一周课程设计任务完成进度
  1. 本周计划完成的任务
  2. 本周实际完成情况(代码,文档,程序运行截图...),未完成计划的原因?如何改进?
  3. 本周遇到的问题与解决过程(要详细)

本周计划完成的任务

  1. 完成项目的码云仓库搭建,邀请成员进入项目
  2. 作为组长,我需要确定小组成员的分工,包括:
  • 基于什么语言?
  • 这周需要做的准备工作——搭建环境?比如java要在OpenEuler里配置jdk……
  • 这周需要调通和掌握哪几个库?先找资料、参考博客,然后实操
  1. 本周我自己需要完成一到两个C语言库的调通

本周实际完成情况

  1. 第一项任务:“完成项目的码云仓库搭建,邀请成员进入项目”已顺利完成,项目链接:

https://gitee.com/zhou-huilin/course_design

所有成员均已加入

  1. 第二项任务:“作为组长,我需要确定小组成员的分工”,已顺利完成。



3. 第三项任务:“本周我自己需要完成一到两个C语言库的调通”
我完成了GMSSL国密算法库的下载和使用。

首先查阅了与GMSSL有关的介绍

GmSSL是一个开源的密码工具箱,支持SM2/SM3/SM4/SM9/ZUC等国密(国家商用密码)算法、SM2国密数字证书及基于SM2证书的SSL/TLS安全通信协议,支持国密硬件密码设备,提供符合国密规范的编程接口与命令行工具,可以用于构建PKI/CA、安全通信、数据加密等符合国密标准的安全应用。

GmSSL项目是OpenSSL项目的分支,并与OpenSSL保持接口兼容。因此GmSSL可以替代应用中的OpenSSL组件,并使应用自动具备基于国密的安全能力。GmSSL项目采用对商业应用友好的类BSD开源许可证,开源且可以用于闭源的商业应用。

引用自http://gmssl.org/

安装gmssl和配置路径

参考博客:在Linux下安装GmSSL
https://blog.csdn.net/zyhse/article/details/112350363

1. 下载GmSSL源码:https://github.com/guanzhi/GmSSL

2. 解压并进入目录

解压文件:unzip GmSSL-master.zip

进入目录:cd GmSSL-master/

3. 编译
配置安装路径,编译为静态库

./config --prefix=/usr/local/gmssl --openssldir=/usr/local/gmssl no-shared

注:–prefix表示安装路径;no-shared 表示只编译静态库;默认生成64位库。

4. 安装
make install
GmSSL安装目录如下:

5. 配置环境变量
在~/.bashrc文件中,添加GmSSL命令行工具路径。

vim ~/.bashrc

在文件末尾追加如下内容:

export PATH=$PATH:/usr/local/gmssl/bin

然后执行

source ~/.bashrc

输入命令,查看GmSSL版本

gmssl version -a

6. 查看版本——安装成功

测试gmssl功能

sm4测试


sm3测试

sm2测试

准备工作:创建一些文件夹用于存放签名证书

生成SM2密钥对

gmssl sm2 -genkey -out private/cakey.pem

生成SM2自签证书,作为CA根证书

gmssl req -new -x509 -key private/cakey.pem -out cacert.crt

生成根证书需要填入一些信息 ,根证书的这三类信息一定要记住,因为之后该根证书可以签名的证书的该三类信息必须一样,不然之后申请产生的证书为空。

  • Country Name
  • State or Province Name
  • Organization Name

    生成密钥、证书请求、证书
cd..
gmssl sm2 -genkey -out testUser.com.key
//一样需要输入一个 密钥文件使用的验证口令

生成证书请求CSR

gmssl req -new -key testUser.com.key -out testUser.com.csr
/*证书请求需要输入信息,一下三类信息必须和根证书一样哦
·Country Name
·State or Province Name
·Organization Name
*/

证书生成

gmssl ca -in testUser.com.csr -out testUser.com.crt -cert demoCA/cacert.crt  -keyfile demoCA/private/cakey.pem 

验签

gmssl verify -verbose -x509_strict -CAfile demoCA/cacert.crt testUser.com.crt

本周遇到的问题与解决过程

安装gmssl时编译安装出错

解决方法


根据这个操作以后就顺利完成了make步骤

sm4解密出现乱码

解决方法

其实是我的密钥两次输入不匹配导致的,其实加密模式(编译方式)不一样也会导致这个问题。

gmssl与openssl的冲突问题

GmSSL是支持国密算法和标准的OpenSSL分支,也就是说GmSSL是在OpenSSL代码基础上添加的国密算法。

因此为了兼容OpenSSL,GmSSL编译后生成的so文件名称与OpenSSL一致,都是libcrypto.so。

可能存在的问题:

Linux上很多软件都依赖于系统中的OpenSSL库。若你编译安装的GmSSL版本,其基于的OpenSSL分支版本,与系统中的OpenSSL版本不一致,便会产生冲突,很容易导致这些软件不可用。

最简单有效的办法:将GmSSL编译为静态库。

GmSSL命令行工具,以及我们基于该静态库开发的程序,直接内部就集成了GmSSL的二进制码,不需要去查找库了,也就不会与系统中OpenSSL产生冲突。

在安装GmSSL时,安装到指定的目录下,如/usr/local/gmssl,与系统中OpenSSL路径保持独立。

这样,即从文件路径和运行时,两方面保证了GmSSL与OpenSSL不会冲突,并保持使用上的相互独立性。这的确是最完美的解决办法。

参考链接

  1. gmssl快速上手
  2. 国密gmssl命令行生成SM2证书
  3. 国密gmssl使用及问题解决
  4. gmssl编译安装出错解决

posted on 2022-11-15 00:09  20201321周慧琳  阅读(62)  评论(0编辑  收藏  举报