天天看點

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
           

繼續閱讀