1. 程式人生 > 實用技巧 >gmssl 生成證書以及生成crl

gmssl 生成證書以及生成crl

配置環境:

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

index.txt:openSSL定義的已簽發證書的文字資料庫檔案,這個檔案通常在初始化的時候是空的;

serial:證書籤發時使用的序列號參考檔案,該檔案的序列號是以16進位制格式進行存放的,該檔案必須提供並且包含一個有效的序列號。

修改配置檔案/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

吊銷證書

gmssl ca -revoke user.crt

生成吊銷證書列表

gmssl ca -gencrl -out test.crl

檢視吊銷證書列表

gmssl crl -in test.crl -noout -text

加密和簽名證書屬性的配置:

修改配置檔案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沒有簽名功能,只能用來加密。