让你的网站从 HTTP 升级到 HTTPS,零成本,全自动,三分钟搞定。


一、为什么你需要 Let’s Encrypt?

2026 年了,如果你的网站还在跑 HTTP,浏览器地址栏那个刺眼的 “不安全” 警告,正在劝退你的用户。

Let’s Encrypt 是由互联网安全研究小组(ISRG)提供的免费、自动化、开放的证书颁发机构(CA)。它的核心优势非常直接:

特性 说明
💰 完全免费 无需支付任何费用
⏱ 有效期 90 天 支持无限次续期
🤖 全程自动化 申请、安装、续期一条龙
🌐 广泛兼容 所有主流浏览器和操作系统均信任

一句话:不花钱,就能让网站开启 HTTPS 加密。


二、环境准备(动手前必看)

在开始之前,确认以下条件已满足:

  • ✅ 一个有效域名,且 DNS A 记录已指向服务器公网 IP
  • ✅ 服务器拥有 root 或 sudo 权限
  • 80 和 443 端口已开放,能从公网访问
  • ✅ 系统时间准确(date 命令检查,时间不准会导致验证失败)
  • ✅ 已安装 Nginx 或 Apache,且能通过 HTTP 正常访问网站

⚠️ 如果你用的是防火墙(ufw/iptables),记得先放行端口:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

三、安装 Certbot(官方推荐工具)

Certbot 是 Let’s Encrypt 官方推荐的 ACME 协议客户端,支持自动化证书管理。

Ubuntu / Debian

sudo apt update
sudo apt install -y certbot python3-certbot-nginx

CentOS / RHEL 8+

sudo dnf install -y epel-release
sudo dnf install -y certbot python3-certbot-nginx

安装完成后,建立符号链接(便于直接调用):

sudo ln -s /usr/bin/certbot /usr/bin/certbot

四、申请并安装证书(核心步骤)

方式一:一键自动配置(最简单,强烈推荐)

如果你用的是 Nginx,一条命令搞定一切:

sudo certbot --nginx -d example.com -d www.example.com

这条命令做了什么?

  1. 自动申请 example.comwww.example.com 的 SAN 证书
  2. 自动修改 Nginx 配置,启用 HTTPS
  3. 自动设置 HTTP → HTTPS 301 重定向

执行后按提示输入邮箱、同意服务条款即可,全程不用手动改任何配置文件。


方式二:Webroot 模式(适合已有 Nginx 服务在运行)

如果不想暂停 Nginx,用 webroot 模式:

sudo certbot certonly --webroot \
  -w /usr/share/nginx/html \
  -d example.com -d www.example.com \
  -m your@email.com --agree-tos
参数 含义
certonly 仅申请证书,不自动配置服务器
--webroot -w 指定网站根目录,Let’s Encrypt 会在此验证域名所有权
-d 申请的域名,可多次添加实现多域名证书
--agree-tos 自动同意服务条款

证书生成后,默认存放在:

/etc/letsencrypt/live/example.com/
├── fullchain.pem   # 证书链(包含中间证书,必须用这个)
└── privkey.pem     # 私钥

方式三:Standalone 模式(需暂停 Nginx)

sudo systemctl stop nginx
sudo certbot certonly --standalone -d example.com
sudo systemctl start nginx

五、配置 Nginx 启用 HTTPS

如果你用的是 方式二或方式三(手动模式),需要自己修改 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;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    location / {
        root /usr/share/nginx/html;
        index index.html;
    }
}

# HTTP 重定向到 HTTPS
server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

验证配置并重载:

sudo nginx -t
sudo nginx -s reload

六、通配符证书(*.example.com)

如果你需要一张证书覆盖所有子域名(api.example.commail.example.com 等),需要用 DNS 验证

# 安装 DNS 插件(以 Cloudflare 为例)
sudo apt install python3-certbot-dns-cloudflare

# 申请通配符证书
sudo certbot certonly \
  --dns-cloudflare \
  --dns-cloudflare-credentials ~/.secrets/cloudflare.ini \
  -d "*.example.com" \
  -d example.com

~/.secrets/cloudflare.ini 内容:

dns_cloudflare_email = your@email.com
dns_cloudflare_api_key = your_api_key

七、自动续期(必须配置!)

Let’s Encrypt 证书只有 90 天有效期,不续期就会失效。好消息是 Certbot 自带续期功能。

测试续期是否正常

sudo certbot renew --dry-run

如果输出 Congratulations, all renewals succeeded,说明续期配置正确。

配置定时任务

Certbot 安装时通常会自动添加 cron 任务。如果没有,手动添加:

sudo crontab -e

加入:

0 3 * * 1,15 /usr/bin/certbot renew --quiet --deploy-hook "nginx -s reload"

每月 1 日和 15 日凌晨 3 点自动检查并续期,续期成功后自动重载 Nginx。


八、宝塔面板用户(零命令行方案)

如果你用的是宝塔面板,操作更简单:

  1. 登录宝塔面板 → 点击左侧 “网站”
  2. 选择目标网站 → 点击 “设置” → 切换到 “SSL” 选项卡
  3. 点击 “Let’s Encrypt” → 选择域名 → 点击 “申请”
  4. 申请成功后,开启 “强制 HTTPS”

全程鼠标操作,不用碰命令行。


九、常见问题排查

问题 原因 解决方案
failed to connect to port 80 80 端口被占用 暂停 Nginx,或改用 --webroot 模式
浏览器提示"不安全" 证书链不完整 确保用 fullchain.pem 而非 cert.pem
续期失败 cron 未执行或权限不足 检查 sudo crontab -l,确认 certbot 路径正确
DNS 验证失败 TXT 记录未生效 等待 DNS 传播(dig _acme-challenge.example.com 验证)

十、总结

步骤 命令 耗时
安装 Certbot apt install certbot python3-certbot-nginx 30 秒
申请证书 certbot --nginx -d example.com 1 分钟
配置续期 crontab -e 添加定时任务 10 秒
总计 不到 3 分钟

Let’s Encrypt 的核心理念就是:消除 HTTPS 的成本门槛,让每个网站都能默认加密。

2026 年了,别再让你的用户看到那个红色的"不安全"了。现在就去给你的网站加上那把小锁 🔒。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