介绍
本教程将向您展示如何在运行 Apache 作为 Web 服务器的 Ubuntu 16.04 服务器上从 Let’s Encrypt设置 TLS/SSL 证书。
SSL证书用于网络服务器中加密服务器和客户端之间的流量,为访问您的应用程序的用户提供额外的安全性。
前提条件
为了完成本指南,您将需要:
- 具有非 root sudo 允许的用户的 Ubuntu 16.04 服务器,您可以通过遵循我们的 初始服务器设置指南
- 安装了 一个或多个域名的 Apache 网络服务器,通过虚拟主机正确配置,指定了
ServerName
当你准备好继续时,使用你的 sudo 启用帐户登录你的服务器。
步骤 1 – 安装 Let’s Encrypt 客户端
Let's Encrypt 证书是通过在您的服务器上运行的客户端软件获取的。官方客户端叫做Certbot,其开发人员维护自己的Ubuntu软件存储库,具有最新的版本。
首先,添加存储器:
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步:设置SSL证书
使用Certbot生成Apache的SSL证书非常简单,客户端将自动获得并安装一个新的SSL证书,该证书适用于作为参数提供的域。
要执行交互式安装并获得仅覆盖单个域的证书,请运行certbot
命令,例如 example.com 是您的域:
1sudo certbot --apache -d example.com
如果您想安装一个适用于多个域或子域的单一证书,您可以将其作为附加参数传输到命令中。参数列表中的第一个域名将是使用 Let’s Encrypt 创建该证书的 base 域名,因此我们建议您在列表中先传输裸体的顶级域名,然后再添加任何附加的子域或外名:
1sudo certbot --apache -d example.com -d www.example.com
对于这个例子, base 域名将是 example.com
。
如果您有多个虚拟主机,您应该运行certbot
一次,为每个主机生成新的证书,您可以以任何方式在您的虚拟主机中分发多个域和子域。
在依赖性安装后,您将收到一步一步的指南来自定义您的证书选项。您将被要求提供丢失的钥匙恢复和通知的电子邮件地址,并且您将能够选择允许http
和https
访问或强迫所有请求重定向到https
。
安装完成后,您应该能够在 /etc/letsencrypt/live
找到生成的证书文件,您可以通过以下链接验证您的 SSL 证书的状态(不要忘了用您的 base 域代替 example.com):
1https://www.ssllabs.com/ssltest/analyze.html?d=example.com&latest
您现在应该能够使用https
前缀访问您的网站。
步骤 3 – 验证 Certbot 自动更新
让我们加密证书只持续90天,然而,我们安装的Certbot包通过通过系统d计时器每天两次运行certbot renew
来为我们做好准备。
要测试更新过程,您可以使用certbot
进行干跑:
1sudo certbot renew --dry-run
如果你没有看到任何错误,你都已经设置了。当需要时,Certbot会更新你的证书并重新加载Apache来接收更改。如果自动更新过程有时失败,Let’s Encrypt将向你指定的电子邮件发送消息,通知你你的证书即将到期。
结论
在本指南中,我们看到了如何从 Let’s Encrypt 安装免费的 SSL 证书,以便保护由 Apache 托管的网站. 我们建议您定期查看官方 Let’s Encrypt 博客的重要更新,并阅读 Certbot 文档有关 Certbot 客户端的更多细节。