GmSSL安装与国密双证制作

在使用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.cnfvim中使用/可以快速定位)

# 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.txttouch index.txt

gmssl pkcs12 -export -out demoCA/sm2_sign1.pfx -inkey demoCA/sm2_sign1.key -in demoCA/sm2_sign1.crt #x509证书转换为pkcs12格式的证书

chmod 777 demoCA/sm2_sign1.pfx #修改权限后可以导出

  • 31
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值