> 技术文档 > 使用 Certbot 获取免费 HTTPS 证书:从零开始的 HTTPS 配置指南

使用 Certbot 获取免费 HTTPS 证书:从零开始的 HTTPS 配置指南

在如今的互联网世界,HTTPS 已成为网站安全的标配,不仅能保护用户数据,还能提升搜索引擎排名和用户信任。而通过 Certbot,我们可以轻松获取由 Let’s Encrypt 提供的免费 HTTPS 证书。本文将带你从零开始,详细讲解如何使用 Certbot 配置 HTTPS,适合新手和有一定经验的开发者。

使用 Certbot 获取免费 HTTPS 证书:从零开始的 HTTPS 配置指南

为什么选择 Certbot 和 Let’s Encrypt?

Let’s Encrypt 是一个由非营利组织 ISRG 提供的免费证书颁发机构,Certbot 则是其官方推荐的自动化工具。它们的核心优势包括:

  • 免费:无需支付证书费用。
  • 自动化:Certbot 提供自动获取和续期证书的功能。
  • 开源:社区支持广泛,兼容多种服务器环境。
  • 快速:几分钟即可完成配置。

无论你是运行一个个人博客还是小型商业网站,Certbot 都能帮你快速实现 HTTPS。

前置条件

在开始之前,请确保你已准备好以下内容:

  1. 一个域名:已解析到你的服务器 IP。
  2. 服务器环境:支持 Linux(如 Ubuntu、CentOS)或类似系统。
  3. Web 服务器:已安装 Nginx 或 Apache。
  4. 管理员权限:需要 root 或 sudo 权限来执行命令。

本文以 Ubuntu 20.04 和 Nginx 为例,其他环境配置类似,可参考 Certbot 官网。

配置流程

下面是使用 Certbot 获取和配置 HTTPS 证书的完整流程。整个过程可以分为五个步骤:

#mermaid-svg-vctKBmy9ojGbybn0 {font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-vctKBmy9ojGbybn0 .error-icon{fill:#552222;}#mermaid-svg-vctKBmy9ojGbybn0 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-vctKBmy9ojGbybn0 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-vctKBmy9ojGbybn0 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-vctKBmy9ojGbybn0 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-vctKBmy9ojGbybn0 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-vctKBmy9ojGbybn0 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-vctKBmy9ojGbybn0 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-vctKBmy9ojGbybn0 .marker.cross{stroke:#333333;}#mermaid-svg-vctKBmy9ojGbybn0 svg{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-vctKBmy9ojGbybn0 .label{font-family:\"trebuchet ms\",verdana,arial,sans-serif;color:#333;}#mermaid-svg-vctKBmy9ojGbybn0 .cluster-label text{fill:#333;}#mermaid-svg-vctKBmy9ojGbybn0 .cluster-label span{color:#333;}#mermaid-svg-vctKBmy9ojGbybn0 .label text,#mermaid-svg-vctKBmy9ojGbybn0 span{fill:#333;color:#333;}#mermaid-svg-vctKBmy9ojGbybn0 .node rect,#mermaid-svg-vctKBmy9ojGbybn0 .node circle,#mermaid-svg-vctKBmy9ojGbybn0 .node ellipse,#mermaid-svg-vctKBmy9ojGbybn0 .node polygon,#mermaid-svg-vctKBmy9ojGbybn0 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-vctKBmy9ojGbybn0 .node .label{text-align:center;}#mermaid-svg-vctKBmy9ojGbybn0 .node.clickable{cursor:pointer;}#mermaid-svg-vctKBmy9ojGbybn0 .arrowheadPath{fill:#333333;}#mermaid-svg-vctKBmy9ojGbybn0 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-vctKBmy9ojGbybn0 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-vctKBmy9ojGbybn0 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-vctKBmy9ojGbybn0 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-vctKBmy9ojGbybn0 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-vctKBmy9ojGbybn0 .cluster text{fill:#333;}#mermaid-svg-vctKBmy9ojGbybn0 .cluster span{color:#333;}#mermaid-svg-vctKBmy9ojGbybn0 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-vctKBmy9ojGbybn0 :root{--mermaid-font-family:\"trebuchet ms\",verdana,arial,sans-serif;} 准备服务器和域名 安装 Certbot 获取 HTTPS 证书 配置 Web 服务器 设置自动续期

