zoukankan      html  css  js  c++  java
  • 国密证书生成实践

    实验环境:

    Linux ubuntu/Centos 64
    x86_64 x86_64 x86_64 GNU/Linux
    

     

    1、根据官网说明安装gmssl

     

    $ unzip GmSSL-master.zip
    $ cd GmSSL-master
    $ ./config no-saf no-sdf no-skf no-sof no-zuc  no-shared         #不去编译动态库,编译出来的gmssl不再依赖libssl.so
    $ make
    $ sudo make install
    

      

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

    $ vi   /usr/local/sslopenssl.cnf 
    

      

    [ ca ]
    default_ca      = CA_default            # The default ca section
    [ CA_default ] #dir		= ./demoCA		# Where everything is kept 
    dir		= /home/myapp/demoCA  #此处修改 
    

      

    3、初始化CA目录

    1)创建根目录

    $ mkdir -p  /home/myapp/demoCA
    $ cd /home/myapp/demoCA 
    

    2)创建其他目录

    在此路径下要创建好/usr/local/ssl/openssl.cnf中需要的certs, crl ,new_certs_dir和private_key的子目录,默认是newcerts和private

    $ mkdir certs crl newcerts private 

    3)创建好database文件index.txt

    touch index.txt 

    4)创建好serial文件,并写入初始序号,如01

    echo "01" > serial
    

    4、生成国密证书步骤 

    (1)生成根证书

    1)生成私钥key

    $ gmssl ecparam -genkey -name sm2p256v1 -text -out Root.key -config  /usr/local/ssl/openssl.cnf 

    2)生成证书签名请求

    $ gmssl req -new -key Root.key -out Root.req -subj /C=CN/ST=Guang Zhou/L=GZ/O=Root/OU=Root Sign/CN=RootCA/emailAddress=Root@gmail.com  
    -config /usr/local/ssl/openssl.cnf

    3)生成根证书

    $ gmssl x509 -req -days 3650 -sm3 -in Root.req -signkey Root.key -out RootCA.crt $ cp RootCA.crt demoCA/
    $ cp Root.key demoCA/private/
    

     类似于 apache/ssl/ca.crt和apache/ssl/ca.key

    (2)生成中间证书(即客户端证书)

    1)生成私钥

    $ gmssl ecparam -genkey -name sm2p256v1 -text -out Medium.key -config  /usr/local/ssl/openssl.cnf 

    2)生成客户证书请求

    $ gmssl req -new -key Medium.key -out Medium.req -subj /C=CN/ST=Guang Zhou/L=GZ/O=Medium/OU=Medium Sign/CN=MediumCA/emailAddress=Medium@gmail.com  -config  /usr/local/ssl/openssl.cnf

    3)签发证书

    $ gmssl x509 -req -sm3 -days 3650 -CA  RootCA.crt -CAkey demoCA/private/Root.key -CAcreateserial -in Medium.req -out MediumCA.crt 

    4)证书验证

    $ gmssl verify -CAfile RootCA.crt MediumCA.crt 
    $ cp MediumCA.crt demoCA/
    $ cp Medium.key demoCA/private/

    5)证书转换成浏览器认识的格式 pfx

    $ gmssl pkcs12 -export  -inkey Medium.key -in MediumCA.crt -out test.pfx -passin  pass:xxx -passout pass:xxx

    6) 查看证书信息

    PKCS转换为PEM
    gmssl pkcs12 -in test.pfx -out cert.pem -nodes
    转换后可查看证书信息
    打印出证书的内容:
    gmssl x509 -in cert.pem -noout -text
    打印出证书的系列号
    gmssl x509 -in cert.pem -noout -s erial
    打印出证书的拥有者名字
    gmssl x509 -in cert.pem -noout -subject
    打印出证书的MD5特征参数
    gmssl x509 -in cert.pem -noout -fingerprint

    (3)生成服务器证书

      1) 生成私钥

    $ gmssl ecparam -genkey -name sm2p256v1 -text -out Server.key -config /usr/local/ssl/openssl.cnf

     2) 证书请求

    $ gmssl req -new -key Server.key -out Server.csr -subj /C=CN/ST=Guang Zhou/L=GZ/O=Server/OU=Server Sign/CN=ServerCA/emailAddress=Server@gmail.com -config /usr/local/ssl/openssl.cnf

    3) 签发证书

    $ gmssl x509 -req -sm3 -days 3650 -CA RootCA.crt -CAkey demoCA/private/Root.key -CAcreateserial -in Server.csr -out ServerCA.crt

    4)证书验证

    $ gmssl verify -CAfile RootCA.crt ServerCA.crt
    

      

     

  • 相关阅读:
    完全背包
    01背包
    游戏编程:为什么C++游戏开发比Java更好,其实是因为这两个点!
    VS code搭建 C 和 C++ 环境的完整图文教程!赶紧收藏,这波不亏!
    来自清华计算机系的招聘信息,第一个要求就劝退99%的人!网友:但福利待遇真好!
    C++ 必看书籍清单!从C++ Primer 到 源码剖析,精通真的很难!
    C语言简单编程速成!保姆级入门教程, 目标达成!
    9 名程序员被抓!这次是真的活该.....
    你知道各类开发语言的薪酬差距吗?高薪在于适合,而不在于广度!
    apache common包 CollectionUtils 使用 详解
  • 原文地址:https://www.cnblogs.com/mrwh/p/11558888.html
Copyright © 2011-2022 走看看