SSL 证书在 Web 服务器内用于加密服务器和客户端之间的流量,为访问您的应用程序的用户提供额外的安全性。 Let’s Encrypt 提供了一种免费获取和安装受信任证书的简单方法。
本教程将向您展示如何设置 TLS/SSL 证书让我们加密用于保护 Ubuntu 14.04 服务器内 Apache 上的多个虚拟主机。
我们还将介绍如何使用 cron 作业自动执行证书续订过程。
##先决条件
为了完成本指南,您将需要:
- 具有非 root sudo 用户的 Ubuntu 14.04 服务器,您可以按照我们的说明进行设置初始服务器设置 guide
- 功能齐全的 Apache Web 服务器安装托管多个虚拟主机
重要的是,每个虚拟主机都在自己单独的配置文件中设置,并且可以通过浏览器从外部访问。有关如何在 Ubuntu 上正确设置 Apache 虚拟主机的详细指南,请遵循这个链接.
出于本指南的目的,我们将为域安装 Let’s Encrypt 证书example.com
and test.com
。这些将在整个指南中引用,但您应该在遵循时用您自己的域替换它们。
当您准备好继续操作时,请使用您的 sudo 帐户登录到您的服务器。
##步骤 1 — 下载 Let’s Encrypt 客户端
使用 Let’s Encrypt 获取 SSL 证书的第一步是安装certbot
您服务器上的软件。 Certbot 开发人员维护自己的 Ubuntu 软件存储库,其中包含最新版本的软件。由于 Certbot 正处于如此活跃的开发阶段,因此值得使用此存储库来安装比 Ubuntu 提供的更新的 Certbot。
首先,添加存储库:
-
sudo添加 apt-存储库 ppa:certbot/certbot
您需要按ENTER
接受。然后,更新包列表以获取新存储库的包信息:
最后,从新存储库安装 Certbotapt-get
:
-
sudo apt-get installpython-certbot-apache
The certbot
Let’s Encrypt 客户端现在可以使用了。
##Step 2 — 设置证书
使用以下命令为 Apache 生成 SSL 证书certbot
Let’s Encrypt 客户端非常简单。客户端将自动获取并安装新的 SSL 证书,该证书对作为参数提供的域有效。
虽然可以将多个 Let’s Encrypt 证书捆绑在一起,但即使域名不同,也建议您为唯一的域名创建单独的证书。作为一般经验法则,只有特定域的子域才应该捆绑在一起。
###生成第一个SSL证书
我们将从为第一个虚拟主机设置 SSL 证书开始,example.com
.
我们将执行交互式安装并获取对域和子域有效的捆绑证书,即example.com
作为基域和www.example.com
作为子域。您可以包含当前在 Apache 设置中配置为虚拟主机或别名的任何其他子域。
Run the certbot
命令:
-
sudo certbot --apache -d example.com -d www.example.com
请注意,参数列表中的第一个域名将是baseLet's Encrypt 用于创建证书的域,因此我们建议您将裸顶级域名作为列表中的第一个传递,然后传递任何其他子域或别名。
对于这个例子,base域将是example.com
.
安装依赖项后,您将看到一个分步指南来自定义您的证书选项。系统会要求您提供用于丢失密钥恢复和通知的电子邮件地址,并且您可以选择启用这两者http
and https
访问或强制所有请求重定向到https
.
When the installation is finished, you should be able to find the generated certificate files at /etc/letsencrypt/live
. You can verify the status of your SSL certificate with the following link (don’t forget to replace example.com with your base domain):
https://www.ssllabs.com/ssltest/analyze.html?d=example.com&latest
您现在应该可以使用以下方式访问您的网站https
prefix.
为其他虚拟主机生成证书应遵循上一步中描述的相同过程。
现在使用要使用 Let's Encrypt 保护的第二个虚拟主机重复证书安装命令:
-
sudo certbot --apache -d test.com -d www.test.com
对于这个例子,base域将是test.com
.
Again, you can verify the status of your SSL certificate with the following link (don’t forget to replace test.com with your base domain):
https://www.ssllabs.com/ssltest/analyze.html?d=test.com&latest
如果您想为其他虚拟主机生成证书,只需重复该过程,并且不要忘记使用裸顶级域作为您的base domain.
##步骤 3 — 设置自动续订
Let’s Encrypt 的证书有效期只有 90 天。这是为了鼓励用户自动化他们的证书更新过程。我们需要设置一个定期运行的命令来检查过期的证书并自动更新它们。
要每天运行续订检查,我们将使用cron
,用于运行定期作业的标准系统服务。我们告诉cron
打开并编辑名为 a 的文件可以做什么crontab
.
您的文本编辑器将打开默认的 crontab,它是一个文本文件,其中包含一些帮助文本。将以下行粘贴到文件末尾,然后保存并关闭它:
crontab
. . .
15 3 * * * /usr/bin/certbot renew --quiet
The 15 3 * * *
该行的一部分表示“每天凌晨 3:15 运行以下命令”。您可以随时选择。
The renew
Certbot 命令将检查系统上安装的所有证书,并更新任何设置为在 30 天内过期的证书。--quiet
告诉 Certbot 不要输出信息也不等待用户输入。
cron
现在将每天运行此命令。因为我们使用以下命令安装了证书--apache
插件,Apache 也将被重新加载,以确保使用新的证书。
有关如何创建和安排 cron 作业的更多信息,您可以查看我们的如何使用 Cron 在 VPS 中自动执行任务 guide.
##结论
在本指南中,我们了解了如何安装 Let’s Encrypt 的免费 SSL 证书,以保护 Apache 上的多个虚拟主机。建议您查看官方让我们加密博客不时获取重要更新。