天天看点

GmSSL sm2 命令小结,成为CA、生成签名请求、签名生成数字证书、验签、生成PKCS12

写下这篇时用的是 GmSSL 2.4.4,未来的版本可能命令不一样。

# 生成SM2密钥对 "cakeyGM.pem"

mkdir ~/myCert
cd ~/myCert
mkdir demoCA
mkdir demoCA/private
mkdir demoCA/certs
mkdir demoCA/crl
mkdir demoCA/newcerts

touch demoCA/index.txt
touch demoCA/serial

od -vAn -N4 -tx1 < /dev/urandom |tr -d ' ' > demoCA/serial

cd demoCA

gmssl sm2 -genkey -out private/cakeyGM.pem
           

# Self-signed SM2 certificate generation as cacertGM.crt:

# 生成 SM2 自签证书,作为根CA “cacertGM.crt”

gmssl req -new -x509 -key private/cakeyGM.pem -out cacertGM.crt
           

# 生成SM2密钥对 "testUserGM.key"

cd ..
gmssl sm2 -genkey -out testUserGM.com.key
           

# 生成证书请求CSR

gmssl req -new -key testUserGM.com.key -out testUserGM.com.csr
           

# 用一开始生成的CA进行签名

gmssl ca -in testUserGM.com.csr -out testUserGM.com.crt -cert demoCA/cacertGM.crt -keyfile demoCA/private/cakeyGM.pem
           

# 验签

gmssl verify -verbose -x509_strict -CAfile demoCA/cacertGM.crt testUserGM.crt 
           

有些证书并非标准的 x509 格式,我见过有的证书直接是Base64的内容,这时候需要手动添加一些头和尾的东西:

-----BEGIN CERTIFICATE-----
certificate content in Base64
-----END CERTIFICATE-----
           

然后可以使用以下方式认证,其中c1是 c2的上级证书

gmssl verify -verbose -partial_chain -trusted c2 c1
           

# 生成PKCS12,方便导入

cd demoCA

gmssl pkcs12 -export -in cacertGM.crt -inkey ./private/cakeyGM.pem -out DongAnRootCA.p12
           

继续阅读