一年之前,我发表过一篇文章:全面 HTTPS 时代即将到来。到现在,HTTPS 又有什么新变化呢?本文就来一起探索 HTTPS 在 2016 年的变化以及今后的发展可能。
SSL 和 HTTPS 简介
HTTPS 是加密了的 HTTP 协议,网址以 https://
开头,就代表是使用了这个协议。 HTTPS 相比 HTTP,拥有全部的以下特性:
- 传输数据加密:与网站之间的通讯无法被中间人(如无线路由器所有者、运营商、在之间线路上的监听者)获取。
- 数据完整性:保证所传输数据没有被篡改。
- 身份验证:保证数据是网站所有者提供,而不是第三者提供。
由于 HTTPS 要完成身份验证,所以若需要配置 HTTPS,就必须要取得被公认的证书颁发商颁发的证书。
2016 年
Let’s Encrypt,首个真正免费的证书颁发商
部署 HTTPS 必须要拥有 SSL 证书,而 SSL 证书的价格区间在每年几百甚至上万元不等,高昂的证书价格成为了部署 HTTPS 的一个重大负担。2015 年末,Let’s Encrypt 正式开始公测,可以免费签发多域名的证书,此类证书原先的价格在百元到千元左右。即使是在测试阶段,仅仅 3 个月时间就签发了 100 多万张证书! Let’s Encrypt 的证书使用自动化部署,验证、签发过程均通过 API 自动实现,大大缩短了申请证书所需要的时间;同时各种服务提供商也纷纷提供了自动签发 Let’s Encrypt 证书的渠道。由于 Let’s Encrypt 的出现,确实大大加快了 HTTPS 的普及。
HTTP/2,SPDY 的升级版
在 2015 年初,HTTP/2 正式成为标准,紧接着各大浏览器和操作系统纷纷支持:Firefox 36、Chrome 41、iOS 9 & macOS 10.11(Safari 9)、Windows 10(IE 11 & Edge)。紧接着,Cloudflare、CloudFront、UPYUN 这些 CDN 提供商也纷纷支持了 HTTP/2,HTTP 服务器 Nginx 和 Apache 也对其做了支持。 HTTP/2 的出现是为了取代 HTTP 1.1 和 SPDY。HTTP/2 主要是支持了多路传输,原本需要合并 CSS 和 JS 文件、为众多的图片准备多个域名的做法,使用了 HTTPS/2 之后就没什么必要了。相比 HTTP 1.1 的每一个数据需要单独的一个连接,HTTPS/2 中网站的所有数据只需要一个连接。
由于浏览器会限制连接数量,这就会导致在 HTTP 1.1 中,每次只能同时下载几个文件。多路传输可以让这些文件一块儿传输,大大减少加载时间。
然而,这些浏览器里只是针对 HTTPS 站点做了 HTTP/2 的实现。于是想到让网站提高加载速度,又不得不用 HTTPS。所以,HTTP/2 的出现也推进了 HTTPS 的发展。
2017 年
Google Chrome 放大招,对有无 HTTPS 的网站区别显示:
现在,Chrome 已经开始对使用了 HTTPS 的网站显示 “安全” 字样(EV 证书这个地方则显示企业名称):
在未来的某一个版本中,对于无 HTTPS 的网站,最终将会这样显示(对于所有 HTTP 网站,未来不同的版本显示的过程是:灰色叹号、红色警报叹号、红色警报叹号 + “不安全字样”;有信用卡或密码提交的会先进行这类显示。下图是最终的第三阶段):
你也可以在 Chrome 设置页面将其调整为 “一律将 HTTP 网页标为不安全”。我推荐所有人都这样设置,因为 HTTP 确实是毫无安全可言! 相信没有公司愿意让用户看到自己的网站被标记为 “不安全” 吧?浏览器的推进起到至关重要的作用。
更新 1
在最新的 Chrome 58 版本里,非 HTTPS 的密码输入处已经显示这样的信息(此处为 weibo.com 的网站登陆窗口):
经测试,只要主站是 HTTP,即使表单是提交到 HTTPS 页面,也会显示此信息。
Apple 强制要求使用 HTTPS 加密(ATS)
2015 年末的时候,苹果就开始实施 ATS,然而开发者仍能找到选项去关闭这个功能。而在 2017 年或之后某个时刻后(具体 deadline 苹果尚未明确给出,不过可以确定的是不开 ATS 审核会逐渐变严格,并要求提供更多的理由),所有新提交的 APP 必须开启 ATS,也就是说新提交的 APP 必须全部使用 HTTPS 内容了。这促使着众多国内厂商去做 HTTPS 支持。
cPanel 虚拟主机自动获取免费 SSL 证书方法
本站特别推荐的虚拟主机提供商 TlOxygen 现在就支持申请免费 SSL 证书了。整个过程十分简单,并且会自动续签!实现方式:自动为虚拟主机安装 acme.sh 软件,然后自动执行安装流程。此外,TlOxygen 的虚拟主机支持 SSH 访问,所以你也可以自行使用 acme.sh 或者任何其他工具操作。