前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HTTPS 之原理

HTTPS 之原理

作者头像
s_在路上
发布2018-09-30 10:56:31
1.2K0
发布2018-09-30 10:56:31
举报
文章被收录于专栏:iOS 开发杂谈iOS 开发杂谈

HTTPSHTTP 协议相比提供了

  • 数据完整性:内容传输经过完整性校验
  • 数据隐私性:内容经过对称加密,每个连接生成一个唯一的加密密钥
  • 身份认证:第三方无法伪造服务端(客户端)身份

原理

HTTPS 在传输数据之前需要客户端与服务端之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息。TLS/SSL 协议是一套加密传输的协议,使用了非对称加密,对称加密以及 HASH 算法。以浏览器和服务器为例,HTTPS 通信过程如下:

image

  • 浏览器发起往服务器的 443 端口发起请求,请求携带了浏览器支持的加密算法和哈希算法。
  • 服务器收到请求,选择浏览器支持的加密算法和哈希算法。
  • 服务器下将 CA 证书 返回给浏览器。 采用 HTTPS 协议的服务器必须要有自己制作或者 CA 证书,区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用 CA 证书则不会弹出提示页面。这套证书其实就是一对公钥和私钥。公钥给别人加密使用,私钥给自己解密使用。
  • 浏览器解析证书
    • 首先浏览器会从内置的证书列表中索引,找到服务器下发证书对应 的机构,如果没有找到,此时就会提示用户该证书是不是由权威机构颁发,是不可信任的。如果查到了对应的机构,则取出该机构颁发的公钥。
    • 用机构的证书公钥解密得到证书的内容和证书签名,内容包括证书的颁发机构,过期时间等。浏览器会先验证证书签名的合法性,签名通过后,会检查证书有效期,证书过期了也会提示用户。这些都通过认证时,浏览器就可以安全使用证书中的公钥了。
    • 如果证书没有问题,那么就生成一个随机数 R,然后用证书对该随机数进行加密。
  • 传送加密信息 这部分传送的是用证书加密后的随机数 R,目的就是让服务器得到这个随机数 R,以后浏览器和服务器的通信就可以通过这个随机数 R 来进行加密解密了。
  • 服务器解密浏览器传过来的加密信息 服务端用私钥解密后,得到了客户端传过来的随机数 R ,然后把内容通过随机数 R 进行对称加密。
  • 服务器以随机数 R 为密钥把传输内容使用对称加密算法加密并传输给浏览器。
  • 浏览器以随机数 R 为密钥使用之前约定好的解密算法获取加密内容。

中间人攻击原理

中间人攻击原理

针对SSL的中间人攻击方式主要有两类,分别是SSL劫持攻击和SSL剥离攻击,详细请看中间人攻击原理

预防中间人攻击

解决办法: HTTPS 双向验证在客户端中内置服务器公钥,在服务器下将 CA 证书给浏览器的时候返回的公钥,服务端要求客户端发送客户端的证书,客户端会将自己的证书发送至服务端。除了验证公钥的有效性之外,再比对公钥是不是和内置的公钥一样,不一样说明被中间者攻击了,就断开链接不在请求了。

Https双向认证

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.09.17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 原理
  • 中间人攻击原理
  • 预防中间人攻击
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档