• 创建用私钥签名的证书


    生成证书文件

    1.为服务器端和客户端准备公钥、私钥

    • 生成服务器端私钥

      openssl genrsa -des3 -out server.key 2048
      

      -des3代表加上了加密,后面的2048是代表生成的密钥的位数,1024已经不是很安全

    • 生成服务器端公钥

      openssl rsa -in server.key -pubout -out server.pem
      
    • 生成客户端私钥

      openssl genrsa -des3 -out client.key 2048
      
    • 生成客户端公钥

      openssl rsa -in client.key -pubout -out client.pem
      

    1.生成 CA 机构证书

    • 生成 CA 私钥

      openssl genrsa -des3 -out ca.key 2048
      
    • 生成证书请求

       # X.509 Certificate Signing Request (CSR) Management.
      openssl req -new -key ca.key -out ca.csr
      
    • 使用私钥为证书请求签名,生成给服务器签署的证书,格式是x509的PEM格式

      # X.509 Certificate Data Management.
      openssl x509 -req -in ca.csr -signkey ca.key -out ca.crt -outform pem  -days 3650
      #-outform pem指定证书生成的格式,默认是pem,所以这个命令也可以写作成
      #-days 3650 指10年有效
      #也可以
      openssl x509 -req -in ca.csr -signkey ca.key -out ca.crt
      

    生成服务器端证书

    • 服务端向CA生成证书请求

      # 服务器端需要向 CA 机构申请签名证书,在申请签名证书之前依然是创建自己的 CSR 文件
      openssl req -new -key server.key -out server.csr
      # 向自己的 CA 机构申请证书,签名过程需要 CA 的证书和私钥参与,最终颁发一个带有 CA 签名的证书
      openssl x509 -req -CA ca.crt -CAkey ca.key -CAcreateserial -in server.csr -out server.crt
      
    • 生成cer文件

      #使用openssl 进行转换
      openssl x509 -in server.crt -out server.cer -outform der
      

    简述 HTTPS 的运作

    HTTPS示意图

    主要过程:

    • 1.客户端生成一个随机数 random-client ,传到服务器端(Say Hello)
    • 2.服务器端生成一个随机数 random-server ,和着公钥,一起回馈给客户端(I got it)
    • 3.客户端收到的东西原封不动,加上 premaster secret (通过 random-client、 random-server 经过一定算法生成的东西),再一次送给服务器端,这次传过去的东西会使用公钥加密
    • 4.服务器端先使用私钥解密,拿到 premaster secret ,此时客户端和服务器端都拥有了三个要素: random-client 、 random-server 和 premaster secret
    • 5.安全通道已经建立,以后的交流都会校检上面的三个要素通过算法算出的session key

    参考:

  • 相关阅读:
    Ubuntu下编译3.0.4内核
    多个Android项目源码-覆盖方方面面值得学习
    8086汇编指令速查手册
    xz解压缩详解
    (转载)移植最新内核linux-3.14.6到mini2440开发板
    收录 Uboot 详解
    Windows Terminal 配置文件
    C# 7.2 中 In参数( in parameter )的性能比较
    JavaScript 的 parseInt(x), parseFloat(x), Number(x), +x, ~~x, x>>>0, isNaN(x) 区别和结果
    Windows Terminal 配置 git-bash,集成右键菜单,集成VSCode
  • 原文地址:https://www.cnblogs.com/one-villager/p/8108987.html
Copyright © 2020-2023  润新知