• HTTPS 交互流程


      https 与 http 区别在于 https 比 http多了一个SSL加密层。就是 client端 发送给 server端 的请求报告是经过加密,混淆的。以此来保护我们的数据在网络传输中的安全。

      ok, 我们来看一下 client 发送给 server 是如何交互的,为什么能保证数据在网络中的安全。

    • 时序图:

    流程解释:

    • 客户端访问:https://www.z.com
    • https的监听端口是443端口,比如nginx服务器,nginx.conf 会有如下配置(简略配置)
    server
     {
       listen       443;# https 监听的是 443端口
       server_name  www.z.com;
     
       ssl on;
       ssl_session_cache   shared:SSL:10m;
       ssl_session_timeout 10m;
     
       ssl_certificate /etc/nginx/ssl_key/z.crt.crt; # 公钥
       ssl_certificate_key /etc/nginx/ssl_key/z.crt.key; # 私钥
    
    }
    

      nginx 会根据上面配置的ssl_certificate 的路径 /etc/nginx/ssl_key/z.crt.crt 找到www.z.com 域名证书的公钥,将公钥返回给客户端

    • 客户端接收到公钥后,会对公钥内容进行解析,校验
    • 校验通过后,客户端会随机生成一个randomKey(随机秘钥)
    • 客户端再使用z.crt.crt中的公钥,对 randomKey 进行加密,将加密后的内容发送给服务端
    • 服务端接收报文后,使用z.crt.key 中的私钥,对加密的内容的进行解密,然后得到 randomKey 
    • 这时,服务端会将请求域名的响应结果,使用 randomKey  进行加密,返回客户端
    • 客户端对 服务端的加密报文使用randomKey  解密,然后就可以展示在浏览器上

      通过上面的分析可以知道,https对在网络传输中的数据进行加密,防止别人抓包可以明文的看到你的内容。有些朋友说https 不安全,更多的是说那些不怀好意的人在client客户端上动了手脚,并不是说抓包,然后解密报文。

    我们知道后面正常的交互都是通过randomKey来进行加解密的。而randomKey 在网络中的传输只有一次,并且这一次还是使用了z.crt.crt中的公钥进行加密,想要解密只能使用z.crt.key中的私钥,而私钥又是在server端服务器上。

    要是能直接进入别人服务器 或 控制别人客户端,那也不用费那么大劲儿抓包破解了。

    以上内容仅代表个人观点,如有错误请指出,立马改正

  • 相关阅读:
    缓存雪崩与缓存穿透
    读取表中最大值
    使用vscode在谷歌上运行代码
    elment 中tree组件展开所有和收缩所有节点
    深度系统商店提示无法安装软件依赖错误
    诗词,理解,品论
    《45个十分钟读懂资本论》原文、适合朗读版和个人见解
    《论持久战》全文
    OSError: [WinError 126] 找不到指定的模块。
    C++ 获取序列最大(或最小)的 N 个元素
  • 原文地址:https://www.cnblogs.com/zhangXingSheng/p/13206796.html
Copyright © 2020-2023  润新知