Skip to content

https

仲灏约 1 分钟

https

http 是明文传输,传输的所有内容(如登录的用户名和密码),都会被中间的代理商(无论合法还是非法)获取到。

http + TLS/SSL = https ,即加密传输信息。只有客户端和服务端可以解密为明文,中间的过程无法解密。

关于信息加密

对称加密

一个密钥,既负责加密,又符合揭秘

  • 浏览器访问服务端,服务端生成密钥,并传递给浏览器
  • 浏览器和服务端,通过这个密钥来加密、解密信息

但这有一个很严重的问题:密钥也会被劫持

非对称加密

生成一对密钥,一个公钥,一个私钥。

  • 公钥加密的信息,只有私钥能解密

  • 私钥加密的信息,只有公钥能解密

  • 浏览器访问服务端,服务端生成公钥、私钥,并把公钥传递给浏览器

  • 浏览器生成一个 key(随机字符串),并用公钥加密,传递给服务端

  • 服务端用私钥解密 key 。这样浏览器和服务端,就都得到了 key ,而且 key 还是加密传输的

  • 然后,浏览器和服务端使用 key 为密钥,做对称加密传输

思考:如果公钥和 key 被劫持,黑客能解密 key 吗?—— 不能,因为解密 key 要使用私钥,而私钥一只在服务端,没有传输。

证书

公钥劫持了不行,那替换行不行呢?<br> 黑客直接劫持请求,替换为自己的公钥(当然他自己有私钥),你的所有请求他劫持到,就都可以解密了。<br> 这叫做“中间人攻击”

这个问题,不好从技术上规避,那就从标准规范上解决 —— CA 证书。

  • 由正规的第三方结构,颁发证书(如去阿里云申请,但要花钱)
  • 证书包括:公钥,域名,申请人信息,过期时间等 —— 这些都是绑定的
  • 浏览器识别到正规的证书,才使用。否则会交给用户确认。

这样,当黑客使用中间人攻击时,浏览器就会识别到它的证书不合规范,就会提示用户。

所以,尽量使用正规渠道申请的证书,花点钱,保证安全和稳定性。

https 加密原理

图示

上次更新:

讨论区

欢迎留下想法与补充