介绍
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.com
和test.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
。
在依赖性安装后,您将收到一步一步的指南来自定义您的证书选项,您将被要求提供丢失密钥恢复和通知的电子邮件地址,您将能够选择允许http
和https
访问或强迫所有请求重定向到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 上保护多个虚拟主机。