如何设置“Let’s Encrypt” Nginx 中的免费 SSL 证书(Ubuntu)

如果您阅读过很多关于隐私提示的文章,您肯定会遇到一个提示,要求您安装“HTTPS 无处不在”扩展程序,以便它尽可能自动将您重定向到网站的 HTTPS 版本。 糟糕的是,HTTPS 无处不在的扩展仅在您访问的网站实施了 SSL 时才有效,而且对于大多数网站管理员来说,这本身就是一项困难(且成本高昂)的任务。 幸运的是,随着 Let’s Encrypt 移动,现在网站管理员更容易将 SSL 证书添加到他们的网站。

在过去(和现在),设置 SSL 证书需要您首先在服务器上生成私钥,然后从证书颁发机构购买 SSL 证书(可能很昂贵),最后在服务器中进行设置. 该过程涉及很多技术性问题,如果不正确执行,SSL证书将毫无用处。 随着 Let’s Encrypt 项目,可以快速将 SSL 证书添加到他们的站点,而无需任何费用。 并得到 Mozilla、Akamai、Cisco、EFFIf you 和 Google 等大型行业参与者的支持,大多数浏览器和操作系统都支持它。

在本教程中,我们将完成设置 Let’s Encrypt Nginx 服务器中的 SSL 证书。 我们在本教程中使用的是 Ubuntu 14.04 服务器,并假设您使用的是正常工作的 Nginx Ubuntu 服务器。 Ubuntu 16.04 服务器的说明可能有所不同。

安装 Let’s Encrypt

一、安装 Let’s Encrypt, 你会需要 git 从它的 git 存储库中克隆它。 使用以下命令安装 git:

安装后,克隆 Let’s Encrypt的存储库:

设置环境

在我们继续安装和设置 SSL 证书之前,请务必允许访问 .well-known Web 根目录中的文件夹。 默认情况下,所有带有“.”的文件和文件夹。 文件名前面是隐藏的,公众无法访问。 但是,在这种情况下,我们需要向公众提供访问权限 .well-known 文件夹,因为这是 Let’s Encrypt 将存储一个特殊的文件进行验证。

进入您的 Nginx 站点配置文件夹并打开它(如果您的站点有自定义配置文件)或使用默认值:

在 server 块中添加以下行:

Save (Ctrl + O) 和 close (Ctrl + x) 配置文件。

测试你的 Nginx 配置:

如果所有配置都正常,请重新加载配置:

生成 SSL 证书

现在您已经完成了 Nginx 配置,接下来就是安装 SSL 证书。

前往 Let’s Encrypt 文件夹:

运行以下命令生成证书:

这里有几件事要改变:

  • 更改 webroot-path 到您网站的文档根路径。 默认为“/user/share/nginx/html”,但您的配置可能会有所不同。
  • 改变 ”example.com”到您自己的域名。 请注意“example.com”和“www.example.com”是两个不同的域。 如果您希望证书支持多个域,只需添加 -d example1.com 到命令的末尾。 为了 example为域设置 SSL 证书 “example.com”、“www.example.com”、“example1.com”和“www.example1.com”,使用以下命令:

在第一次运行时,脚本会在你的系统中安装一堆 Python 文件。 完成后,它将开始证书生成过程。 首先,它会询问您的电子邮件地址:

之后,系统将提示您阅读服务条款 Let’s Encrypt 网站。 选择“同意”。

nginx-letsencrypt-read-tos

如果您看到以下消息:

这意味着您已成功为您的站点生成 SSL 证书。 相反,如果您看到错误消息,请修复错误并重试。

为您的站点激活 SSL 证书

现在您已经生成了 SSL 证书,是时候为您的站点激活它了。

返回Nginx配置文件夹,打开站点的配置文件:

cd /etc/nginx/sites-available
sudo nano default

创建一个新的服务器块并在块内添加以下配置:

Save 和 close 文件。

笔记:以上是Nginx配置块的简化版。 您应该将自己的自定义配置添加到块中。

最后,测试配置:

如果一切正常,重新加载 Nginx:

就是这样。 您已成功为您的站点设置 SSL 证书。 您现在可以加载 URL 的“https”版本以查看它的实际效果。

自动续订 Let’s Encrypt SSL 证书

与大多数有效期至少为一年的商业 SSL 证书不同, Let’s Encrypt的 SSL 证书只有三个月的有效期。 在此之后,您将必须续订才能继续使用它。 Let’s Encrypt 附带一个 renew 选项,这样您就可以轻松地更新您的证书,而无需再次完成整个安装。 以下说明向您展示如何设置 cron 作业以自动更新您的 SSL 证书。

仍在您的服务器中,打开 crontab:

添加以下行:

以上几行将在每周一上午 12 点检查您的 SSL 证书的到期日期,如果到期则更新它们 close 到期。 它还将重新加载 Nginx(在 12.05am)以确保更新的证书正在使用中。

Save 和 close crontab。

结论

如果您正在运行一个小型网站并且热衷于将 SSL 添加到您的网站, Let’s Encrypt 是为您的网站增加可信度的绝佳选择。 它(相对)易于设置并且不花钱(免费,如啤酒),因此没有理由不使用它。 但是,由于它只为那些需要组织验证 (OV) 或扩展验证 (EV) SSL 证书的公司提供域验证 (DV) 证书(最基本的 SSL 证书),因此商业 SSL 证书可能是要走的路。

Internet2 – HTTPS

订阅我们的新闻!

我们最新的教程直接发送到您的收件箱

注册所有时事通讯。 注册即表示您同意我们的隐私政策并且欧洲用户同意数据传输政策。 我们不会共享您的数据,您可以随时取消订阅。 订阅