本文将探讨在 Linux 服务器上安装和配置Certbot的过程。我们将详细解释如何为您的域名获取 Let's Encrypt SSL/TLS 证书。此外,我们还将介绍如何在 Web 服务器(例如 Nginx 或 Apache)上安装 Certbot,并设置证书自动续期,以确保与您的网站资源保持持续安全的连接。
Certbot是一款免费的开源工具,专为自动获取和续订SSL/TLS 证书而设计。它在保护服务器和客户端之间的连接安全方面发挥着至关重要的作用,能够防止数据遭到未经授权的访问。Certbot 简化了 SSL 证书的安装和续订流程。证书不仅能增强安全性,还能提升用户对您网站的信任度,从而提高网站的声誉和搜索引擎排名。
安装 Certbot
Certbot 默认包含在大多数发行版中,因此要在Debian/Ubuntu系统上安装它,只需更新软件包列表即可:
apt update
然后,启动安装过程:
apt install certbot
Certbot 支持方便设置和配置 Web 服务器证书的插件。要安装这些插件,请使用相应的命令:
apt install certbot python3-certbot-nginx # for Nginx
apt install certbot python3-certbot-apache # for Apache
Red Hat系统(例如RHEL、CentOS、Fedora )的安装过程略有不同。首先,您需要添加 EPEL 软件仓库:
yum install epel-release
然后安装该工具:
yum install certbot
类似地,还有一个为特定 Web 服务器选择插件的选项:
yum install python3-certbot-nginx # for Nginx
yum install python3-certbot-apache # for Apache
安装后,您可以立即获取证书。
获取 SSL 证书
在本节中,我们将讨论独立于特定 Web 服务器获取证书的过程,然后描述为 Nginx 和 Apache 安装证书的过程。但是,首先必须了解该程序的语法和功能。它如下所示:
certbot command option -d domain
主要命令包括:
certbot certonly - 检索证书但不安装它。certbot certificates - 此命令显示所有已安装证书的列表。certbot renew - 扩展现有证书。certbot revoke - 撤销现有证书。certbot delete - 删除现有证书。
最常用的选项是:
--nginx - 使用 Nginx 配置脚本进行域验证。--apache - 使用 Apache 配置脚本进行域验证。-d - 请求证书的域列表。--standalone - 使用独立模式进行域验证。--manual - 执行手动域验证。
这只是最常用命令和选项的示例。您可以在帮助部分中熟悉程序功能的完整列表:
certbot –help
接下来,我们将获取证书。例如,我们将为一个免费的三级域名(例如 yourusername.pserver.space)的虚拟服务器获取证书。
首先需要输入命令:
certbot certonly
作为响应,该实用程序将要求您选择一种验证域所有权的方法:
如果您没有配置好的 Web 服务器,或者您不想更改现有的 Web 服务器,那么第一种选择就很方便。此方法会创建一个临时的 Web 服务器来确认您对域的权利。它是简单快速设置的理想选择。选择此方法时,务必保持 80 端口空闲。
如果您已经有一个运行的 Web 服务器,并且想要使用它来验证域的权限,则第二种选择是更好的选择。Certbot 将特殊文件放在您服务器上的文件夹中,然后由认证中心检查这些文件。
我们选择第一个选项,然后单击下一步。在此阶段,您需要:
- 输入电子邮件地址;
- 同意服务条款;
- 代表公司及其合作伙伴同意或拒绝接收电子邮件;
- 指定颁发证书的域名。
使用 Certbot 工具完成证书颁发过程后,它将指示存储颁发的证书和您的帐户数据的目录路径:
剩下的就是将获得的证书链接到所需的服务。
安装 Nginx 或 Apache 的证书
本节假设某些基本条件已经满足:
- 您已经安装并配置了 Web 服务器,可以是 Nginx 或 Apache。它必须可以通过您打算获取证书的域名从互联网访问;
- 在安装该工具的过程中,您还使用适当的命令安装了 Nginx 或 Apache 的插件;
- 防火墙允许端口 80 和 443 上的连接。如果这些端口对连接关闭,则服务将无法用于传入连接。有关防火墙操作的更多详细信息,我们在文章中进行了讨论 在 Linux 上设置防火墙.
一旦满足所有条件,您就可以直接进行证书颁发。我们将以使用 Nginx 的服务器为例,介绍获取 SSL 证书的过程。但是,如果您使用的是 Apache Web 服务器,则该过程完全相同。
要获取证书,需要输入命令:
certbot --nginx # for Nginx
certbot --apache # for Apache
作为响应,该工具将请求:电子邮件地址、同意 Let's Encrypt 服务的使用条款以及代表该服务及其合作伙伴发送电子邮件的权限。
接下来,您需要指定证书颁发的域名。如果Nginx配置中的server_name字段或Apache配置中的ServerName和ServerAlias字段中指定了域名,Certbot 可以自动识别。如果未指定,程序会通知您并要求您手动输入域名。然后,该实用程序会询问您是否启用从 HTTP 到 HTTPS 协议的请求重定向。要设置自动重定向,您应该选择第二个选项:
一段时间后,Certbot 将通知您已成功获取指定域的证书。从此时起,所有传入连接都将从端口 80 重定向到 443。该工具将显示您可以在其中找到所有证书数据和 Let's Encrypt 帐户详细信息的目录:
该消息还将指定所获得证书的有效期以及管理所有有效证书的重要选项:
- 确实。此选项用于在没有自动 Web 服务器配置的情况下获取或更新证书。Certbot 将仅请求或更新证书,但不会对服务器配置进行任何自动更改。以前,我们使用此选项来获取证书,而无需绑定到 Web 服务器。
- 更新 用于自动续订所有通过 Certbot 获得的且在有效期内的证书。程序将检查所有证书,如果其中任何一个在 30 天或更短的时间内过期,则将自动续订。
接下来在说明中,我们将讨论如何设置每三个月无需用户干预的证书自动更新。
Certbot 中的自动证书更新
对于 Debian/Ubuntu
使用这些操作系统时,Certbot 会自动将脚本添加到任务列表中,以自动更新已安装的证书。您可以使用以下命令检查脚本的功能:
systemctl status certbot.timer
响应将显示服务状态以及包含配置文件的目录。您可以使用任何文本编辑器打开此文件。如果您不熟悉 Linux 下的文本编辑器,我们建议您先阅读我们对最常用编辑器的概述。在本例中,我们将使用 nano 编辑器:
nano /lib/systemd/system/certbot.timer
所有重要参数均突出显示:
- 时间表显示该服务将每天运行两次,分别于00:00和12:00;
- 第二个值表示将添加到计时器启动的随机延迟(以秒为单位)。在本例中,它是 43,200 秒(12 小时),这使启动更加随机并分散了负载;
- 此参数确保如果计时器应该在系统关闭期间执行,则它将在启动时立即激活。
您还可以使用以下命令运行强制证书更新检查:
certbot renew --dry-run
使用此命令,证书不会被更新。相反,该工具将在证书到期时执行类似于获取证书的操作。这样,您可以确保服务在自动续订方面的功能。
对于 CentOS、Fedora 和其他系统
在 Red Hat 系列系统上启用自动更新的过程略有不同。与 Debian/Ubuntu 不同,对于 CentOS 和其他系统,您需要手动向调度程序添加任务。为此,我们将使用cron工具:
crontab -e
然后,在打开的文件中添加以下行:
0 12 * * * /usr/bin/certbot renew --quiet
让我们分解一下该命令的主要参数:
- 执行时间。本例中,该命令会在每天12点自动运行;
- 使用 Certbot 更新 SSL/TLS 证书的命令;
- 此 - 安静的 标志抑制输出,使进程更加隐蔽,并且在系统日志或显示中更少干扰。
添加命令后,需要保存文件中的更改。
与 Debian/Ubuntu 一样,您也可以启动强制证书更新检查:
certbot renew --dry-run
命令成功执行的结果如下:
结语
我们探索了在 Linux 服务器上安装和配置 Certbot 的全面过程。按照提供的说明,您可以成功从 Let's Encrypt 获取 SSL/TLS 证书,将其安装在您的 Web 服务器上,并配置自动续订以确保持续保护并增强对您的 Web 资源的信任。使用 Certbot,您可以轻松为用户创建可靠且安全的环境。