在使用openssl時,發(fā)現(xiàn)不支持國密協(xié)議,因此找了支持的GmSSL,自己編譯安裝。
國密GmSSL安裝
工具:GmSSL 2.5.4 - OpenSSL 1.1.0d
環(huán)境:Ubuntu 20.04.1
?
Gmssl安裝
方法一:進入https://github.com/guanzhi/GmSSL/tree/master下載源代碼(develop分支為3.0分支)
方法二:壓縮包已上傳到附件,可以直接下載:GmSSL-master.zip
?
將zip文件上傳到linux虛擬機的某路徑(如/zlm/)
unzip?GmSSL-master.zip
進入源碼目錄
./config
報錯"glob" is not exported by the File::Glob module,將configure文件中?use if $^O ne "VMS", 'File::Glob' => qw/glob/; ,改為use if $^O ne "VMS", 'File::Glob' => qw/:glob/; 再次執(zhí)行。(/zlm/GmSSL-master/configure)
報錯Program fragment delivered error ``"glob" is not exported by the File::Glob module,進入test/build.info,查找File::Glob修改內(nèi)容同上。
make
sudo make install
報錯:gmssl: symbol lookup error: gmssl: undefined symbol: BIO_debug_callback, version OPENSSL_1_1_0d,需要設(shè)置環(huán)境變量:export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
gmssl version?查看版本號
制作國密雙證
1.創(chuàng)建目錄
mkdir -p ./demoCA ./demoCA/newcerts ./demoCA/private?#創(chuàng)建目錄
touch ./demoCA/index.txt?#創(chuàng)建文件 (openSSL定義的已簽發(fā)證書的文本數(shù)據(jù)庫文件,這個文件通常在初始化的時候是空的)
chmod 777 ./demoCA/private
echo 01 > ./demoCA/serial?#serial:證書簽發(fā)時使用的序列號參考文件,該文件的序列號是以16進制格式進行存放的,該文件必須提供并且包含一個有效的序列號。
echo 01 > ./demoCA/crlnumbe?#輸入序列號為01
2.制作根證書
gmssl ecparam -genkey -name sm2p256v1 -text -out ./demoCA/private/cakey.pem?#生成CA根密鑰
gmssl req -new -key ./demoCA/private/cakey.pem -out ./demoCA/careq.pem?#生成CA證書請求
gmssl x509 -req -days 3650 -sm3 -in ./demoCA/careq.pem -signkey ./demoCA/private/cakey.pem -out ./demoCA/ cacert.pem?#生成根證書cacert.crt
3.制作證書
gmssl ecparam -genkey -name sm2p256v1 -text -out demoCA/sm2_sign1.key?#生成密鑰
gmssl req -new -key demoCA/sm2_sign1.key -out demoCA/sm2_sign1.req?#生成證書請求
修改配置文件openssl.cnf中“[ usr_cert ]”中的屬性值 (路徑為/zlm/GmSSL-master/apps/openssl.cnf、vim中使用/可以快速定位)
# 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沒有簽名功能,只能用來加密。
gmssl ca -md sm3 -in demoCA/sm2_sign1.req -out demoCA/sm2_enc1.crt -days 3650 -config GmSSL-master/apps/openssl.cnf?#簽發(fā)證書,生成sm2_enc1.crt?
按照上述修改屬性值的方式,修改key usage后再簽發(fā)一次
gmssl ca -md sm3 -in demoCA/sm2_sign1.req -out demoCA/sm2_sign1.crt -days 3650 -config apps/openssl.cnf?#簽發(fā)證書,生成sm2_sign1.crt?
報錯failed to update database TXT_DB error number 2:刪除demoCA下的index.txt,并再touch下:rm index.txt、touch index.txt
gmssl pkcs12 -export -out demoCA/sm2_sign1.pfx -inkey demoCA/sm2_sign1.key -in demoCA/sm2_sign1.crt?#將x509證書轉(zhuǎn)換為pkcs12格式的證書文章來源:http://www.zghlxwxcb.cn/news/detail-774621.html
chmod 777 demoCA/sm2_sign1.pfx?#修改權(quán)限后可以導(dǎo)出文章來源地址http://www.zghlxwxcb.cn/news/detail-774621.html
到了這里,關(guān)于GmSSL安裝與國密雙證制作的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!