zoukankan      html  css  js  c++  java
  • HTTPS总结

    HTTP 协议中没有加密机制,但可以通 过和 SSL(Secure Socket Layer, 安全套接层 )或 TLS(Transport Layer Security, 安全层传输协议)的组合使用,加密 HTTP 的通信内容。属于通信加密,即在整个通信线路中加密。HTTP + 加密 + 认证 + 完整性保护 = HTTPS(HTTP Secure )

    HTTPS 采用共享密钥加密(对称)和公开密钥加密(非对称)两者并用的混合加密机制。若密钥能够实现安全交换,那么有可能会考虑仅使用公开密钥加密来通信。但是公开密钥加密与共享密钥加密相比,其处理速度要慢。
    所以应充分利用两者各自的优势, 将多种方法组合起来用于通信。 在交换密钥阶段使用公开密钥加密方式,之后的建立通信交换报文阶段 则使用共享密钥加密方式

    HTTPS握手过程的简单描述如下:

    • 浏览器将自己支持的一套加密规则发送给网站。服务器获得浏览器公钥
    • 网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。 浏览器获得服务器公钥
    • 获得网站证书之后浏览器要做以下工作:
    • (a). 验证证书的合法性(颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致等),如果证书受信任,则浏览器栏里面会显示一个小锁头,否则会给出证书不受信的提示。
    • (b). 如果证书受信任,或者是用户接受了不受信的证书,浏览器会生成一串随机数的密码(接下来通信的密钥),并用证书中提供的公钥加密(共享密钥加密)。
    • (c) 使用约定好的HASH计算握手消息,并使用生成的随机数对消息进行加密,最后将之前生成的所有信息发送给网站。 浏览器验证 -> 随机密码 服务器的公钥加密 -> 通信的密钥 通信的密钥 -> 服务器
    • 网站接收浏览器发来的数据之后要做以下的操作:
    • (a). 使用自己的私钥将信息解密取出密码,使用密码解密浏览器发来的握手消息,并验证HASH是否与浏览器发来的一致。
    • (b). 使用密码加密一段握手消息,发送给浏览器。
    • 服务器用自己的私钥解出随机密码 -> 用密码解密握手消息(共享密钥通信)-> 验证HASH与浏览器是否一致(验证浏览器)
    • HTTPS的不足
    • 加密解密过程复杂,导致访问速度慢
    • 加密需要认向证机构付费
    • 整个页面的请求都要使用HTTPS
    郭慕荣博客园
  • 相关阅读:
    Linux cat命令详解
    服务器使用itchat.,hotReload=True,自动LOG OUT
    ubantu,安装pip3,修改默认Python版本号
    Linux SSH 远程登录错误解决办法 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
    微信防撤回python3
    微信定时发送天气python3
    微信,爬取每日一句,文本,schedule函数定时发送消息
    微信,爬取每日一句,发送至多人,多个群
    python中的轻量级定时任务调度库:schedule
    Django基础02
  • 原文地址:https://www.cnblogs.com/jelly12345/p/15017209.html
Copyright © 2011-2022 走看看