步骤 1:安装 Certbot

Certbot 的安装非常简单,推荐使用 snap 安装方式,因为它能确保获取最新版本。

在 Ubuntu 系统上,运行以下命令:

sudo snap install core; sudo snap refresh coresudo snap install --classic certbotsudo ln -s /snap/bin/certbot /usr/bin/certbot

验证安装是否成功:

certbot --version

输出类似 certbot 2.x.x 说明安装完成。

步骤 2:获取 HTTPS 证书

Certbot 支持多种验证方式,这里我们使用 --nginx 插件(适用于 Nginx 用户),它会自动验证域名并修改 Nginx 配置。如果你是 Apache 用户,可以替换为 --apache

运行以下命令:

sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
  • -d 指定需要 HTTPS 的域名,可以多次使用以支持多个子域名。
  • Certbot 会通过 HTTP-01 挑战验证域名所有权,确保你的域名指向当前服务器。

执行过程中,Certbot 会提示你输入邮箱(用于续期通知)和同意服务条款。完成后,证书将存储在 /etc/letsencrypt/live/yourdomain.com/ 目录下。

步骤 3:配置 Web 服务器

如果你使用 --nginx 插件,Certbot 会自动修改 Nginx 配置文件,添加 HTTPS 支持。你可以检查配置文件(通常在 /etc/nginx/sites-available/):

