基础面试宝典

安全 - HTTPS 原理剖析

2019-03-03  本文已影响19人  撸帝

HTTPS 原理剖析

为什么使用 HTTPS

HTTP 协议,本身是明文传输的,没有经过任何安全处理。那么这个时候就很容易在传输过程中被中间者窃听、篡改、冒充等风险。这里提到的中间者主要指一些网络节点,是用户数据在浏览器和服务器中间传输必须要经过的节点,比如 WIFI 热点,路由器,防火墙,反向代理,缓存服务器等。

HTTP 协议,中间者可以窃听隐私,使用户的敏感数据暴露无遗;篡改网页,例如往页面插的广告内容,甚至进行流量劫持,比如有的时候你会发现域名没输错,结果却跑到了一个钓鱼网站上,因为被它劫持了。

为了解决这三大风险,HTTPS 的价值就体现出来了。

什么是 HTTPS

HTTPS,简单的理解 HTTP 的安全版,即 HTTP 下加入 SSL 层,由两部分组成:HTTP + SSL / TLS。

HTTPS 原理剖析

image image image

以上就是整个 HTTPS 的交互过程,大家是不是对整个流程有了比较大致的了解了呢。

HTTPS 的相关场景

真实业务场景是复杂的,这里,整理 3 个项目中遇到的比较复杂的应用场景。

场景一,对 HTTPS 进行 CDN 加速

这种情况下,CA 证书需要存放在哪里呢?主要两个方案:

场景二,对HTTPS 的域名通过 CNAME 绑定到另外一个 HTTPS 域名上

这个情况下,我们需要一个证书还是两个证书呢?

我们的方案是,两个证书。因为每个证书跟自己的域名进行绑定,即使它们都在同一个服务器上,也不能使用同一个证书。

场景三,两台服务器的证书问题

因为安全问题,CA 证书在一台服务器上,而服务部署在另外一台服务器上。这种情况就比较难办。

image

此时,需要借助 Nginx 进行反向代理,回源到具体的服务器。

HTTPS 设计上的借鉴

对于 HTTPS 设计上的方案,对于我们而言,有什么可以借鉴的地方么?

答案是肯定的:有。一个非常典型的方案就是 RSA 双向认证。

RSA 双向认证,顾名思义,就是用对方的公钥加密是为了保密,这个只有对方用私钥能解密。用自己的私钥加密是为了防抵赖,能用我的公钥解开,说明这是我发来的。例如,支付宝的支付接口就是非常典型的RSA双向认证的安全方案。此外,我们之前的教育资源、敏感验证码出于安全性考虑都借鉴了这个方案。

上一篇下一篇

猜你喜欢

热点阅读