天天看點

gmssl生成自簽名證書

gmssl是在openssl源碼基礎上,增加了對國密的實作

gmssl下載下傳位址 https://github.com/guanzhi/GmSSL/releases

版本:gmssl-1.3.0

作業系統:CentOS7 x86_64          

注意:在CentOS6.4 x86_64上編譯失敗,應該是跟gcc版本有關

1、根據說明安裝gmssl

./config no-shared 不去編譯動态庫,編譯出來的gmssl不再依賴libssl.so

make

make install

2、修改/usr/local/ssl/openssl.cnf

[ ca ]

default_ca      = CA_default            # The default ca section

此處指定預設的CA配置讀取的section,CA_default表示section名稱,配置中可以有多個CA的section,如果名稱找不到的話,就會導緻配置加載失敗

Using configuration from /usr/local/ssl/openssl.cnf

variable lookup failed for CA_gaowei_test::private_key

[ CA_default ]

dir             = /opt/gw/CA_gaowei_test                # Where everything is kept 

CA的根路徑,根據實際情況設定

3、初始化CA目錄

建立根目錄 mkdir -p  /opt/gw/CA_gaowei_test 

cd /opt/gw/CA_gaowei_test 

在此路徑下要建立好new_certs_dir和private_key的子目錄,預設是newcerts和private

mkdirnewcerts

mkdirprivate

建立好database檔案index.txt

touchindex.txt

建立好serial,并寫入初始序号,如1000000000001

vi serial

4、生成證書步驟

生成密鑰對

gmssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:sm2p256v1 -pkeyopt ec_param_enc:named_curve -out skey.pem

生成CA憑證

gmssl req -new -x509 -key skey.pem -out cacert.pem

生成使用者證書請求

gmssl req -new -key skey.pem -out serverreq.pem

用CA憑證簽名生成使用者證書

gmssl ca -in serverreq.pem -out servercert.pem

簽名過程中出現如下錯誤提示:

The stateOrProvinceName field needed to be the same in the

CA certificate (ZheJiang) and the request (JiangSu)

需要修改配置檔案中的比對政策,将match改為optional

openssl程式設計參考http://www.cppblog.com/flyonok/archive/2011/03/24/133100.html

證書讀取參考https://www.cnblogs.com/huhu0013/p/4791430.html

加解密參考 http://blog.csdn.net/fenghaibo00/article/details/17248381

繼續閱讀