30分钟让网站支持HTTPS

时间:2022-04-29
本文章向大家介绍30分钟让网站支持HTTPS,主要内容包括获得证书、安装证书、更多高级设置、验证证书安装、强制SSL / HTTPS用于所有请求、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

  对于一个良好和安全的网络——并且也为了更快的性能,新的API网络例如Service Workers,更佳的搜索排名,还有——在你的网站上使用HTTPS是关键。这里我会指导大家如何轻松搞定。

  我不是安全专家也不是搞服务器的,所以这对我而言也是一种有趣的经历,而记录这个过程可以让其他任何人也能很快地做到这些。包括一些暂时的停顿时间,我总共只花了20-30分钟。

 获得证书

  有一些官方出售的证书,但从我的经验来看,最容易上手是Let’s Encrypt。它也是免费的,而且背后有一些主要的赞助商,例如Mozilla,Chrome,Akamai和Cisco。

  通过Let’s Encrypt为你的网站生成证书的最快方法是使用SSL For Free。然后,你便可以选择Automatic FTP Verification或者Manual Verification。

  选择好了之后,你就可以得到:

  • 针对网站的SSL证书
  • 证书私钥
  • CA /链证书

 安装证书

  下面,针对你的托管服务提供商以及你的服务器类型,或者如果你是自己托管的话,有不同的方法。就我而言,我对这个网站使用Media Temple,并且它们在Twitter上非常有用,而且它们的在线支持聊天会指点我正确的方向。

  所有我需要做的是:

  1. 进入帐户中心。正如Media Temple有一个,我敢肯定它适用于大部分的托管选项。
  2. 选择导入SSL证书,添加我之前得到的SSL证书,私钥,CA /链证书之前。
  3. 成功!

  好了吗,没有。第3步是骗人的。当我在第2步中进入我的密钥时,我会得到一个错误说我的私钥是无效的。我慌了一下,然后开始去找问题出在什么地方。Media Temple支持指引我到Let’s Encrypt论坛上的“Error adding cert, Invalid private key”讨论中。

  原来需要转换私钥到RSA格式,使用下面的代码行就可以在终端中快速转换:

sudo openssl rsa -inform pem -in /etc/letsencrypt/live/www.example.com/privkey.pem -outform pem | less

  当然要相应地改变上面的域和路径。然后复制输出和提交/另存为私钥。

 更多高级设置

  如果你正在某个地方运行你自己的服务器或虚拟机,或者恰好没有针对主机的简单帐户中心选择,那么我推荐你阅读下面这些文章考虑手动安装:

  • Tim Kadlec的《Taking Let’s Encrypt for a Spin》
  • Jeremy Keith的《Switching to https》

 验证证书安装

  安装好了之后,验证证书的一个简单方法是使用SSL Checker以发现任何潜在的问题。然后,当你使用https://访问你的网站的时候,所有一切都应该显示良好和安全。然而在现实生活中很少是这样的情况。要小心混合的内容,即部分内容通过https://提供服务,而一些内容使用的则是http://。使用http://的内容将不显示。

  注意:不要使用相对路径/协议相关的URL,即/css/style.css。它会对可能的端点攻击开放,而且,从http://你可以随时请求https://资源,反之则不能。

  一旦确保安全之后,你应该可以在所有的web浏览器中看到挂锁图标,在地址栏的URL旁边。如果没有显示,那么可以使用伟大的服务Why No Padlock? 来找出可能的问题。我敢打赌,你的1%的时间用来改变内部引用到https://,然后剩下99%的时间用来搞清楚有关第三方的内容,以及如何安全地包含这些内容。

 强制SSL / HTTPS用于所有请求

  一旦网站安全并在可以平稳运行HTTPS之后,没有理由不确保所有请求都通过SSL。

  正如使用.htaccess和mod_rewrite的Force SSL/https中概述的那样,下面有一个代码片段可以用来添加.htaccess 文件以确保:

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

  一起试试添加HTTPS到你的网站吧!你值得拥有。