- 本周计划完成的任务
- 本周实际完成情况(代码,文档,程序运行截图...),未完成计划的原因?如何改进?
- 本周遇到的问题与解决过程(要详细)
本周计划完成的任务
- 完成项目的码云仓库搭建,邀请成员进入项目
- 作为组长,我需要确定小组成员的分工,包括:
- 基于什么语言?
- 这周需要做的准备工作——搭建环境?比如java要在OpenEuler里配置jdk……
- 这周需要调通和掌握哪几个库?先找资料、参考博客,然后实操
- 本周我自己需要完成一到两个C语言库的调通
本周实际完成情况
- 第一项任务:“完成项目的码云仓库搭建,邀请成员进入项目”已顺利完成,项目链接:
所有成员均已加入
- 第二项任务:“作为组长,我需要确定小组成员的分工”,已顺利完成。
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不会冲突,并保持使用上的相互独立性。这的确是最完美的解决办法。
标签:课程设计,第一周,证书,OpenSSL,GmSSL,国密,进度,gmssl,com From: https://www.cnblogs.com/zhou-huilin/p/16891057.html参考链接