HTTPS

HTTP协议特点
  • HTTP五状态协议
    • HTTP协议本身不会对请求和响应之间的通信状态做保存
  • 客户端支持的 cookie
    • Http 协议中引入了 cookie 技术,用来解决 http 协议无状态的问题。通过在请求和响应报文中写入 Cookie信息来控制客户端的状态
    • Cookie 会根据从服务器端发送的响应报文内的一
      个叫做 Set-Cookie 的首部字段信息,通知客户端保存 Cookie
    • 下次客户端再往该服务器
      发送请求时,客户端会自动在请求报文中加入 Cookie 值后发送出去
  • 服务端支持的 session
    • 在基于 tomcat 这类的 jsp/servlet 容器中,会提供
      session 这样的机制来保存服务端的对象状态
    • 如果客户端请求不包含 sessionid,则为此客户端创建一个 session 并且生成一个与此 session
      相关联的 session id, session id 的值是一个既不会重复,又不容易被找到规律的仿造字符
      串,这个 session id 将会返回给客户端保存
https 安全传输协议
  • 由于 HTTP 协议通信的不安全性,所以人们为了防止信息在传输过程中遭到泄漏或者篡改,
    就想出来对传输通道进行加密的方式 https。
    在这里插入图片描述
https 的设计过程
  • 对称加密:加密解密用同一个密钥,被黑客拦截不安全
  • 非对称加密:私钥加密后的密文,只要有公钥,都能解密,但是公钥加密后的
    密文,只有私钥可以解密。私钥只有一个人有,而公钥可以发给所有人(公钥加密,私钥解密;公钥可以公开给别人进行加密,私钥永远在自己手里,非常安全,黑客拦截也没用,因为私钥未公开。著名的RSA加密算法用的就是非对称加密。)
  • 这样就可以保证 A/B 向服务器端方向发送的消息是安全的,但是
    公钥怎么拿?
如何获取公钥
  • 服务器端将公钥发送给每一个客户端(传输过程又是不安全的?公钥可能会被调包)
  • 服务器端将公钥放到一个远程服务器,客户端可以请求到 (多了一次请求,还得解决公钥
    放置问题)
引入第三方机构
  • 问题演变成了,客户端如何识别证书的真伪
  • 第三方机构的公钥证书存哪里
    • 浏览器和操作系统都会维护一个权威的第三方机构列表(包括他们的公钥)
      因为客户端接收到的证书中会些颁发机构,客户端就根据这个办法机构的值在本地找到响应
      的公钥
  • 待续
Https 原理分析
HTTPS 证书的申请过程
  • 服务器上生成 CSR 文件(证书申请文件,内容包括证书公钥、使用的 Hash 签名算法、申
    请的域名、公司名称、职位等信息)
  • 待续
类比平时我们生成秘钥对登录:

SSH即利用的RSA(非对称加密)+AES(对称加密)

  • RSA被用来在会话初始化阶段为通信双方进行会话秘钥的协商
  • 由于非对称加密的计算量开销比较大,因此一旦双方的会话秘钥协商完成,后续的加密都将采用AES加密进行
  • 使用tcpdump+wireshark抓包并查看ssh建联过程
    在这里插入图片描述
SSH的实现
  • 基于口令的认证
    • 第一次登录的时候,client要对server的公钥进行认证。(https中可以通过CA进行公正,可是SSH的publish key和private key都是自己生成的,没法公正,只能通过Client端自己对公钥进行确认
  • 基于公钥认证
    • 口令认证,每次登陆都需要输入密码。基于公钥认证,不需要输入口令密码,但是需要Client端手动copy public key到Server端。然后进行认证
附平时我们生成秘钥对的具体操作
  1. 生成RSA私钥
    ssh-keygen -t rsa -b 4096 -C JimLiang
    入秘钥对名称(1213),以及密码(269686494@qq.com)回车;
    注意:按照用户名__服务器分类命名秘钥对,后续同一类服务器可以用相同的key登录即可。

  2. 将生成的秘钥pub文件内容添加到linux服务器

    • 为root用户添加秘钥对: 把.pub 文件内容添加至/root/.ssh/authorized_keys
      中,注意追加添加即可;( cat id_dsa.pub >> ~/.ssh/authorized_keys)
    • 为其他用户添加秘钥对,如为testuser添加秘钥对,
      则将pub文件添加至/home/testuser/.ssh/authorized_keys中,同样为追加添加;
SSH和HTTPS的区别
  • SSH的原理和HTTPS差不多,都是基于TCP和非对称加密进行的应用层协议
  • HTTPS通过数字证书和数字证书认证中心来防止中间人攻击,SSH服务器的公钥没有人公正,只能通过Client人工确认Server端的公钥指纹来确认身份
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值