前言
国密双证书,包括签名证书和加密证书,可以通过gmssl方式生成,也可以通过tassl的方式生成。
gmssl制作国密双证书
gmssl 生成证书过程中会调用/usr/local/gmssl/openssl.cnf 这个配置文件,需要修改证书的信息的,可以修改该配置文件。
1 配置前提环境:
mkdir demoCA
cd demoCA
mkdir certs clr newcerts private
touch index.txt
touch index.txt.attr
echo "01" > serial
2 生成根密钥和证书
gmssl ecparam -genkey -name sm2p256v1 -out private/root-cakey.pem //生成根密钥
gmssl req -new -sm3 -key private/root-cakey.pem -out root-cacsr.pem //生成根证书请求文件
gmssl req -x509 -sm3 -days 365 -key private/root-cakey.pem -out root-cacert.pem //生成自签名的根证书
3 生成用户密钥,并使用根证密钥签发用户证书
gmssl ecparam -genkey -name sm2p256v1 -out thirdkey.pem
gmssl req -new -sm3 -key thirdkey.pem -out thirdcsr.pem
gmssl ca -batch -md sm3 -extensions v3_ca -in thirdcsr.pem -out thirdcert.pem -days 365 -cert sub-cacert.pem -keyfile private/root-cakey.pem
4 签名证书和加密证书
参考如下博文:
https://blog.51cto.com/fhjx1234/2491496
修改/usr/local/gmssl/openssl.cnf 这个配置文件的key usage字段
key usage扩展为Digital Signature没有加密功能,只能用来签名。
key usage扩展为keyEncipherment没有签名功能,只能用来加密。
然后从新按照步骤2 生成用户证书即可。
5 生成pfx格式证书
默认生成x509格式的公钥证书,如果需要p12的pfx格式证书,需要坐下转换。
用户证书转换为pfx格式
gmssl pkcs12 -export -out user.pfx -inkey user.key -in user.crt
6 查看证书
gmssl x509 -in thirdcert.pem -text -noout
可以看到证书信息,证书类型等信息。