CENTOS6环境用GmSSL制作SM2国密证书,以期代替用RSA算法制作的SSL证书

2019-05-0811:45:44服务器及运维1 11,864 views1字数 2950阅读模式
 GmSSL是一个开源的密码工具箱,支持SM2/SM3/SM4/SM9/ZUC等国密(国家商用密码)算法、SM2国密数字证书及基于SM2证书的SSL/TLS安全通信协议,支持国密硬件密码设备,提供符合国密规范的编程接口与命令行工具,可以用于构建PKI/CA、安全通信、数据加密等符合国密标准的安全应用。GmSSL项目是OpenSSL项目的分支,并与OpenSSL保持接口兼容。因此GmSSL可以替代应用中的OpenSSL组件,并使应用自动具备基于国密的安全能力。GmSSL项目采用对商业应用友好的类BSD开源许可证,开源且可用于闭源的商业应用。
       GmSSL项目由北京大学关志副研究员的密码学研究组开发维护,项目源码托管于GitHub。自2014年发布以来,GmSSL已经在多个项目和产品中获得部署与应用,并获得2015年度“一铭杯”中国Linux软件大赛二等奖(年度最高奖项)与开源中国密码类推荐项目。GmSSL项目的核心目标是通过开源的密码技术推动国内网络空间安全建设。
等级保护基本要求GB/T 22239中对密码管理提出以下要求:a)     应遵循密码相关国家标准和行业标准;文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

b)    应使用国家密码管理主管部门认证核准的密码技术和产品。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

       本文利用GmSSL来制作SM2国密证书,以期代替用RSA算法制作的SSL证书,探索如何满足等保相关技术要求。
实验环境:CentOS 6.X +
Part 1 安装GmSSL
1、下载GmSSL# wget https://github.com/guanzhi/GmSSL/archive/master.zip文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

# unzip master.zip文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

2、编译安装GmSSL文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

# ./config文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

# make文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

# make install文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

# ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

# ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

3、检查GmSSL版本文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

# gmssl version -a文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

4、测试GmSSL加密文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

SM3 digest generation(哈希算法,类似MD5)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

# echo -n "abc" | gmssl sm3文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

(stdin)= 66c7f0f462eeedd9d1f2d46bdc10e4e24167c4875cf2f7a2297da02b8f4ba8e0文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

SM4 encryptiona and decryption(对称算法,类似AES、3DES)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

# gmssl sms4 -in README.md -out README.sms4文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

# gmssl sms4 -d -in README.sms4文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

SM2 private key generation(非对称算法,类似RSA)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

# gmssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:sm2p256v1 -pkeyopt ec_param_enc:named_curve -out skey.pem文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

Derive the public key from the generated SM2 private key:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

# gmssl pkey -pubout -in skey.pem -out vkey.pem文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

SM2 signature generation and verification:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

# gmssl sm3 -binary README.md | gmssl pkeyutl -sign -pkeyopt ec_scheme:sm2 -inkey skey.pem -out README.md.sig文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

# gmssl sm3 -binary README.md | gmssl pkeyutl -verify -pkeyopt ec_scheme:sm2 -pubin -inkey vkey.pem -sigfile README.md.sig文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

# gmssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:sm2p256v1 -pkeyopt ec_param_enc:named_curve -out dkey.pem文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

# gmssl pkey -pubout -in dkey.pem -out ekey.pem文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

# echo "Top Secret" | gmssl pkeyutl -encrypt -pkeyopt ec_scheme:sm2 -pubin -inkey ekey.pem -out ciphertext.sm2文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

# gmssl pkeyutl -decrypt -pkeyopt ec_scheme:sm2 -inkey dkey.pem -in ciphertext.sm2文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

Self-signed SM2 certificate generation:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

# gmssl req -new -x509 -key skey.pem -out cert.pem文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

Part 2 用GmSSL制作国密证书之SM2
1、创建demoCA目录,在demoCA目录下执行:# mkdir certs crl newcerts private文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

# touch index.txt文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

# echo "01" > serial文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

2、将通过以下自签名生成的放到demoCA目录下,文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

放到demoCA/private文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

3、创建公私钥和证书请求:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

# gmssl ecparam -genkey -name sm2p256v1 -out文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

# gmssl req -new -sm3 -key -out cacsr.pem文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

4、自签名文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

# gmssl req -x509 -sm3 -days 3650 -key -in cacsr.pem -out文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

# gmssl x509 -req -days 3650 -sm3 -in cacsr.pem -signkey -out文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

5、把pem转化成cer文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

# gmssl x509 -inform pem -in -outform der -out cacert.cer文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

6、ca签名(在demoCA的父目录下执行)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

# gmssl ca -md sm3 -in client_csr.pem -out client_cert.pem -days 3650文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

7、显示证书信息:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

# gmssl x509 -text -noout -in文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

# gmssl req -in cacsr.pem -noout -text文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

8、证书通信测试命令文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

SERVER:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

# gmssl s_server -key server_key.pem -cert server_cert.pem -CAfile -cipher ECDHE-SM4-SM3 -verify 1文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

CLIENT:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

# gmssl s_client -key client_key.pem -cert client_cert.pem -CAfile -cipher ECDHE-SM4-SM3 -verify 1文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

注:1、通过测试的GmSSL版本为95c0dba,下载地址https://github.com/guanzhi/GmSSL.git文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

2、以上制作的证书均为:Signature Algorithm: sm2sign-with-sm3文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

3、当前浏览器如IE、Firefox、Chrome等暂不支持SM2国密证书。需要下载专门的国密浏览器才支持SM2国密证书。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html

CENTOS6环境用GmSSL制作SM2国密证书,以期代替用RSA算法制作的SSL证书
      因IE浏览器不兼容国密算法,故字段“签名算法”仅显示国密证书的OID:
CENTOS6环境用GmSSL制作SM2国密证书,以期代替用RSA算法制作的SSL证书
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/11869.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/yunwei/11869.html
Comments  1  访客  1
    • 91星辰 0

      gmssl生成之后的证书怎么放在apache里面?和openssl生成的证书放在一个地方吗?

    Comment

    匿名网友 填写信息

    :?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

    确定