gmssl国密证书生成方式:国密多级ca证书,国密加密证书,国密签名证书

配置前提环境:

mkdir  demoCA
cd  demoCA
mkdir certs clr newcerts private
touch index.txt
touch index.txt.attr
echo "01" > serial

index.txt:openSSL定义的已签发证书的文本数据库文件,这个文件通常在初始化的时候是空的;

serial:证书签发时使用的序列号参考文件,该文件的序列号是以16进制格式进行存放的,该文件必须提供并且包含一个有效的序列号。

注:gmssl执行时,如果gmssl的安装路径为“/usr/local/gmssl/”,执行时加上路径的执行方法为:


/usr/local/gmssl/bin/gmssl version

修改配置文件/usr/local/gmssl/openssl.cnf中“[ usr_cert ]”中的属性值

[ CA_default ]

dir             = ../demoCA             # Where everything is kept     //由“./demoCA”修改为“../demoCA”

root证书

gmssl ecparam -genkey -name sm2p256v1 -out Root.key

gmssl req -x509 -sm3 -days 3650 -key Root.key -out RootCA.crt

ca证书

gmssl ecparam -genkey -name sm2p256v1 -out ca.key

gmssl req  -new -sm3 -extensions v3_req -key ca.key -out ca.csr

gmssl ca -md sm3 -extensions v3_ca -in ca.csr -out ca.crt -days 1850 -cert RootCA.crt -keyfile Root.key

下一级CA证书

gmssl ecparam -genkey -name sm2p256v1 -out ca2.key

gmssl req  -new -sm3 -extensions v3_req -key ca2.key -out ca2.csr

gmssl ca -md sm3 -extensions v3_ca -in ca2.csr -out ca2.crt -days 1850 -cert ca.crt -keyfile ca.key

使用ca证书颁发用户证书

gmssl ecparam -genkey -name sm2p256v1 -text -out user.key

gmssl req -new -key user.key -out user.req 

gmssl ca -md sm3  -in user.req -out user.crt -days 365 -cert ca.crt -keyfile ca.key

用户证书转换为pfx格式


gmssl pkcs12 -export -out user.pfx -inkey user.key -in user.crt

加密和签名证书属性的配置:

修改配置文件openssl.cnf中“[ usr_cert ]”中的属性值

# 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没有签名功能,只能用来加密。

猜你喜欢

转载自blog.51cto.com/fhjx1234/2491496