如何在 Ubuntu 14.04 上为多个 Apache 虚拟主机设置 Let's Encrypt 证书

介绍

SSL证书用于网络服务器中加密服务器和客户端之间的流量,为访问您的应用程序的用户提供额外的安全性。

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

我们还将介绍如何使用 cron 工作来自动化证书更新过程。

前提条件

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

重要的是,每个虚拟主机都设置在其单独的配置文件中,并可以通过浏览器外部访问。 有关如何正确设置Ubuntu上的Apache虚拟主机的详细指南,请遵循此链接(https://andsky.com/tech/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-16-04)。

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

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

第1步:下载 Let’s Encrypt 客户端

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

首先,添加存储器:

1sudo add-apt-repository ppa:certbot/certbot

接下来,更新包列表以获取新库的包信息:

1sudo apt-get update

最后,从apt-get的新存储库中安装 Certbot:

1sudo apt-get install python-certbot-apache

certbot Let’s Encrypt 客户端现在已经准备好使用。

步骤2 - 设置证书

使用certbot Let’s Encrypt 客户端生成 Apache 的 SSL 证书非常简单,客户端将自动获得并安装一个新的 SSL 证书,该证书适用于作为参数提供的域。

虽然可以将多个 Let’s Encrypt 证书组合在一起,即使域名不同,但建议为独特域名创建单独证书。

生成第一个SSL证书

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

我们将执行交互式安装,并获得一个适用于域和子域的包装证书,即example.com作为基域和www.example.com作为子域。

运行certbot命令:

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

请注意,参数列表中的第一个域名将是使用 Let’s Encrypt 创建证书的 base域名,因此,我们建议您在列表中先通过单独的顶级域名,然后是任何额外的子域名或副名称。

对于这个例子, base 域名将是 example.com

在依赖性安装后,您将收到一步一步的指南来自定义您的证书选项,您将被要求提供丢失密钥恢复和通知的电子邮件地址,您将能够选择允许httphttps访问或强迫所有请求重定向到https

安装完成后,您应该能够在 /etc/letsencrypt/live 找到生成的证书文件,您可以通过以下链接验证您的 SSL 证书的状态(不要忘了用您的 base 域代替 example.com):

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

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

创建第二个SSL证书

生成额外的虚拟主机的证书应该遵循前一步中描述的相同过程。

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

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

对于这个例子, base 域名将是 test.com

再次,您可以通过以下链接验证您的SSL证书的状态(不要忘记用您的 base域名更换test.com):

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

如果您想为额外的虚拟主机生成证书,只需重复这个过程,并且不要忘记使用空白的顶级域作为您的 base域。

第3步:设置自动更新

Let's Encrypt 的证书仅有效90天,以鼓励用户自动更新证书,我们需要设置一个定期运行命令,以检查证书的到期期,并自动更新。

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

1sudo crontab -e

您的文本编辑器将打开默认 crontab,这是一个文本文件,其中有一些帮助文本。

1[label crontab]
2. . .
315 3 * * * /usr/bin/certbot renew --quiet

这个行的15 3 * * *部分意味着每天早上3点15分执行以下命令

Certbot 的更新命令会检查系统上安装的所有证书,并更新任何在不到 30 天内到期的证书。

由于我们使用了--apache插件安装了我们的证书,Apache也将重新加载以确保新证书被使用。

<$>[注] 有关如何创建和安排 cron 工作的更多信息,您可以查看我们的 如何在 VPS 中使用 Cron 来自动化任务指南。

结论

在本指南中,我们看到了如何从 Let’s Encrypt 安装免费的 SSL 证书,以便在 Apache 上保护多个虚拟主机。

Published At
Categories with 技术
comments powered by Disqus