[教程] 如何为 Nginx/Apache 配置免费 Let‘s Encrypt SSL 证书 (Certbot 详解)

在这个隐私和安全日益重要的时代,如果你运营的网站还在用明文的 HTTP 协议,那地址栏旁边那个“不安全”的警告,是不是让你看着有点心慌慌?用户看到这个可能也会“用脚投票”,扭头就走。而且,搜索引擎(比如 Google)也早就明确表示,HTTPS 是影响排名的一个因素。所以,给网站启用 HTTPS 加密,从“可选配置”变成“基础标配”,已经是大势所趋。

“可是,搞 HTTPS 不是要花钱买 SSL 证书吗?还得自己手动配置,听说挺复杂的,我技术不太行啊……” 如果你有这样的顾虑,那么我要给你介绍两位“大救星”:

  • Let's Encrypt: 这是一个由非营利组织 ISRG 发起的免费、开放、自动化的证书颁发机构 (CA)。它提供的 SSL/TLS 证书是完全免费的,并且被所有主流浏览器信任。简直是我等“穷站长”和开发者的福音!
  • Certbot: 这是由 EFF 开发和维护的一个客户端工具。它的作用就是自动化地与 Let's Encrypt CA 进行交互,帮你完成域名验证、证书获取、以及(最厉害的是)自动配置你的 Web 服务器(如 Nginx 或 Apache)来使用这个证书,甚至还能帮你设置好证书的自动续期!有了它,申请和管理 Let's Encrypt 证书的过程变得极其简单。

可以把 Let's Encrypt 想象成一个免费发放“网站安全身份证”的机构,而 Certbot 就是一个超级智能、任劳任怨的“代办机器人”,你只需要告诉它你的域名和服务器类型,它就能帮你跑前跑后,把申请、配置、续期这些繁琐事儿全自动搞定!

这篇教程,我就带你手把手地在你的 Linux 服务器上安装和使用 Certbot,分别为最常见的两大 Web 服务器——Nginx 和 Apache——配置免费的 Let's Encrypt SSL 证书。跟着步骤来,保证让你轻松给网站“上锁”!

准备工作:在开始之前你需要什么?

在召唤 Certbot 这个“机器人”之前,请确保你的服务器已经满足以下基本条件:

  • 一台运行 Linux 的服务器:本教程主要以 Ubuntu 22.04 为例进行演示,但 Certbot 也支持 Debian, CentOS, Fedora 等其他主流发行版(具体安装命令可能略有不同)。
  • 安装并运行了 Nginx 或 Apache:你需要已经安装好了 Nginx 或 Apache,并且已经配置了一个基本的虚拟主机(Server Block 或 VirtualHost),能够通过 HTTP (80 端口) 正常访问你的网站域名。
  • 一个注册好的域名:你需要拥有一个域名(比如 yourdomain.com),并且已经将这个域名(以及你想要一起加密的子域名,如 www.yourdomain.com)的 DNS 解析正确地指向了你这台服务器的公网 IP 地址
    • 检查方法: 在你本地电脑或其他地方 ping yourdomain.com,看看返回的 IP 地址是不是你服务器的 IP。
    • 极其重要: 这是 Let's Encrypt 验证你确实拥有该域名的关键一步(通常通过 HTTP-01 验证方式),如果 DNS 解析不对,Certbot 申请证书一定会失败!
  • 拥有服务器的 sudoroot 权限:因为安装软件和修改 Web 服务器配置需要管理员权限。
  • 可以通过 SSH 访问服务器:你需要能登录到服务器的命令行界面来执行命令。

确认以上条件都满足了?很好,我们可以开始召唤 Certbot 了!

第一步:安装 Certbot - 你的“证书申请机器人”

