0
点赞
收藏
分享

微信扫一扫

HTTPS

拾光的Shelly 2021-09-27 阅读 44
日记本

1. 证书

1.1 证书的应用场景

1.2 证书规范和格式 -- x509

1.3 CA证书

  1. 证书的获取和身份的认证

  2. 客户端如何验证CA证书是可信任的?

  1. 有哪些CA机构?

1.4 公钥基础设施 - PKI

  1. PKI组成的要素
    • 用户
      • 申请证书的人 -> web服务器端
        • 申请证书
          • 生成密钥对 , 或者委托ca生成
          • 将公钥发送给CA
          • ca使用自己的私钥对得到公钥签名
          • 将证书发送给用户
        • 发送证书
          • 当客户端访问服务器的时候发送证书给客户端
        • 注销证书
          • 当发现私钥泄露之后
      • 使用证书的人 -> 客户端
        • 接收证书
        • 验证对方的身份信息
    • CA认证机构
      • 可以生产密钥对(可选)
      • 对公钥签名
      • 吊销证书
    • 仓库
      • 存储证书 -> 公钥

2. SSL/TLS

  1. 描述的是客户端和服务器刚建立连接之后做的事情

    第一次

    • 客户端连接服务器
      • 客户端使用的ssl版本, 客户端支持的加密算法
    • 服务器
      • 先将自己支持ssl版本和客户端的支持的版本比较
        • 支持的不一样, 连接断开
        • 支持的一样, 继续
      • 根据得到的客户端支持 的加密算法, 找一个服务器端也同样支持算法, 发送给客户端
      • 需要发送服务器的证书给客户端

    第二次:

    客户端:

    • 接收服务器的证书
    • 校验证书的信息
      • 校验证书的签发机构
      • 证书的有效期
      • 证书中支持 的域名和访问的域名是否一致
    • 校验有问题, 浏览器会给提示

3. https -> 单向认证

  1. 服务器要准备的
    • 生成密钥对
    • 将公钥发送给ca, 由ca签发证书
    • 将ca签发的证书和非对称加密的私钥部署到当前的web服务器
  2. 通信流程
    1. 客户端连接服务器, 通过一个域名
      • 域名和IP地址的关系
        • 域名要绑定IP地址
          • 一个域名只能绑定一个IP地址
        • IP地址需要被域名绑定
          • 一个IP地址可以被多个域名绑定
      • 客户端访问的域名会别解析成IP地址, 通过IP地址访问web服务器
    2. 服务器收到了客户端的请求
      • 服务器将CA签发的证书发送给浏览器(客户端)
    3. 客户端拿到了服务器的公钥证书
      • 读这个公钥 证书
        • 验证域名
        • 有效期
        • ca签发机构
        • 服务器的公钥
    4. 客户会生成一个随机数 (作为对称加密的秘钥来使用的)
      • 使用服务器的公钥就这个随机数进行加密
      • 将这个加密之后 秘钥发送给服务器
    5. 服务器对收到的密文解密
      • 使用服务器的是要解密, 得到对称加密的秘钥
    6. 数据的传输
      • 使用对称加密的方式对数据进行加密

4. 自签名证书

  1. 使用openssl生成自签名证书

    1. 创建一个目录如Mytest, 进入该目录, 在该目录下打开命令行窗口

    2. 启动openssl

      openssl    # 执行该命令即可
      
    3. 使用openssl工具生成一个RSA私钥, 注意:生成私钥,需要提供一个至少4位的密码。

      genrsa -des3 -out server.key 2048
        - des3: 使用3des对私钥进行加密
      
    4. 生成CSR(证书签名请求)

      req -new -key server.key -out server.csr
      
    5. 删除私钥中的密码, 第一步给私钥文件设置密码是必须要做的, 如果不想要可以删掉

      rsa -in server.key -out server.key
        -out 参数后的文件名可以随意起
      
    6. 生成自签名证书

      x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
      

复习

  1. 消息认证码

    • 是什么?
      • 散列值
    • 能干什么?
      • 保证数据的完整性, 一致性
    • 怎么生成?
      • 准备的条件: Hmac
        • 原始数据
        • 共享秘钥 -> 认证的另一方需要有同样的秘钥
        • 哈希算法
    • 弊端:
      • 秘钥分发困难
        • 使用非对称加密
      • 不能第三方认证
      • 不能防止否认
  2. 数字签名

    • 是什么?

      • 签名
        • 签名的人生成非对称加密的密钥对
        • 签名的人将公钥进行分发
        • 签名的人将原始数据进行哈希运算 -> 散列值
        • 签名的人使用自己的私钥对散列值进行非对称加密 -> 最终得到的数据就是签名
      • 校验:
        • 接收签名人的公钥
        • 接收签名人发送的数据和签名数据
        • 对原始数据进行哈希运算 -> 散列值
        • 使用公钥对签名数据解密
        • 将解密出的数据和散列值进行比较
          • 相等 == 成功
          • 不.. == 失败
    • 干什么?

      • 保证数据的一致性
      • 进行第三方认证
      • 可以防止否认
    • 能解决消息认证的弊端吗?

      • 可以
    • 怎么进行签名

      • RSA

      • 椭圆曲线签名 -> ecdsa

      数字签名的缺陷?

      • 验证签名的一方没有办法判断得到的公钥到底属于谁
举报

相关推荐

0 条评论