Email:2225994292@qq.com
CNY
使用Certbot申请多域名SSL证书步骤详解
更新时间:2025-08-18 作者:申请多域名SSL证书

Certbot 是一款由 Electronic Frontier Foundation(电子前线基金会,简称 EFF)开发的开源工具,主要用于自动获取和更新Let’s Encrypt颁发的SSL/TLS证书,能极大地简化多域名SSL证书的申请流程。下面将详细介绍使用 Certbot 申请多域名SSL证书的具体步骤。

一、准备工作

1. 确保服务器环境满足要求:Certbot 支持多种操作系统,如常见的 Ubuntu、Debian、CentOS 等。在开始申请前,需确认服务器操作系统已正确安装且能正常运行,同时服务器具备公网 IP 地址,并且该 IP 地址已正确解析到对应的域名。

2. 确认域名解析已完成:将需要申请SSL证书的多个域名都正确解析到服务器的 IP 地址上。可通过 ping 命令或在线域名解析查询工具,检查域名是否解析正常。例如,对于域名example1.com、example2.com等,确保它们都指向了服务器的 IP。若解析不正确,Certbot 将无法通过域名验证,进而无法申请到证书。

3. 安装 Certbot:不同操作系统安装 Certbot 的方式有所差异。

  • Ubuntu/Debian 系统:打开终端,执行以下命令安装 Certbot 及相关依赖。首先更新软件包列表:
1    sudo apt update

然后安装 Certbot,对于 Nginx 服务器,还需安装 Certbot 的 Nginx 插件:

1    sudo apt install certbot python3-certbot-nginx
  • CentOS 系统:先安装 EPEL 存储库,执行:
1    sudo yum install epel - release

再安装 Certbot 及 Nginx 插件(若使用 Nginx 服务器):

1    sudo yum install certbot python2 - certbot - nginx

二、申请多域名SSL证书

1. 执行 Certbot 申请命令:在终端中,使用以下命令申请多域名SSL证书。以使用 Nginx 服务器为例,假设要申请证书的域名为example1.com、example2.com和example3.com,命令如下:

1    sudo certbot --nginx -d example1.com -d example2.com -d example3.com

上述命令中,--nginx参数表示 Certbot 将自动配置 Nginx 服务器使用申请到的证书。-d参数用于指定需要申请证书的域名,可根据实际情况添加多个域名。若使用 Apache 服务器,则将--nginx替换为--apache

2. 输入邮箱并同意条款:执行上述命令后,Certbot 会提示输入邮箱地址,用于接收证书过期提醒等重要通知。输入有效的邮箱地址后回车,接着会显示Let’s Encrypt的服务条款,输入Y同意条款,Certbot 将继续进行证书申请流程。

3. 选择 HTTPS 配置选项(可选):在某些情况下,Certbot 可能会询问是否要将 HTTP 流量自动重定向到 HTTPS。若选择重定向,用户访问网站的 HTTP 版本时,会自动跳转到 HTTPS 版本,增强网站的安全性。可根据实际需求选择2(重定向)或1(不重定向)。

三、验证与证书安装

1. 域名验证:Certbot 会通过特定的验证机制来确认你对所申请域名的所有权。常见的验证方法有 HTTP - 01 和 DNS - 01。

  • HTTP - 01 验证:Certbot 会尝试在服务器的 Web 根目录下创建一个特定的文件,Let’s Encrypt 服务器会访问该文件来验证域名所有权。这要求服务器的 Web 服务(如 Nginx、Apache)已正确配置且运行正常,并且 80 端口对外开放(在验证过程中,Let’s Encrypt 服务器会通过 HTTP 协议访问该文件)。
  • DNS - 01 验证:Certbot 会在域名的 DNS 记录中添加一个特定的 TXT 记录,Let’s Encrypt 服务器通过检查该 DNS 记录来验证域名所有权。这种方式适用于一些无法通过 HTTP - 01 验证的场景,如服务器的 80 端口被占用或无法对外开放等。若选择 DNS - 01 验证,Certbot 会提示需要在域名注册商的 DNS 管理界面中添加相应的 TXT 记录,添加完成后,回车继续验证过程。

2. 证书安装:如果域名验证成功,Certbot 会从Let’s Encrypt服务器获取SSL证书,并自动将证书安装到服务器的 Web 服务器(如 Nginx、Apache)配置中,使其能够使用 HTTPS 协议提供服务。默认情况下,Certbot 会将证书文件保存到/etc/letsencrypt/live/域名/目录下,其中域名为你申请证书的具体域名。例如,对于example1.com,证书文件路径为/etc/letsencrypt/live/example1.com/,该目录下包含cert.pem(证书文件)、privkey.pem(私钥文件)等重要文件。

四、自动续期设置

Let’s Encrypt 颁发的SSL证书有效期通常为 90 天,为了确保证书不会过期导致网站无法正常访问,需要设置自动续期。Certbot 提供了自动续期功能,可通过以下方式进行设置:

1. 检查自动续期配置:在大多数系统中,Certbot 会自动配置一个定时任务(cron job)或 systemd 定时器来定期检查证书的有效期,并在证书即将过期(一般为到期前 30 天内)时自动续期。可通过以下命令检查自动续期任务是否已正确配置:

  • 对于 cron 任务:查看/etc/cron.d/certbot文件,确认其中是否有类似以下的内容:
