美文网首页前端开发
HTTPS加密过程详解

HTTPS加密过程详解

作者: zhongmeizhi | 来源:发表于2019-08-05 16:18 被阅读0次

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 超文本传输安全协议)

HTTPS在传统的HTTP和TCP之间加了一层用于加密解密的SSL/TLS层(安全套接层Secure Sockets Layer/安全传输层Transport Layer Security)层。使用HTTPS必须要有一套自己的数字证书(包含公钥和私钥)。

HTTPS解决的问题

  • 信息加密传输:第三方无法窃听;
  • 校验机制:一旦被篡改,通信双方会立刻发现;
  • 身份证书:防止身份被冒充。

HTTPS加密过程:

  1. 客户端请求服务器获取证书公钥
  2. 客户端(SSL/TLS)解析证书(无效会弹出警告)
  3. 生成随机值
  4. 公钥加密随机值生成密钥
  5. 客户端将秘钥发送给服务器
  6. 服务端用私钥解密秘钥得到随机值
  7. 将信息和随机值混合在一起进行对称加密
  8. 将加密的内容发送给客户端
  9. 客户端用秘钥解密信息
https.png

加密过程使用了对称加密和非对称加密。

  • 对称加密: 客户端和服务端采用相同的密钥经行加密
        encrypt(明文,秘钥) = 密文
        decrypt(密文,秘钥) = 明文
    
  • 非对称加密:客户端通过公钥加密。服务端通过私钥解密
        encrypt(明文,公钥) = 密文
    
        decrypt(密文,私钥) = 明文
    

因为TLS握手的过程中采用了非对称加密,客户端本身不知道服务器的秘钥,这样通信就不会被中间人劫持。此外这一步服务端还提供了证书,并且可能要求客户端提供证书。关于证书下文会提到,只要有了证书,就能保证和你通信的对方是真实的,而不是别人伪造的。

那然后验证证书呢?

  1. 客户端获取到了站点证书,拿到了站点的公钥
  2. 客户端找到其站点证书颁发者的信息
  3. 站点证书的颁发者验证服务端站点是否可信
  4. 往上回溯,找到根证书颁发者
  5. 通过根证书颁发者一步步验证站点证书颁布者是否可信

附:

  • HTTPS默认使用443端口,而HTTP默认使用80端口。
  • TLS就是从SSL发展而来的,只是SSL发展到3.0版本后改成了TLS
  • 第一次请求中TLS握手的代价很大
  • 后续的请求会共用第一次请求的协商结果

我的GitHub地址

参考:

相关文章

  • HTTPS加密过程详解

    HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket ...

  • HTTPS加密(握手)过程

    参考HTTPS的加密流程|一篇文章读懂HTTPS及其背后的加密原理|HTTPS协议详解|Https加密过程|Htt...

  • https加密过程

    自苹果要求使用https以来,项目中全部换用https请求了。平时开发中对https理解的也不是很深入,只是知道客...

  • https加密过程

    HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服...

  • https加密过程

  • HTTPS加密过程

    我不是生产者,我只是个搬运工 1.HTTP和HTTPS的区别与联系: 二者都是网络传输协议,https是http的...

  • https加密过程

    http和https 二者都是网络传输协议(应用层),https是在http基础上进行加密的 https是符合ht...

  • HTTPS加密过程

    关键在于“检查证书”合法性的过程,这个步骤不需要联网,最终依赖的是浏览器或操作系统早就内置好的信息。

  • https加密过程

    https协议实际上就是包裹了ssl的http,有一个公式 http+加密+认证+完整性保护 = https ht...

  • HTTPS加密保证安全过程详解

    原文在这 每当我们讨论到信息安全的时候,我们最长接触到的信息加密传输的方式莫过于HTTPS了,当我们浏览器地址栏闪...

网友评论

    本文标题:HTTPS加密过程详解

    本文链接:https://www.haomeiwen.com/subject/vdbmdctx.html