我们需要先把 Certbot 这个工具安装到服务器上。官方最推荐的安装方式是使用 Snap 包管理器,因为它能确保你使用的是最新版本的 Certbot,并且它自带所有依赖,能跨不同的 Linux 发行版保持一致性。

  1. 确保 snapd 已安装并更新: 大多数现代 Ubuntu 系统自带 snapd。对于其他系统,或者不确定的情况,可以执行相关安装和更新命令(具体命令请参考 Certbot 官网或你的发行版文档)。确保 snapd 核心是最新: [提示:请将以下代码片段复制并粘贴到 WordPress 的“代码”区块中] sudo snap install core; sudo snap refresh core
  2. 安装 Certbot: 确保没有旧的通过 apt/yum 安装的 Certbot 存在(如有,先卸载)。然后通过 Snap 安装: [提示:请将以下代码片段复制并粘贴到 WordPress 的“代码”区块中] sudo snap install --classic certbot
  3. 创建 Certbot 命令的符号链接: 为了方便直接使用 certbot 命令: [提示:请将以下代码片段复制并粘贴到 WordPress 的“代码”区块中] sudo ln -s /snap/bin/certbot /usr/bin/certbot

安装完成后,你可以运行 certbot --version 来检查是否安装成功以及查看版本号。

第二步:为 Nginx 获取并安装证书

如果你使用 Nginx,Certbot 的 Nginx 插件能帮你自动化大部分工作。

  1. 运行 Certbot 命令:yourdomain.comwww.yourdomain.com 替换成你自己的域名。用多个 -d 参数指定所有需要包含的域名。 [提示:请将以下代码片段复制并粘贴到 WordPress 的“代码”区块中] sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com --nginx 参数告诉 Certbot 使用 Nginx 插件。
  2. 根据提示进行交互: 首次运行会要求你输入邮箱(用于续期提醒)、同意服务条款、以及选择是否分享邮箱给 EFF。
  3. 等待验证和配置完成: Certbot 会自动进行 HTTP-01 验证(确保你的服务器 80 端口能被公网访问!),下载证书,并自动修改你的 Nginx 虚拟主机配置,添加 HTTPS 相关指令(listen 443 ssl http2, ssl_certificate, ssl_certificate_key 等)并设置 HTTP 到 HTTPS 的跳转。
  4. 查看结果: 成功后会有祝贺信息,告知证书位置和有效期。
  5. 验证 Nginx 配置并测试:
    • 检查配置语法:sudo nginx -t
    • 重载 Nginx(Certbot 通常会自动做):sudo systemctl reload nginx
    • 用浏览器访问 https://yourdomain.com,检查地址栏的安全锁标志。
    • (推荐)用 SSL Labs 工具全面检测 HTTPS 配置。

对于 Nginx 用户,过程通常非常顺畅。

第三步:为 Apache 获取并安装证书

如果你使用 Apache(服务名可能是 apache2httpd),过程类似,只需更换插件参数。

  1. 确保 Apache 的 mod_ssl 模块已启用: 检查并启用 SSL 模块,然后重启 Apache。 [提示:请将以下代码片段复制并粘贴到 WordPress 的“代码”区块中] # Debian/Ubuntu sudo a2enmod ssl sudo systemctl restart apache2 # CentOS/RHEL (通常通过安装 mod_ssl 包启用) # sudo yum install mod_ssl -y # sudo systemctl restart httpd
  2. 运行 Certbot 命令 (使用 Apache 插件): [提示:请将以下代码片段复制并粘贴到 WordPress 的“代码”区块中] sudo certbot --apache -d yourdomain.com -d www.yourdomain.com --apache 参数告诉 Certbot 使用 Apache 插件。
  3. 根据提示进行交互(同 Nginx)。
  4. 等待验证和配置完成: Certbot 会自动完成验证,下载证书,并修改 Apache 的虚拟主机配置文件,添加 SSLEngine on, SSLCertificateFile, SSLCertificateKeyFile 等指令,并设置 HTTP 到 HTTPS 跳转。
  5. 查看结果并测试:
    • 检查配置语法:sudo apachectl configtest (或 sudo httpd -t)。
    • 重载 Apache(Certbot 通常会自动做):sudo systemctl reload apache2 (或 httpd)。
    • 用浏览器访问 https://yourdomain.com,检查安全锁和证书。
    • 用 SSL Labs 进行测试。

使用 Apache 插件同样可以实现高度自动化。

第四步:理解证书文件与自动续期 - 让“通行证”永不过期

