发现了一篇图文并茂的超棒的  加密解密, 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 ; openssl genrsa -out /etc/pki/CA/private/cakey.pem )
#生成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 )
#生成密钥
openssl req -new -key /etc/httpd/ssl/httpd.key -days -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
#生成证书, 并保存到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 > /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  -->必须

  

创建私有CA, 加密解密基础, PKI, SSL的更多相关文章

  1. linux基础之加密解密、PKI及SSL、创建私有CA

    加密解密基础 1. 对称加密: 加密和解密使用同一个密钥 常见的加密算法有:DES.3DES.AES.Blowfish.Twofish.IDEA.RC6.CAST5 特性: 1. 加密.解密使用同一个 ...

  2. openssl生成CA签署 及 加密解密基础

    openssl  生成私有CA 及签署证书 openssl 配置文件: /etc/pki/tls/openssl.cnf 1. 在openssl CA 服务器端生成私钥 cd /etc/pki/CA/ ...

  3. 自签名证书和私有CA签名的证书的区别 创建自签名证书 创建私有CA 证书类型 证书扩展名【转】

    自签名的证书无法被吊销,CA签名的证书可以被吊销 能不能吊销证书的区别在于,如果你的私钥被黑客获取,如果证书不能被吊销,则黑客可以伪装成你与用户进行通信   如果你的规划需要创建多个证书,那么使用私有 ...

  4. 创建私有CA并签发证书

    一.创建私有CA 1.创建所需要的文件 2.创建私有密钥 3.CA自签证书 -new: 生成新证书签署请求:               -x509: 专用于CA生成自签证书:不自签的时候不要加该选项 ...

  5. 使用 OpenSSL 创建私有 CA:3 用户证书

    OpenSSL 创建私有 CA 三部曲:使用 OpenSSL 创建私有 CA:1 根证书使用 OpenSSL 创建私有 CA:2 中间证书使用 OpenSSL 创建私有 CA:3 用户证书 在前文&l ...

  6. 使用 OpenSSL 创建私有 CA:2 中间证书

    OpenSSL 创建私有 CA 三部曲:使用 OpenSSL 创建私有 CA:1 根证书使用 OpenSSL 创建私有 CA:2 中间证书使用 OpenSSL 创建私有 CA:3 用户证书 本文将在前 ...

  7. 使用 OpenSSL 创建私有 CA:1 根证书

    OpenSSL 创建私有 CA 三部曲:使用 OpenSSL 创建私有 CA:1 根证书使用 OpenSSL 创建私有 CA:2 中间证书使用 OpenSSL 创建私有 CA:3 用户证书 OpenS ...

  8. 加密解密(7)*PKI基础知识(完整)

    PKI 基础知识 摘要 本白皮书介绍了加密和公钥基本结构(PKI)的概念和使用 Microsoft Windows 2000 Server 操作系统中的证书服务的基础知识.如果您还不熟悉加密和公钥技术 ...

  9. OpenSSL创建私有CA

    1.编辑/etc/pki/tls/openssl.cnf [ CA_default ] dir             = /etc/pki/CA           # 工作目录certs      ...

随机推荐

  1. hiho 1476 - 矩形计数 容斥

    题目链接 如图所示,在由N行M列个单位正方形组成的矩形中,有K个单位正方形是黑色的,其余单位正方形是白色的. 你能统计出一共有多少个不同的子矩形是完全由白色单位正方形组成的吗? ----------- ...

  2. 一个APP开发有那么难吗?

    app开发 idea:产品设计喵有一个想法. 人员配置: 攻城狮:前端后端服务器齐撸 产品设计:设计原型/UI效果图(界面/交互)齐撸] 流程分析: 1.产品设计喵反复打磨自己的想法,明确要做什么样的 ...

  3. ZBrush模型的细分

    在ZBrush®中对模型进行雕刻时,随着细节越来越丰富,原有的面数已经不能满足我们对细节的要求,为了得到更多的细节,我们就必须增加模型的面数,让更多的面来支持我们进行雕刻,如下图(左)和下图(右)所示 ...

  4. jsp基本内置标签

    <jsp:foward page="url"> <jsp:param value=" " name=" "/> &l ...

  5. python位操作(进制)与ascii

    位操作符 位操作的操作符与python的set的操作符一样.与C语言中的位操作符也是一样的. a = 60 #60的二进制为 0011 1100b = 13 #13的二进制为 00001101 c = ...

  6. [luogu1772 ZJOI2006] 物流运输 (最短路 线性dp)

    题目描述 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格的管理和跟踪. ...

  7. NYIST 677 碟战

    碟战时间限制:2000 ms | 内存限制:65535 KB难度:4 描述知己知彼,百战不殆!在战争中如果被敌人掌握了自己的机密,失败是必然的.K国在一场战争中屡屡失败,就想到自己的某些城市可能会有敌 ...

  8. LaTeX 基本的公式符号命令

    本系列文章由 @YhL_Leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/50240237 下面列出一些基本的LaT ...

  9. 洛谷 2921 记忆化搜索 tarjan 基环外向树

    洛谷 2921 记忆化搜索 tarjan 传送门 (https://www.luogu.org/problem/show?pid=2921) 做这题的经历有点玄学,,起因是某个random题的同学突然 ...

  10. 新建Eclipse工作空间,复制原有的配置(转)

    方法一: File->Switch workspace->Other...,按下图选择 只复制简单的配置,如cvs之类的信息是不会复制的. 方法二: 在方法一的基础上做如下操作 将新建的w ...