首页开发教程Certbot部署/申请证书全面指南

Certbot部署/申请证书全面指南

2025-12-25 46

Certbot是一个免费、开源的软件工具,用于自动从证书品牌商(比如Let‘s Encrypt以及Certum等)获取和更新 TLS/SSL 证书,并将这些证书部署到您的web服务器上。本文将详解Certbot的核心原理、配置,并通过Ubuntu/CentOS系统和Nginx/Apache服务器为大家演示安装Certbot和使用Certbot获取并安装证书。

一、Certbot介绍

Certbot的核心就是ACME协议的客户端实现,所有的自动化功能都是建立在与 证书品牌商(一个 ACME 服务端)的通信之上的。ACME的全称是 Automated Certificate Management Environment(自动证书管理环境)。它是一个开放的协议标准,定义了一个客户端(如 Certbot)和一个证书颁发机构(CA,如 Let’s Encrypt)之间如何自动地进行域名验证、证书申请、续期和吊销。

ACME 协议的核心价值就是自动化,它消除了传统手动申请、验证和安装 SSL 证书的繁琐过程。运行 certbot 命令时在背后与 Let’s Encrypt 的 ACME 服务器进行了一系列交互,主要步骤如下:

1、发起订单

Certbot 向证书商的ACME 服务器申请为一个或多个域名(例如 example.com 和 www.example.com)签发证书。

2、完成验证

ACME服务器会返回一个或多个“验证”任务,要求Certbot证明您确实控制着这些域名。Certbot 支持多种ACME 验证类型,最常用的是:

3、HTTP验证

ACME服务器要求 Certbot 在您网站的根目录下放置一个特定的文件,然后服务器会尝试通过 HTTP 访问这个文件。如果能访问到正确的内容,就证明您控制了该域名。

  • –webroot 模式就是利用这种方式,它不需要停止 Web 服务器;
  • –standalone 模式也是这种方式,但它会临时启动一个独立的 web 服务器(监听 80 端口)来完成验证。

4、DNS验证

ACME 服务器要求 Certbot 在您域名的 DNS 解析记录中添加一个特定的 TXT 记录。这是通配符证书(*.example.com)申请的唯一方式,也适用于无法开放 80/443 端口的服务器。

5、获取证书

在 Certbot 成功完成验证后,它会通知 ACME 服务器。服务器验证通过后,就会签发 SSL 证书,Certbot 随后下载并保存到本地(通常是 /etc/letsencrypt/live/your_domain/ 目录)。

6、配置 Web 服务器

根据您使用的参数(如 –nginx 或 –apache),Certbot 会自动修改服务器配置以使用新证书;如果使用 certonly 模式,则您需要手动配置。

7、自动续期

ACME 协议的 renew 命令让 Certbot 可以定期检查本地已安装的证书,并在证书即将过期(默认是到期前 30 天内)时,自动重复上述的“验证-获取-安装”流程,实现无缝续期。这正是 sudo certbot renew –quiet 命令在 Cron 任务中做的事情。

可以将Certbot和ACME的关系理解为:

  • ACME 是“语言”和“规则”:它定义了客户端和服务器之间如何沟通来完成证书的自动化管理;
  • Let’s Encrypt 是说这种“语言”的“服务商”:它提供了遵循 ACME 协议的公共服务;
  • Certbot 是说这种“语言”的“客户端”:它是一个具体实现了 ACME 协议的工具,让我们能够方便地与 Let’s Encrypt 这样的服务商进行交互。因此,Certbot 的成功运行完全依赖于其对 ACME 协议的实现。没有 ACME,就没有 Certbot 的自动化。

二、Certbot部署教程

第一部分:安装 Certbot

方法一:使用系统包管理器(推荐,最简单)

Ubuntu / Debian:

sudo apt update
sudo apt install certbot python3-certbot-nginx # 如果使用 Nginx
# 或者
sudo apt install certbot python3-certbot-apache # 如果使用 Apache

CentOS / RHEL / Fedora:

# CentOS 7/RHEL 7
sudo yum install epel-release
# 或者 CentOS 8/RHEL 8 及以上
sudo dnf install epel-release

然后安装 Certbot:

# 如果使用 Nginx
sudo yum install certbot python2-certbot-nginx # CentOS 7
sudo dnf install certbot python3-certbot-nginx # CentOS 8+
# 如果使用 Apache
sudo yum install certbot python2-certbot-apache # CentOS 7
sudo dnf install certbot python3-certbot-apache # CentOS 8+