证书拿到手了,但事情还没完。你需要了解证书放在哪,以及如何让它一直有效。

  • 证书文件在哪里? Certbot 通常将证书相关文件存放在 /etc/letsencrypt/live/yourdomain.com/ 目录下(yourdomain.com 是你的主域名)。里面有几个关键文件(实际是符号链接):
    • cert.pem: 服务器证书。
    • chain.pem: 中间证书链。
    • fullchain.pem: 完整证书链(服务器配置通常用这个)。
    • privkey.pem: 证书私钥(极其重要,保密!)。
    一般无需手动操作这些文件。
  • 自动续期的“魔法”: Let's Encrypt 证书有效期只有 90 天。但别担心,Certbot 最强大的地方在于它能**自动续期**!安装 Certbot 时,它通常会自动设置一个系统计划任务(systemd timer 或 cron job),每天运行两次检查证书有效期。当证书还剩 30 天或更少时,它会自动尝试续期,成功后还会自动帮你重载 Web 服务器配置。全程自动化,你几乎不用管!
  • 如何测试自动续期是否正常工作? 你可以运行一个“模拟续期”命令来检查: [提示:请将以下代码片段复制并粘贴到 WordPress 的“代码”区块中] sudo certbot renew --dry-run 如果命令成功执行且没有报错,说明自动续期机制配置正常。
  • 检查续期任务本身: 想确认那个定时任务确实在?可以这样检查: [提示:请将以下代码片段复制并粘贴到 WordPress 的“代码”区块中] # 检查 systemd 定时器 sudo systemctl list-timers | grep certbot # 或者检查 cron 任务 # sudo ls -l /etc/cron.d/certbot

只要你首次配置成功,并且 Certbot 能正常运行,你的证书就能持续自动续期,HTTPS 永不掉线。

(可选) 获取通配符证书 (*.yourdomain.com) - 进阶操作

有时你希望一张证书能保护主域名及其下所有一级子域名(如 blog., shop., api. 等)。这就是通配符证书。

Let's Encrypt 支持免费通配符证书,但它**只能通过 DNS-01 方式验证**,你需要证明你对域名的 DNS 解析有控制权。

如何获取?

  1. 手动模式 (不推荐,无法自动续期): [提示:请将以下代码片段复制并粘贴到 WordPress 的“代码”区块中] sudo certbot certonly --manual --preferred-challenges=dns -d yourdomain.com -d '*.yourdomain.com' --server https://acme-v02.api.letsencrypt.org/directory 执行后,Certbot 会要求你手动去你的 DNS 服务商那里添加指定的 TXT 记录。验证过程需要人工干预,且无法自动续期。
  2. 使用 DNS 插件 (推荐,可自动续期): Certbot 支持多种 DNS 服务商插件(如 Cloudflare, Route53, GoDaddy, 阿里云 DNS, DNSPod 等)。你需要先安装对应的插件,并配置好该 DNS 服务商的 API 访问凭证。 [提示:请将以下代码片段复制并粘贴到 WordPress 的“代码”区块中] # 示例:使用 Cloudflare 插件 (需要先安装 certbot-dns-cloudflare 插件并配置凭证文件) sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials /etc/letsencrypt/cloudflare.ini -d yourdomain.com -d '*.yourdomain.com' --server https://acme-v02.api.letsencrypt.org/directory 这种方式可以实现通配符证书的全自动获取和续期。配置相对复杂,请参考 Certbot 官方文档和你 DNS 服务商插件的具体说明。

获取通配符证书后,你还需要手动配置 Nginx/Apache 来使用它。

结论:拥抱免费 HTTPS,让安全成为标配

怎么样?是不是发现给网站加上那把象征安全的“小锁头”,其实并没有想象中那么复杂和昂贵?

有了 Let's Encrypt 提供的免费证书,再加上 Certbot 这个得力的“自动化助手”,无论是 Nginx 还是 Apache 用户,都可以非常轻松地为自己的网站启用 HTTPS 加密,并且享受自动续期的便利。这无疑是所有网站管理员和开发者的巨大福音。

现在,你已经掌握了使用 Certbot 为你的 Web 服务器配置 Let's Encrypt 证书的核心步骤。不要再犹豫了,赶紧行动起来,让你和你的用户都能享受更安全的网络浏览体验吧!让 HTTPS 成为我们每一个网站的基础配置,这在 2025 年,理应如此。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值