HTTPS 的详细流程

之前有专门研究了一下HTTPS的具体工作流程,不过因为不是天天需要回忆,很快就忘了 所以现在专门写一篇博客记录下来,不过内容翻译自 这里

  • 用户点击HTTPS链接,用户所在的浏览器发起请求
  • 服务器响应,发送公钥
  • 浏览器接受公钥,然后生成一个随机的密码,并且用公钥加密
  • 浏览器把加密后的key发送给服务器
  • 服务器用私钥解密
  • 此后所有的流量都用哪个密码来加密解密

其中原文里没有提到,我想提一下的几个点:

  • 上面没有提到的流程,其中有服务器在发送公钥的时候一般会发送支持的加密算法,浏览器收到后会检查自己支持的加密算法, 然后选择一个,然后加密,并且告诉服务器自己用的是啥算法

  • 浏览器会校验服务器发过来的公钥是否是经过认证的,这个认证就是体现在浏览器的小绿锁上,即传说中的CA,由世界上 好几个大公司联合组成一个组织专门负责,然后浏览器厂商选择性相信,比如wosign的证书Chrome就不信,但是letsencrypt的 证书大家都信。


微信公众号
关注公众号,获得及时更新

更多文章
  • flutter开发体验汇报
  • 自己封装一个好用的Dart HTTP库
  • Flutter应用启动后检查更新
  • Grafana Gravatar头像显示bug修复
  • flutter中使用RESTful接口
  • Vim YouCompleteMe使用LSP(以dart为例)
  • flutter webview加载时显示进度
  • SQLAlchemy快速更新或插入对象
  • 修复Linux下curl等无法使用letsencrypt证书
  • 欣赏一下K&R两位大神的代码
  • MySQL的ON DUPLICATE KEY UPDATE语句
  • 使用microk8s快速搭建k8s
  • Python中优雅的处理文件路径
  • Go语言MySQL时区问题
  • 我的技术栈选型