国密gmssl命令行生成SM2证书
简介最近想了解一下gmssl生成证书的流程,首先就来体验一下用指令完整证书的生成操作。目前,有一些文章已经有相关的详细介绍,但还是存在一定问题,如:CA密钥名与openssl中默认的cakey.pem不一致,导致证书生成失败;等。提前安装好gmssl;查看gmssl版本指令`gmssl version`本文章使用的gmssl 2.5.4....
简介
这周,实习公司要我去了解一下gmssl生成证书的流程,以便之后去验证SKF的证书接口。首先就来体验一下用指令完整证书的生成操作。目前,有一些文章已经有相关的详细介绍,但还是存在一定问题,如:CA密钥文件与openssl.cnf中默认的cakey.pem不一致,导致证书生成失败;等。
本文包括使用国密gmsll命令完成sm2生成密钥 、成为CA、 生成签名请求、签名生成数字证书、验签;及其可能遇见问题的解决方法
提前安装好gmssl;查看gmssl版本指令本:
gmssl version -a
文章使用的gmssl 2.5.4.
前提准备
创建文件夹及文件
mkdir myCert
cd myCert
mkdir demoCA
cd demoCA
mkdir private
mkdir certs
mkdir crl
mkdir newcerts
touch index.txt
touch index.txt.attr
touch serial
sudo sh -c 'echo "01" > demoCA/serial'
CA:生成SM2密钥对和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
生成密钥、证书请求、证书
生成SM2密钥对testUser.com.key
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
可能出现的问题
1.生成的用户证书为空?
解决方法:将用户证书请求中Country Name、State or Province Name、Organization Name这几项的信息与CA根证书保持一致
2.生成服务器证书时报unable to load number from ./demoCA/serial错误
解决办法:因为序列号文件中的值不对。
sudo sh -c 'echo "01" > serial'
参考
1.gmssl参考文章:
参考文章一:gmssl快速上手
参考文章二:gmssl指令证书生成
2.openssl参考文章
在使用gmssl生成证书之前,就先学习了一下openssl指令生成证书。gmssl是在openssl基础上实现了,部分指令和功能的使用方法相似。
参考文章一:openss生成证书为空怎么办
参考文章二:openssl生成证书报错
参考文章三:openssl指令生成证书过程
题外话
2022年,是注册CSDN的第六个年头了,作为面向百度编程的CSDN选手,一直都在获得别人的帮助。这篇是我写的第一篇文章,希望以后好好写文章,巩固知识,提高自己。如果能再帮助到一点别人的话就太高兴了。
更多推荐
所有评论(0)