在使用openssl时,发现不支持国密协议,因此找了支持的GmSSL,自己编译安装。
国密GmSSL安装
工具:GmSSL 2.5.4 - OpenSSL 1.1.0d
环境:Ubuntu 20.04.1
Gmssl安装
方法一:进入https://github.com/guanzhi/GmSSL/tree/master下载源代码(develop分支为3.0分支)
方法二:压缩包已上传到附件,可以直接下载:GmSSL-master.zip
将zip文件上传到linux虚拟机的某路径(如/zlm/)
unzip GmSSL-master.zip
进入源码目录
./config
报错"glob" is not exported by the File::Glob module,将configure文件中 use if $^O ne "VMS", 'File::Glob' => qw/glob/; ,改为use if $^O ne "VMS", 'File::Glob' => qw/:glob/; 再次执行。(/zlm/GmSSL-master/configure)
报错Program fragment delivered error ``"glob" is not exported by the File::Glob module,进入test/build.info,查找File::Glob修改内容同上。
make
sudo make install
报错:gmssl: symbol lookup error: gmssl: undefined symbol: BIO_debug_callback, version OPENSSL_1_1_0d,需要设置环境变量:export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
gmssl version 查看版本号
制作国密双证
1.创建目录
mkdir -p ./demoCA ./demoCA/newcerts ./demoCA/private #创建目录
touch ./demoCA/index.txt #创建文件 (openSSL定义的已签发证书的文本数据库文件,这个文件通常在初始化的时候是空的)
chmod 777 ./demoCA/private
echo 01 > ./demoCA/serial #serial:证书签发时使用的序列号参考文件,该文件的序列号是以16进制格式进行存放的,该文件必须提供并且包含一个有效的序列号。
echo 01 > ./demoCA/crlnumbe #输入序列号为01
2.制作根证书
gmssl ecparam -genkey -name sm2p256v1 -text -out ./demoCA/private/cakey.pem #生成CA根密钥
gmssl req -new -key ./demoCA/private/cakey.pem -out ./demoCA/careq.pem #生成CA证书请求
gmssl x509 -req -days 3650 -sm3 -in ./demoCA/careq.pem -signkey ./demoCA/private/cakey.pem -out ./demoCA/ cacert.pem #生成根证书cacert.crt
3.制作证书
gmssl ecparam -genkey -name sm2p256v1 -text -out demoCA/sm2_sign1.key #生成密钥
gmssl req -new -key demoCA/sm2_sign1.key -out demoCA/sm2_sign1.req #生成证书请求
修改配置文件openssl.cnf中“[ usr_cert ]”中的属性值 (路径为/zlm/GmSSL-master/apps/openssl.cnf、vim中使用/可以快速定位)
# This is typical in keyUsage for a client certificate.
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
# keyUsage = digitalSignature
# keyUsage = keyEncipherment
key usage扩展为Digital Signature, Non-Repudiation, Key Encipherment (e0),证书可以用来加密和签名。
key usage扩展为Digital Signature没有加密功能,只能用来签名。
key usage扩展为keyEncipherment没有签名功能,只能用来加密。
gmssl ca -md sm3 -in demoCA/sm2_sign1.req -out demoCA/sm2_enc1.crt -days 3650 -config GmSSL-master/apps/openssl.cnf #签发证书,生成sm2_enc1.crt
按照上述修改属性值的方式,修改key usage后再签发一次
gmssl ca -md sm3 -in demoCA/sm2_sign1.req -out demoCA/sm2_sign1.crt -days 3650 -config apps/openssl.cnf #签发证书,生成sm2_sign1.crt
报错failed to update database TXT_DB error number 2:删除demoCA下的index.txt,并再touch下:rm index.txt、touch index.txt
gmssl pkcs12 -export -out demoCA/sm2_sign1.pfx -inkey demoCA/sm2_sign1.key -in demoCA/sm2_sign1.crt #将x509证书转换为pkcs12格式的证书文章来源:https://www.toymoban.com/news/detail-774621.html
chmod 777 demoCA/sm2_sign1.pfx #修改权限后可以导出文章来源地址https://www.toymoban.com/news/detail-774621.html
到了这里,关于GmSSL安装与国密双证制作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!