• 创建私有CA, 加密解密基础, PKI, SSL


    发现了一篇图文并茂的超棒的  加密解密, CA, PKI, SSL 的基础文章, 链接如下:
    https://blog.csdn.net/lifetragedy/article/details/52238057


    简要描述一下概念:

      PKI: Public Key Infrastructure, 公钥体系

        包含, CA, RA, CRL,证书存取库

        CA: 证书签发机构

        RA: 证书注册机构

      X.509是证书标准规范, 定义了证书的结构以及认证协议标准, 现在使用多为v3版本

      SSL: Secure Socket Layer 安全的套接字层

      TLS:Transport Layer Security 安全传输层协议

        分层设计:1.最底层: 基础算法原语的实现, aes, rsa, md5

            2.向上一层: 各种算法的实现

                例如: aes-128-cdb-pkcs7

            3.再向上一层: 组合算法实现的半成品

            4. 用各种组件拼装而成的各种成品密码学协议/软件; 例如 tls, ssh


    创建私有CA的简明操作:

      操作环境: VMware 虚拟两台 CentOS 7.4, 两机互通

        CA签发服务器为 192.168.142.128 --> CA server

        申请CA签发的客户端为 192.168.142.135  --> CA client

      证书申请及签署步骤:

      1. 生成申请请求
      2. RA核验
      3. CA签署
      4. 证书获得及发放

      简明CA相关文件及目录:

      1. openssl默认配置文件: /etc/pki/tls/openssl.cnf --> 有必要的情况下可以修改, 一般不动
        ####################################################################
        [ CA_default ]
        
        dir                 = /etc/pki/CA            # Where everything is kept     -->证书目录
        certs               = $dir/certs             # Where the issued certs are kept   -->证书存取库
        crl_dir             = $dir/crl               # Where the issued crl are kept    -->证书吊销列表
        database            = $dir/index.txt         # database index file.       -->数据库的索引文件
        #unique_subject     = no                     # Set to 'no' to allow creation of    -->是否证书主体必须唯一
                                                                 # several ctificates with same subject.
        new_certs_dir       = $dir/newcerts          # default place for new certs.   -->刚刚签完的证书放哪儿
        
        certificate         = $dir/cacert.pem        # The CA certificate     -->CA自己的证书
        serial              = $dir/serial            # The current serial number    -->证书的序列号
        crlnumber           = $dir/crlnumber         # the current crl number   -->吊销的证书的序列号
                                            # must be commented out to leave a V1 CRL
        crl                 = $dir/crl.pem           # The current CRL     -->当前正在使用的吊销的证书
        private_key         = $dir/private/cakey.pem# The private key    -->CA自己的私钥
        RANDFILE            = $dir/private/.rand     # private random number file                 
        
        x509_extensions     = usr_cert               # The extentions to add to the cert
      2. 必要的文件及目录如下:
        1. # touch index.txt
          -->数据库的索引文件
        2. # echo 1 > serial
          -->证书的序列号

      创建私有CA步骤:

        1. 在完成上面的文件创建后, 给CA自己发一个证明自己是CA的自签证书

          在CA server完成

          

    (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096) 
    #生成4096位的RSA私钥,输出文件为 cakey.pem
    openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 3650 -out cacert.pem
    #以上述私钥为基准生成一个CA自签证书

    自签证书时, 会要求你输入: 国家信息, 省份信息, 城市信息, 公司名称, 公司类型, 主机名, 管理邮箱; 处于测试目的, 我们随便填一下好了;

        2.自签做完, CA server等于启动了; 转移到client虚拟机, 请求发证; 以httpd为例

    (umask077; openssl genrsa -out /etc/httpd/ssl/httpd.key 4096)
    #生成密钥
    openssl req -new -key /etc/httpd/ssl/httpd.key -days 365 -out /etc/httpd/ssl/httpd.csr
    #生成证书请求文件, 注意, 此处只是证书请求文件, 未经过CA签名认证

        

        3. 发送证书申请书到CA server, 由CA server签名盖章后发回client

    scp /etc/httpd/ssl/httpd.csr root@192.168.142.128:/tmp/
    #发送到CA server 的/tmp目录下

    以下为CA server操作

    cd /tmp
    ll -t

     

    我们看到httpd.csr已经成功传送到CA server上来了

    接下来, 就是对其签证的操作:

    openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
    #生成证书, 并保存到CA server的证书目录下, 有效期为一年; 注意此处后缀为统一后缀
    #
    #查看证书中的信息:
    # openssl x509 -in /etc/pki/CA/certs/httpd.crt -noout -text -subject

     证书已签名, 发放给client

    scp /etc/pki/CA/certs/httpd.crt root@192.168.142.135:/etc/httpd/ssl

    证书成功发放

      4.吊销证书  

      **首次吊销时需要操作** echo 01 > /etc/pki/CA/crlnumber 

      

        在client获取要吊销的证书的serial编号 openssl x509 -in /PATH/FROM/CERT_FILE -noout -serial -subject 

        在CA server端对比检验 上述信息是否与 /etc/pki/CA/index.txt 文本中信息一致;

        CA server操作吊销证书:

    openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem

        更新证书吊销列表: openssl ca -gencrl -out THISCA.crl 

    至此私有CA发放完成, 注意此CA仅在互相任何的情况下才能生效;


      CA证书的用法在后续随笔中会继续提到, 例如 httpd的https服务, 或者nginx的https服务等;


     关于CA签发过程中的后缀: 

    • 私钥 *.key
    • 公钥 *.pem
    • 待申请证书 *.csr
    • 证书 *.crt  -->必须

      

  • 相关阅读:
    SqlParameter的作用与用法
    自制ASP.NET 本地授权文件
    教你如何谷歌浏览器免费打电话
    grep命令
    前端培训
    环境变量
    jenkins执行脚本npm: command not found解决
    Linux下给mysql创建用户并分配权限
    h5视频微信禁止全屏 x5-playsinline
    git 删除本地分支和远程分支、本地代码回滚和远程代码库回滚
  • 原文地址:https://www.cnblogs.com/gettolive/p/9042898.html
Copyright © 2020-2023  润新知