1    0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(43200))' && /usr/bin/certbot renew --quiet

该任务表示每天的 0 点和 12 点,系统会检查 Certbot 是否可执行,并且在随机延迟一段时间(0 - 12 小时内)后,执行certbot renew --quiet命令来自动续期证书。--quiet参数用于减少命令执行时的输出信息,只在有重要事件时通知用户。

  • 对于 systemd 定时器:执行以下命令查看certbot.timer的状态:
1    systemctl status certbot.timer

若显示active (running),则表示 systemd 定时器已正常运行,会按照预定时间触发certbot renew命令来续期证书。

2. 手动测试续期:在设置好自动续期后,建议手动测试一次续期过程,确保续期功能正常。执行以下命令进行测试:

1    sudo certbot renew --dry - run

--dry - run参数表示模拟续期过程,不会实际更新证书。如果模拟续期过程没有报错,且显示类似 “Congratulations, all renewals succeeded” 的信息,则说明自动续期功能配置正确。若测试过程中出现错误,需根据错误提示排查问题,常见的问题包括网络连接问题、域名解析异常、Web 服务器配置错误等。

五、常见问题及解决方法

1. 证书申请失败,提示域名验证失败:

  • 检查域名解析:确认域名是否正确解析到服务器 IP 地址,可通过 ping 命令或在线域名解析查询工具进行检查。若解析不正确,需在域名注册商处修改解析设置,等待解析生效后重新申请证书。
  • 检查 Web 服务器配置:如果使用 HTTP - 01 验证方式,确保 Web 服务器(如 Nginx、Apache)已正确配置,且网站根目录权限设置正确,Let’s Encrypt 服务器能够访问到 Certbot 创建的验证文件。检查 Web 服务器的日志文件(如 Nginx 的/var/log/nginx/error.log),查看是否有相关错误信息。
  • 检查端口状态:确保服务器的 80 端口(用于 HTTP - 01 验证)和 443 端口(用于 HTTPS 访问)没有被其他程序占用,并且防火墙已开放这两个端口。可使用netstat -tlnp命令查看端口占用情况,使用iptables -L命令查看防火墙规则。若端口被占用,可停止占用端口的程序,或修改 Web 服务器的端口设置;若防火墙未开放端口,需添加相应的规则开放端口。

2. Certbot 无法找到 Web 服务器的可执行文件:这种情况通常发生在系统路径设置不正确或 Web 服务器未正确安装的情况下。

  • 检查 Web 服务器安装路径:确认 Web 服务器(如 Nginx、Apache)已正确安装,并且安装路径在系统的环境变量中。例如,对于 Nginx 服务器,若安装在默认路径/usr/sbin/下,可通过以下命令检查 Nginx 是否在系统路径中:
1    which nginx

若返回 Nginx 的安装路径,则说明路径设置正确;若未找到,需将 Nginx 的安装路径添加到系统环境变量中。

  • 重新安装 Certbot 插件:如果是 Certbot 的 Web 服务器插件(如python3 - certbot - nginxpython2 - certbot - apache)安装不正确,可尝试卸载并重新安装插件。以 Nginx 插件为例,在 Ubuntu/Debian 系统中,执行以下命令卸载插件:
1    sudo apt - get remove python3 - certbot - nginx

然后重新安装:

1    sudo apt - get install python3 - certbot - nginx

在 CentOS 系统中,使用以下命令卸载:

1    sudo yum remove python2 - certbot - nginx

重新安装:

1    sudo yum install python2 - certbot - nginx

3. 自动续期失败:

  • 检查网络连接:自动续期过程需要服务器能够连接到Let’s Encrypt服务器,检查服务器的网络连接是否正常,可通过 ping Let’s Encrypt服务器的地址(如acme - v02.api.letsencrypt.org)来测试网络连通性。若网络连接有问题,需排查网络故障,如检查防火墙设置、路由器配置等。
  • 检查证书有效期:确认需要续期的证书是否即将过期。Let’s Encrypt 规定,只有在证书到期前 30 天内,Certbot 才会尝试自动续期。若证书离到期时间超过 30 天,手动测试续期时可能会提示证书不需要续期。
  • 查看日志文件:Certbot 的操作会生成日志文件,通常位于/var/log/letsencrypt/目录下。查看该目录下的日志文件,如letsencrypt.log,了解自动续期失败的具体原因。常见的原因包括域名验证失败、Web 服务器配置错误等,根据错误提示进行相应的解决。

通过以上详细步骤,你可以使用 Certbot 顺利申请多域名SSL证书,并确保证书的自动续期功能正常运行,为多个域名的网站提供安全可靠的 HTTPS 加密访问。在操作过程中,若遇到问题,可参考常见问题及解决方法进行排查和解决。


Dogssl.cn拥有20年网络安全服务经验,提供构涵盖国际CA机构SectigoDigicertGeoTrustGlobalSign,以及国内CA机构CFCA沃通vTrus上海CA等数十个SSL证书品牌。全程技术支持及免费部署服务,如您有SSL证书需求,欢迎联系!
相关文档
立即加入,让您的品牌更加安全可靠!
申请SSL证书
0.167626s