如何在Ubuntu14.04上为多个Apache虚拟主机设置Let'sEncrypt证书

来自菜鸟教程
跳转至:导航、​搜索

介绍

SSL 证书在 Web 服务器中用于加密服务器和客户端之间的流量,为访问您的应用程序的用户提供额外的安全性。 Let's Encrypt 提供了一种免费获取和安装可信证书的简单方法。

本教程将向您展示如何在 Ubuntu 14.04 服务器中设置 Let's Encrypt 的 TLS/SSL 证书,以保护 Apache 上的多个虚拟主机。

我们还将介绍如何使用 cron 作业自动执行证书更新过程。

    1. 先决条件

为了完成本指南,您需要:

重要的是,每个虚拟主机都设置在自己单独的配置文件中,并且可以通过浏览器从外部访问。 有关如何在 Ubuntu 上正确设置 Apache 虚拟主机的详细指南,请点击 此链接

出于本指南的目的,我们将为域 example.comtest.com 安装 Let's Encrypt 证书。 这些将在整个指南中被引用,但您应该在跟随时将它们替换为您自己的域。

当您准备好继续前进时,使用您的 sudo 帐户登录您的服务器。

    1. Step 1 — 下载 Let's Encrypt 客户端

使用 Let's Encrypt 获取 SSL 证书的第一步是在您的服务器上安装 certbot 软件。 Certbot 开发人员使用最新版本的软件维护自己的 Ubuntu 软件存储库。 由于 Certbot 处于如此积极的开发中,因此值得使用此存储库来安装比 Ubuntu 提供的更新的 Certbot。

首先,添加存储库:

sudo add-apt-repository ppa:certbot/certbot

您需要按 ENTER 接受。 之后,更新包列表以获取新存储库的包信息:

sudo apt-get update

最后,使用 apt-get 从新存储库安装 Certbot:

sudo apt-get install python-certbot-apache

certbot Let's Encrypt 客户端现在可以使用了。

    1. Step 2 — 设置证书

使用 certbot Let's Encrypt 客户端为 Apache 生成 SSL 证书非常简单。 客户端将自动获取并安装对作为参数提供的域有效的新 SSL 证书。

虽然可以将多个 Let's Encrypt 证书捆绑在一起,但即使域名不同,建议您为唯一的域名创建单独的证书。 作为一般经验法则,只有特定域的子域应该捆绑在一起。

      1. 生成第一个 SSL 证书

我们将从为第一个虚拟主机 example.com 设置 SSL 证书开始。

我们将执行交互式安装并获得一个对域和子域都有效的捆绑证书,即example.com作为基域,www.example.com作为子域。 您可以将当前在 Apache 设置中配置为虚拟主机或别名的任何其他子域包括在内。

使用以下命令运行 certbot 命令:

sudo certbot --apache -d example.com -d www.example.com

请注意,参数列表中的第一个域名将是 Let's Encrypt 用于创建证书的 base 域,因此我们建议您将裸顶级域名作为第一个传递列表,后跟任何其他子域或别名。

对于此示例,base 域将为 example.com

安装依赖项后,您将看到一个分步指南来自定义您的证书选项。 您将被要求提供丢失密钥恢复和通知的电子邮件地址,并且您可以选择启用 httphttps 访问或强制所有请求重定向到 https

安装完成后,您应该可以在 /etc/letsencrypt/live 找到生成的证书文件。 您可以使用以下链接验证 SSL 证书的状态(不要忘记将 example.com 替换为您的 base 域):

https://www.ssllabs.com/ssltest/analyze.html?d=example.com&latest

您现在应该可以使用 https 前缀访问您的网站。

生成第二个 SSL 证书

为您的其他虚拟主机生成证书应遵循上一步中描述的相同过程。

重复证书安装命令,现在使用您要使用 Let's Encrypt 保护的第二个虚拟主机:

sudo certbot --apache -d test.com -d www.test.com

对于此示例,base 域将为 test.com

同样,您可以使用以下链接验证 SSL 证书的状态(不要忘记将 test.com 替换为您的 base 域):

https://www.ssllabs.com/ssltest/analyze.html?d=test.com&latest

如果您想为其他虚拟主机生成证书,只需重复该过程,并且不要忘记使用裸顶级域作为您的 base 域。

    1. Step 3 - 设置自动续订

Let's Encrypt 的证书有效期只有九十天。 这是为了鼓励用户自动化他们的证书更新过程。 我们需要设置一个定期运行的命令来检查过期证书并自动更新它们。

为了每天运行更新检查,我们将使用 cron,这是一种用于运行定期作业的标准系统服务。 我们通过打开和编辑一个名为 crontab 的文件来告诉 cron 要做什么。

sudo crontab -e

您的文本编辑器将打开默认的 crontab,这是一个包含一些帮助文本的文本文件。 在文件末尾粘贴以下行,然后保存并关闭它:

crontab

. . .
15 3 * * * /usr/bin/certbot renew --quiet

该行的 15 3 * * * 部分表示“每天凌晨 3:15 运行以下命令”。 您可以随时选择。

Certbot 的 renew 命令将检查系统上安装的所有证书,并更新任何设置为在 30 天内到期的证书。 --quiet 告诉 Certbot 不要输出信息也不要等待用户输入。

cron 现在将每天运行此命令。 因为我们使用 --apache 插件安装了我们的证书,Apache 也将被重新加载以确保使用新的证书。

有关如何创建和安排 cron 作业的更多信息,您可以在 VPS 指南中查看我们的 How to Use Cron to Automate Tasks。


##结论

在本指南中,我们了解了如何从 Let's Encrypt 安装免费的 SSL 证书,以保护 Apache 上的多个虚拟主机。 我们建议您不定期查看官方 Let's Encrypt 博客 以获取重要更新。