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 

c/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

你可能感兴趣的:(数字证书)