早在过去,借助证书机构安装基本的HTTPS每年要花数百美元,而且这个过程很困难,安装起来容易出错。现在我们有了Let's Encrypt可以免费享用,而且整个过程只需要几分钟。
为什么要加密?
为什么要加密你的网站?因为未加密的HTTP会话面临多种滥用现象:
- 窃听你的用户
- 获取用户登录信息
- 注入广告和“重要”信息
- 注入间谍软件
- 注入SEO垃圾邮件和链接
- 注入加密货币矿工
如何挫败不法分子的邪恶欲望?最有效的防御机制是HTTPS。不妨先看一下HTTPS的工作原理。
信任链
你可以在网站与允许访问的所有人之间建立非对称加密。这是一种很有效的保护:GPG和OpenSSH是用于非对称加密的常见工具。这些工具依赖公钥/私钥密钥对。你可以随意共享公钥,而私钥必须受到保护,永远不得共享。公钥负责加密,私钥负责解密。
然而,这个涉及多步骤的过程却无法扩展以支持随机的上网冲浪,因为它需要在建立会话之前交换公钥,你还得生成和管理密钥对。HTTPS会话使公钥分配实现了自动化,购物和银行等敏感网站由第三方证书机构(CA)来验证,比如Comodo、Verisign或Thawte。
你在访问HTTPS网站时,它会向你的Web浏览器提供数字证书。该证书验证你的会话已经过强加密,并提供网站的信息,比如组织名称、颁发证书的组织以及证书机构的名称。你只要点击Web浏览器地址栏中的小挂锁,即可查看所有这些信息和数字证书(见图1)。
图1:点击Web浏览器地址栏中的挂锁,即可查看相关信息
各大Web浏览器(包括Opera、Firefox、Chromium和Chrome)都依赖证书机构来验证网站数字证书的真实性。小挂锁让安全状态一目了然:绿色代表SSL强加密和已验证的身份。Web浏览器还会警告你防范恶意网站和SSL证书配置不正确的网站,并将这些自签名证书视作不可信的证书。
那么Web浏览器怎么知道该信任谁呢?浏览器包含一个根存储区(root store),这其实是一批根证书,存储在/usr/share/ca-certificates/mozilla/中。网站证书针对根存储区加以验证。你的根存储区由软件包管理器来维护,就像Linux系统上的任何其他软件那样。在Ubuntu上,它们由ca-certificates软件包提供。根存储区本身由Mozilla for Linux来维护。
正如你所见,需要一套复杂的基础设施来完成所有这些工作。如果你执行任何敏感的在线交易(例如购物或银行业务),其实是信任大批未知的人来保护自己。
无处不在的加密
Let's Encrypt是一家全球证书机构,类似商业证书机构。Let's Encrypt由非营利性互联网安全研究组织(ISRG)创建,目的是为了更容易保护网站。我认为用它来保护购物和银行网站不够安全,但适用于保护没有金融交易的博客、新闻及信息网站。
至少有三种方法可使用Let's Encrypt。最好的方法是使用电子边界基金会(EFF)维护的Certbot客户软件(https://certbot.eff.org/)。这需要通过shell访问你的网站。
如果你在共享主机上,那么可能没有shell访问权限。在这种情况下,最容易的方法是使用支持Let's Encrypt的主机。
如果你的主机不支持Let's Encrypt,但支持自定义证书,那么你可以使用Certbot手动创建并上传证书。这是个复杂的过程,所以你需要吃透说明文档。
安装好了证书后,可使用SSL Server Test(https://www.ssllabs.com/ssltest/)来测试你的网站。
Let's Encrypt数字证书有效期90天。你安装Certbot时,它还会安装计划任务(cron job),以便自动续期,它还包含一个命令来测试这种自动续期是否有效。你可以使用现有的私钥或证书签名请求(CSR),它支持通配符证书。
局限性
Let's Encrypt存在一些限制:它只执行域名验证,即它向控制域名的任何人颁发证书。这是基本的SSL。它不支持组织验证(OV)或扩展验证(EV),原因是无法使身份验证实现自动化。我不会信任使用Let's Encrypt的银行或购物网站,它们应该花大量的钱来购置包括身份验证的整套软件包。
作为由非营利组织维护的一项免费服务,它没有商业支持,只有说明文档和社区支持,不过两者都很好。
互联网充满了邪恶。一切都应该加密。不妨用Let's Encrypt(https://letsencrypt.org/)来保护访问你网站的那些人。
原文标题:Protect Your Websites with Let's Encrypt,作者:Carla Schroder