需要的依赖:gcc和perl5,自己安装即可,如果是内网离线安装,我传了依赖包,附上链接:https://wwub.lanzoue.com/iUHjY1a47qcb
1、编译安装GmSSL
1.1、上传GmSSL安装包gmssl-master.tar.gz到部署的服务器上(上传位置不固定,建议/home目录,以下文档均以/home做演示说明)
1.2、解压依赖安装包:tar -zxvf gmssl-master.tar.gz
1.3、进入安装目录cd gmssl-master
1.4、执行编译检查命令 ./config --prefix=/usr/local/gmssl --openssldir=/usr/local/gmssl no-shared
1.5、执行编译命令 make (注:这里编译需要几分钟)
1.6、执行编译安装命令make install (注:如果最后报一个:install_man_docs错误,不用管,没有影响)
1.7、配置gmssl环境变量 vi ~/.bashrc
然后在文件的最后添加export PATH=$PATH:/usr/local/gmssl/bin
然后保存退出后执行source ~/.bashrc
1.8、国密SSL安装情况验证:执行查看gmssl版本命令:gmssl version -a 安装成功:如下图所示
1.9、GmSSL在linux编译安装完成
2、生成国密SSL证书
2.1、创建并进入demoCA目录
2.1.1、mkdir demoCA
2.1.2、cd demoCA
2.2、创建certs、clr、newcerts、private等目录
2.2.1、mkdir certs clr newcerts private
2.3、创建index.txt和index.txt.attr文件
2.3.1、touch index.txt
2.3.2、touch index.txt.attr
2.4、创建并写入serial文件
2.4.1、echo ’01‘ > serial
2.5、最终创建完成如下
2.6、生成root根证书
2.6.1、创建gmssl_cert文件夹
2.6.1.1、cd /home/gmssl_cert/
2.6.2、创建root证书的密钥文件
2.6.2.1、gmssl ecparam -genkey -name sm2p256v1 -out Root.key
2.6.3、创建root证书文件
2.6.3.1、gmssl req -x509 -sm3 -days 36500-key Root.key -out RootCA.crt
2.6.3.2、这个命令输入后,会让填一些信息,按照下面截图填,只填圈起来的三项,随便填,只需要注意和后面ca和user证书的common name不同即可,其余的直接回车不填
2.6.3.3、查看是否成功,圈起来这两大小不为0即为成功
2.7、生成ca证书
2.7.1、生成ca证书的密钥文件
2.7.1.1、gmssl ecparam -genkey -name sm2p256v1 -out ca.key
2.7.2、生成ca证书的申请文件
2.7.2.1、gmssl req -new -sm3 -extensions v3_req -key ca.key -out ca.csr
2.7.2.2、输入这个命令后,会让填一些信息,按照下面截图填,只填圈起来的几项,除了common Name填得不能和root以及user的common name相同外随便填,其余的直接回车不填
2.7.3、生成ca证书文件(注:这里会让输入两次y,在下方图中圈起来处)
2.7.3.1、gmssl ca -md sm3 -extensions v3_ca -in ca.csr -out ca.crt -days 36500-cert RootCA.crt -keyfile Root.key
2.8、使用ca证书颁发用户证书
2.8.1、生成用户证书的密钥文件
2.8.1.1、gmssl ecparam -genkey -name sm2p256v1 -text -out user.key
2.8.2、生成用户证书的申请文件
2.8.2.1、gmssl req -new -key user.key -out user.req
2.8.2.2、输入这个命令后,会让填一些信息,按照下面截图填,只填圈起来的几项,除了common Name填得不能和root以及ca的common
name相同外都随便填,其余的直接回车不填
2.8.3、生成用户证书文件(注:这里会让输入两次y,在下方图中圈起来处)
2.8.3.1、gmssl ca -md sm3 -in user.req -out user.crt -days 36500-cert ca.crt -keyfile ca.key
2.9、用户证书转换为pfx格式
2.9.1、gmssl pkcs12 -export -out user.pfx -inkey user.key -in user.crt
2.9.2、命令执行后会让输入两次密码,输入上面设置的密码即可
2.10、查看证书是否全部生成转换完成--只要圈起来的都不为0则代表全部生成成功
3、FAQ
3.1、解压GmSSL源码报错: /bin/sh: gcc: command not found
3.1.1、gcc依赖没装,自己安装或者下载文章头部链接的依赖去安装,手动下载依赖后,安装的命令:rpm -Uvh ./*.rpm --nodeps --force
3.2、编译GmSSL源码报错: you need Perl 5,perl依赖没装,同3.1
3.3、生成证书报错:ca: ./demoCA/newcerts is not a directory
3.3.1、修改gmssl的配置文件,将CA_default下的dir由原本的`./demoCA`修改为`../demoCA`,就是将点斜杠改为了点点斜杠,然后保存退出即可。位置如下图
3.4、按照步骤中途生成证书的时候失败了,可能是以前生成证书时产生的旧数据影响
3.4.1、cd /home/demoCA/
3.4.2、rm -f index.txt*
3.4.3、touch index.txt
3.4.4、touch index.txt.attr
3.4.5、rm -f serial*
3.4.6、echo '01' > serial
3.4.7、rm -f ./newcerts/*