三,确保 Web 安全的HTTPS
3.1 HTTP安全上的不足:
- 通信使用明文(不加密),内容可能会被窃听
- 不验证通信方的身份,因此有可能遭遇伪装
- 无法证明报文的完整性,所以有可能已遭篡改
3.2 HTTPS
- HTTP 加上加密处理和认证以及完整性保护后即是HTTPS
- HTTPS 并非是应用层的一种新协议。只是 HTTP 通信接口部分用SSL(Secure Socket Layer)和 TLS(Transport Layer Security)协议代替而已。是身披SSL协议这层外壳的 HTTP。
- SSL技术最初是由浏览器开发商网景通信公司率先倡导的,开发过 SSL3.0 之前的版本。目前主导权已转移到 IETF(Internet 工程任务组)的手中并以SSL3.0为基准制定了 TLS1.0、TLS1.1 和TLS1.2。当前主流的版本是 SSL3.0 和 TLS1.0。
- HTTPS 比 HTTP 要慢 2 到 100 倍,因此,如果是非敏感信息则使用 HTTP 通信,只有在包含个人信息等敏感数据时,才利用 HTTPS 加密通信。
3.3 加密
HTTPS 采用共享密钥加密和公开密钥加密两者并用的混合加密机制。
3.3.1 共享秘钥加密-对称秘钥加密
- 加密和解密都使用一个秘钥
- 秘钥安全性非常重要,如何安全传递秘钥是最大的问题
3.3.2 公开秘钥加密-非对称秘钥加密
- 使用一对非对称的密钥。一把叫做私有密钥(private key),另一把叫做公开密钥(public key)。
- 私有密钥不能让其他任何人知道,而公开密钥则可以随意发布,任何人都可以获得。
- 缺点是相对对称加密,因为算法复杂加解密速度慢很多。
- 非对称加密很好的解决了对称加密秘钥传递的安全问题。
3.4 证书
- 为确保收到的公开秘钥确实是目标服务器发行的,而没有在传输过程被攻击者替换掉,可以使用由数字证书认证机构(CA,CertificateAuthority)和其相关机关颁发的公开密钥证书。
- 多数浏览器开发商发布版本时,会事先在内部植入常用认证机关的公开密钥。确保处于验证起点的公开秘钥的正确,客户端收到服务器的公开密匙证书后向认证机关查询真伪。
- 证书的另外一个作用是可确认对方服务器背后运营的企业是否真实存在。拥有该特性的证书就是 EV SSL证书。
- 持有 EV SSL证书的 Web 网站的浏览器地址栏处的背景色是绿色的。
3.5 HTTPS通信
- tcp三次握手后开始SSL通信。服务端发送公钥证书给客户端,客户端将一串随机密码串经过公钥加密之后发给服务端,服务端能正确解密报文SSSL连接才能建立完成,请求完成后客户端先断开SSL连接,再由TCP四次挥手与服务器断开连接
四,SPDY
- HTTP在通信上的不足
- 请求只能从客户端开始。客户端不可以接收除响应以外的指令。
- 一条连接上只可发送一个请求。即便是持久连接管道化技术,服务端也必须按接收到的请求顺序响应请求,无法设置优先级
- 请求 / 响应首部未经压缩就发送。首部信息越多延迟越大。
4.1 SPDY
- SPDY 规定通信中使用 SSL。
- 通过单一的 TCP 连接,可以无限制处理多个 HTTP 请求。
- 可以给请求逐个分配优先级顺序。
- 压缩 HTTP 请求和响应的首部。
- 支持服务器主动向客户端推送数据的功能。这样,服务器可直接发送数据,而不必等待客户端的请求。
- 服务器可以主动提示客户端请求所需的资源。 限制:SPDY 基本上只是将单个域名( IP 地址)的通信多路复用,所以当一个 Web 网站上使用多个域名下的资源,改善效果就会受到限制。