server { listen 80; server_name yourdomain.com www.yourdomain.com; return 301 https://$host$request_uri;}server { listen 443 ssl; server_name yourdomain.com www.yourdomain.com; ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem; # 其他配置...}

如果 Certbot 未自动配置,你需要手动添加上述 HTTPS server 块,并重启 Nginx:

sudo nginx -tsudo systemctl reload nginx

步骤 4:测试 HTTPS

在浏览器中访问 https://yourdomain.com,检查是否加载正常。你也可以使用在线工具(如 SSL Labs 的 SSL Server Test)检查证书状态。

步骤 5:设置自动续期

Let’s Encrypt 证书有效期为 90 天,Certbot 提供自动续期功能。测试自动续期是否正常工作:

sudo certbot renew --dry-run

如果没有报错,说明续期配置正常。Certbot 默认会通过 cron 或 systemd 定时任务自动续期。你可以查看 systemd 定时任务:

sudo systemctl status snap.certbot.renew.service

确保服务是启用状态,通常 Certbot 会每天尝试续期。

常见问题与解决方案

  1. “DNS 解析错误”怎么办?

    确保域名已正确解析到服务器 IP。使用 dig yourdomain.comnslookup 检查 DNS 状态。

  2. Nginx 配置未自动更新?

    手动检查 /etc/letsencrypt/live/yourdomain.com/ 下的证书路径,并更新 Nginx 配置文件。

  3. 续期失败?

    检查服务器是否允许 80 端口访问,Let’s Encrypt 需要通过 HTTP 验证续期。

  4. 多域名支持?

    在获取证书时,添加多个 -d 参数,如 -d yourdomain.com -d www.yourdomain.com -d api.yourdomain.com

小贴士

  • 备份证书:定期备份 /etc/letsencrypt/ 目录,避免意外丢失。
  • 强制 HTTPS:在 Nginx 配置中添加 301 重定向,确保所有 HTTP 流量跳转到 HTTPS。
  • 监控续期:可以通过邮件通知或脚本监控续期状态。

总结

通过 Certbot 和 Let’s Encrypt,任何人都能轻松为网站启用 HTTPS。整个过程简单高效,从安装到配置只需几分钟,且自动续期功能让维护变得无忧。希望这篇教程能帮你快速上手 HTTPS 配置,让你的网站更安全、更专业!

如果有任何问题,欢迎在评论区交流,或者访问 Certbot 官网 获取更多帮助。

使用 Certbot 获取免费 HTTPS 证书:从零开始的 HTTPS 配置指南

在如今的互联网世界,HTTPS 已成为网站安全的标配,不仅能保护用户数据,还能提升搜索引擎排名和用户信任。而通过 Certbot,我们可以轻松获取由 Let’s Encrypt 提供的免费 HTTPS 证书。本文将带你从零开始,详细讲解如何使用 Certbot 配置 HTTPS,适合新手和有一定经验的开发者。

为什么选择 Certbot 和 Let’s Encrypt?

Let’s Encrypt 是一个由非营利组织 ISRG 提供的免费证书颁发机构,Certbot 则是其官方推荐的自动化工具。它们的核心优势包括:

  • 免费:无需支付证书费用。
  • 自动化:Certbot 提供自动获取和续期证书的功能。
  • 开源:社区支持广泛,兼容多种服务器环境。
  • 快速:几分钟即可完成配置。

无论你是运行一个个人博客还是小型商业网站,Certbot 都能帮你快速实现 HTTPS。

前置条件

在开始之前,请确保你已准备好以下内容:

  1. 一个域名:已解析到你的服务器 IP。
  2. 服务器环境:支持 Linux(如 Ubuntu、CentOS)或类似系统。
  3. Web 服务器:已安装 Nginx 或 Apache。
  4. 管理员权限:需要 root 或 sudo 权限来执行命令。

本文以 Ubuntu 20.04 和 Nginx 为例,其他环境配置类似,可参考 Certbot 官网。

配置流程

下面是使用 Certbot 获取和配置 HTTPS 证书的完整流程。整个过程可以分为五个步骤:

#mermaid-svg-slsGreDwire15It5 {font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-slsGreDwire15It5 .error-icon{fill:#552222;}#mermaid-svg-slsGreDwire15It5 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-slsGreDwire15It5 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-slsGreDwire15It5 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-slsGreDwire15It5 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-slsGreDwire15It5 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-slsGreDwire15It5 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-slsGreDwire15It5 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-slsGreDwire15It5 .marker.cross{stroke:#333333;}#mermaid-svg-slsGreDwire15It5 svg{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-slsGreDwire15It5 .label{font-family:\"trebuchet ms\",verdana,arial,sans-serif;color:#333;}#mermaid-svg-slsGreDwire15It5 .cluster-label text{fill:#333;}#mermaid-svg-slsGreDwire15It5 .cluster-label span{color:#333;}#mermaid-svg-slsGreDwire15It5 .label text,#mermaid-svg-slsGreDwire15It5 span{fill:#333;color:#333;}#mermaid-svg-slsGreDwire15It5 .node rect,#mermaid-svg-slsGreDwire15It5 .node circle,#mermaid-svg-slsGreDwire15It5 .node ellipse,#mermaid-svg-slsGreDwire15It5 .node polygon,#mermaid-svg-slsGreDwire15It5 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-slsGreDwire15It5 .node .label{text-align:center;}#mermaid-svg-slsGreDwire15It5 .node.clickable{cursor:pointer;}#mermaid-svg-slsGreDwire15It5 .arrowheadPath{fill:#333333;}#mermaid-svg-slsGreDwire15It5 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-slsGreDwire15It5 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-slsGreDwire15It5 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-slsGreDwire15It5 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-slsGreDwire15It5 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-slsGreDwire15It5 .cluster text{fill:#333;}#mermaid-svg-slsGreDwire15It5 .cluster span{color:#333;}#mermaid-svg-slsGreDwire15It5 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-slsGreDwire15It5 :root{--mermaid-font-family:\"trebuchet ms\",verdana,arial,sans-serif;} 准备服务器和域名 安装 Certbot 获取 HTTPS 证书 配置 Web 服务器 设置自动续期

步骤 1:安装 Certbot

Certbot 的安装非常简单,推荐使用 snap 安装方式,因为它能确保获取最新版本。

在 Ubuntu 系统上,运行以下命令:

sudo snap install core; sudo snap refresh coresudo snap install --classic certbotsudo ln -s /snap/bin/certbot /usr/bin/certbot

验证安装是否成功:

certbot --version

输出类似 certbot 2.x.x 说明安装完成。

步骤 2:获取 HTTPS 证书

Certbot 支持多种验证方式,这里我们使用 --nginx 插件(适用于 Nginx 用户),它会自动验证域名并修改 Nginx 配置。如果你是 Apache 用户,可以替换为 --apache

运行以下命令:

sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
  • -d 指定需要 HTTPS 的域名,可以多次使用以支持多个子域名。
  • Certbot 会通过 HTTP-01 挑战验证域名所有权,确保你的域名指向当前服务器。

执行过程中,Certbot 会提示你输入邮箱(用于续期通知)和同意服务条款。完成后,证书将存储在 /etc/letsencrypt/live/yourdomain.com/ 目录下。

步骤 3:配置 Web 服务器

如果你使用 --nginx 插件,Certbot 会自动修改 Nginx 配置文件,添加 HTTPS 支持。你可以检查配置文件(通常在 /etc/nginx/sites-available/):

server { listen 80; server_name yourdomain.com www.yourdomain.com; return 301 https://$host$request_uri;}server { listen 443 ssl; server_name yourdomain.com www.yourdomain.com; ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem; # 其他配置...}

如果 Certbot 未自动配置,你需要手动添加上述 HTTPS server 块,并重启 Nginx:

sudo nginx -tsudo systemctl reload nginx

步骤 4:测试 HTTPS

在浏览器中访问 https://yourdomain.com,检查是否加载正常。你也可以使用在线工具(如 SSL Labs 的 SSL Server Test)检查证书状态。

步骤 5:设置自动续期

Let’s Encrypt 证书有效期为 90 天,Certbot 提供自动续期功能。测试自动续期是否正常工作:

sudo certbot renew --dry-run

如果没有报错,说明续期配置正常。Certbot 默认会通过 cron 或 systemd 定时任务自动续期。你可以查看 systemd 定时任务:

sudo systemctl status snap.certbot.renew.service

确保服务是启用状态,通常 Certbot 会每天尝试续期。

常见问题与解决方案

  1. “DNS 解析错误”怎么办?

    确保域名已正确解析到服务器 IP。使用 dig yourdomain.comnslookup 检查 DNS 状态。

  2. Nginx 配置未自动更新?

    手动检查 /etc/letsencrypt/live/yourdomain.com/ 下的证书路径,并更新 Nginx 配置文件。

  3. 续期失败?

    检查服务器是否允许 80 端口访问,Let’s Encrypt 需要通过 HTTP 验证续期。

  4. 多域名支持?

    在获取证书时,添加多个 -d 参数,如 -d yourdomain.com -d www.yourdomain.com -d api.yourdomain.com

小贴士

  • 备份证书:定期备份 /etc/letsencrypt/ 目录,避免意外丢失。
  • 强制 HTTPS:在 Nginx 配置中添加 301 重定向,确保所有 HTTP 流量跳转到 HTTPS。
  • 监控续期:可以通过邮件通知或脚本监控续期状态。

总结

通过 Certbot 和 Let’s Encrypt,任何人都能轻松为网站启用 HTTPS。整个过程简单高效,从安装到配置只需几分钟,且自动续期功能让维护变得无忧。希望这篇教程能帮你快速上手 HTTPS 配置,让你的网站更安全、更专业!

如果有任何问题,欢迎在评论区交流,或者访问 Certbot 官网 获取更多帮助。


📌 开发者必备工具:
在 Tool.tushuoit.com 发现免费在线工具集!推荐 App Store 截图生成器、应用图标生成器 、在线图片压缩和 Chrome插件-强制开启复制-护眼模式-网页乱码设置编码,让您的开发和运营工作更轻松高效。
乖猫记账,乖猫记账界面美观,聊天式记账方式新颖,文本或语音输入记账快捷方便。自动分类功能和微信绑定实用,统计分析功能有助于用户了解收支情况。