SSL 免费证书安装(Let‘s Encrypt)
让你的网站从 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
这条命令做了什么?
- 自动申请
example.com和www.example.com的 SAN 证书 - 自动修改 Nginx 配置,启用 HTTPS
- 自动设置 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.com、mail.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。
八、宝塔面板用户(零命令行方案)
如果你用的是宝塔面板,操作更简单:
- 登录宝塔面板 → 点击左侧 “网站”
- 选择目标网站 → 点击 “设置” → 切换到 “SSL” 选项卡
- 点击 “Let’s Encrypt” → 选择域名 → 点击 “申请”
- 申请成功后,开启 “强制 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 年了,别再让你的用户看到那个红色的"不安全"了。现在就去给你的网站加上那把小锁 🔒。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐
所有评论(0)