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