美文网首页
搭建数字证书实验环境

搭建数字证书实验环境

作者: louyang | 来源:发表于2020-04-22 10:37 被阅读0次

    实验机器 Cent OS 8 和 OpenSSL 1.1.1c

    $ cat /etc/centos-release
    CentOS Linux release 8.0.1905 (Core)
    
    $ openssl version
    OpenSSL 1.1.1c FIPS  28 May 2019
    

    用OpenSSL搭建实验CA,需要预先创建如下目录结构:

    $ mkdir -p my-ca/{certs,crl,newcerts,private} && cd my-ca 
    $ cp /etc/pki/tls/openssl.cnf . 
    $ touch index.txt 
    $ echo '01' > serial 
    $ vi openssl.cnf 
        [ CA_default ] 
        dir     = .    # <-- change this 
        private_key = $dir/cakey.pem     # <-- change this 
    

    看一下真实的CA:
    https://www.datanyze.com/market-share/ssl--21/China

    创建实验CA密钥对和证书:

    $ openssl genrsa -out cakey.pem 4096    // 创建密钥对
    $ openssl rsa -in cakey.pem -text -noout    // 看一下密钥对的内容
    $ openssl rsa -in cakey.pem -pubout > cakey.pub.pem    // 可选,导出公钥
    $ openssl rsa -pubin -in cakey.pub.pem -text -noout    // 可选,看一下公钥的内容
    

    穿插一个知识点,

    image.png

    n就是openssl命令输出中的modulus,所以n,e构成公钥,n,d构成私钥;其他参数如prime1,2据说是提高解密效率的。

    另外,通过浏览器可以看到浏览网站的证书,重点关注一下subject和public key这两个内容。

    $ openssl req -new -x509 -key cakey.pem -out cacert.pem    // 创建实验CA证书
        Country Name (2 letter code) [XX]:CN 
        State or Province Name (full name) []:Zhejiang 
        Locality Name (eg, city) [Default City]:Hangzhou 
        Organization Name (eg, company) [Default Company Ltd]:MY CA 
        Organizational Unit Name (eg, section) []: 
        Common Name (eg, your name or your server's hostname) []:www.my-ca.org 
        Email Address []:admin@my-ca.org 
    $ openssl x509 -in cacert.pem -text -noout    // 看一下内容
    $ cat cacert.pem    // pem文件的内容,放到windows上,后缀名为crt
    copy and paste content of cacert.pem into windows file cacert.crt
    $ double click cacert.crt    // 在windows上打开证书,看内容
    

    如果要拉长证书的有效期,可以用-days 3650,3650表示10年。

    创建实验网站的密钥对,和证书签名请求:

    $ openssl genrsa -out private/my-web.key 2048    // 生成实验网站的密钥对
    $ openssl req -new -key private/my-web.key -out newcerts/my-web.csr    // 生成实验网站的证书签名请求
        Country Name (2 letter code) [XX]:CN 
        State or Province Name (full name) []:Zhejiang 
        Locality Name (eg, city) [Default City]:Hangzhou 
        Organization Name (eg, company) [Default Company Ltd]:MY WEB 
        Organizational Unit Name (eg, section) []: 
        Common Name (eg, your name or your server's hostname) []:www.my-web.com 
        Email Address []:admin@my-web.com 
    $ openssl req -in newcerts/my-web.csr -text -noout    // 看一下证书内容
      openssl rsa -in private/my-web.key -pubout > my-web.pub    // 从密钥对中导出公钥
      openssl rsa -pubin -in my-web.pub -text -noout    // 显示公钥内容,和证书中显示的公钥内容应该一致
    

    用实验CA的证书,完成签名:

    $ openssl ca -config openssl.cnf -policy policy_anything -out certs/my-web.pem  -infiles newcerts/my-web.csr    // 完成CA签名
    $ openssl x509 -in certs/my-web.pem -text -noout    // 显示CA签名后的证书内容
    

    参考

    OpenSSL Certification Authority (CA) on Ubuntu Server
    https://kupczynski.info/2013/04/21/creating-your-own-certificates.html

    相关文章

      网友评论

          本文标题:搭建数字证书实验环境

          本文链接:https://www.haomeiwen.com/subject/uiiuihtx.html