第二部分:使用Certbot获取并安装证书

方法 A:自动配置(推荐给新手,最省心)

此方法允许 Certbot 自动修改您的 Nginx/Apache 配置文件,启用 HTTPS 重定向。

Nginx:

sudo certbot –nginx

Apache:

sudo certbot –apache

通过以上Certbot命令可以实现 :

1、列出所有找到的虚拟主机(域名),让你选择为哪个域名申请证书。

2、自动完成域名验证。

3、下载证书并修改你的 Nginx 配置,将 HTTP 重定向到 HTTPS。

方法 B:手动配置(更灵活,适合有经验的用户)

此方法只获取证书,不修改您的 Web 服务器配置。需要手动配置服务器以使用证书。

获取证书(以 –webroot 模式为例):

这种方式不需要停止您的 Web 服务器。

sudo certbot certonly –webroot -w /var/www/html -d example.com -d www.example.com

  • certonly: 表示只获取证书,不安装;
  • –webroot: 使用 webroot 插件;
  • -w /var/www/html: 您的网站根目录。Certbot 会在此目录下创建 .well-known/acme-challenge/ 文件夹用于验证。请确保此路径正确;
  • -d example.com -d www.example.com: 您要为其申请证书的域名,可以申请多个;

手动配置Web服务器:获取证书后(成功后会显示证书路径,通常是 /etc/letsencrypt/live/your_domain/),您需要修改服务器配置。

Nginx配置示例:在您的 Nginx 站点配置文件中(如 /etc/nginx/sites-available/your_site)添加 SSL 相关配置:

nginx
server {
listen 443 ssl;
server_name example.com www.example.com;

ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

# … 其他配置 …}
# 强制重定向 HTTP 到 HTTPSserver {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;}

修改后,检查配置并重新加载 Nginx:

bash
sudo nginx -tsudo systemctl reload nginx

Apache 配置示例:

启用 SSL 模块和您的站点 SSL 虚拟主机:

bash
sudo a2enmod sslsudo a2ensite your-ssl-site-config # 启用SSL站点配置

然后在您的 Apache 虚拟主机配置中指定证书路径。

第三部分:设置自动续期

Let‘s Encrypt 证书有效期为 90 天,但续期非常简单。Certbot 可以自动完成。
测试续期命令是否正常工作:

bash
sudo certbot renew –dry-run

这个命令会模拟续期过程,检查一切是否正常,而不会真的续期。

设置定时任务(Cron Job):

大多数系统在安装 Certbot 时已经自动添加了一个定时任务。您可以通过以下命令检查:

bash
sudo systemctl list-timers# 或者查看 Cronsudo crontab -l

如果没有,可以手动添加。每天运行两次续期检查是推荐的做法:

bash
# 打开 root 用户的 crontabsudo crontab -e# 添加以下行0 12 * * * /usr/bin/certbot renew –quiet

  • 0 12 * * *: 表示每天中午 12 点运行;
  • renew: 只会检查快过期的证书并进行续期;
  • –quiet: 静默模式,只有出错时才输出信息。

部署 Certbot 的流程可以简化为:

安装:

 sudo apt install certbot python3-certbot-nginx

  • 获取并自动配置证书: sudo certbot –nginx
  • 测试自动续期: sudo certbot renew –dry-run

完成以上步骤,您的网站就已经成功实现了HTTPS自动化部署。

下面我们以Ubuntu系统nginx网站服务器环境,从Let‘s Encrypt申请免费证书为例,实践Certbot 的安装部署以后,通过命令实现Let‘s Encrypt免费90天证书申请安装:

#sudo certbot certonly –webroot -w /www/wwwroot/catmonkey.ichuanghui.cn -d catmonkey.ichuanghui.cn

sudo certbot certonly –webroot -w /www/wwwroot/catmonkey.ichuanghui.cn -d  catmonkey.ichuanghui. cn

Certbot部署/申请证书全面指南

证书成功申请并保存到本地,接下来调用即可,我们之前安装了宝塔面板,那么会发现证书已经自动填充,我们只需要启动即可:

Certbot部署/申请证书全面指南

浏览器访问:

Certbot部署/申请证书全面指南

那么通过实践,我们已经体验了完整的自动申请部署过程。不过也可以发现,这种模式面向的是满足服务器Shell完全管理权限条件并且具备一定技术能力的操作对象。如果这些条件不具备,还是需要联系证书服务商远程协助处理。

  • 广告合作

  • QQ群号:4114653

温馨提示:
1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com(#改为@)。 2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。

相关文章