Let's Encrypt 免费HTTPS证书教程

0元搞定HTTPS,全球3亿+网站的首选方案

免费 · 自动化 · 安全

🔐 什么是 Let's Encrypt?

Let's Encrypt 是一个免费、自动化、开放的证书颁发机构(CA),由互联网安全研究组(ISRG)运营。它的目标是让所有网站都能轻松使用 HTTPS 加密连接。

🌍 全球超过 3亿+ 网站使用 Let's Encrypt 证书,是目前最受欢迎的免费 SSL/TLS 证书方案!

Let's Encrypt 由 Mozilla、Cisco、Akamai、EFF、Chrome 等知名组织和公司共同发起,是一个非营利性组织,致力于让互联网变得更安全。

核心特性

💰
完全免费

不收取任何费用,无隐藏消费

🤖
自动化管理

ACME协议自动申请、部署和续期

🌐
浏览器信任

所有主流浏览器100%信任

🔄
90天有效期

支持自动续期,更安全

📜
开放透明

完全开源,可审计验证

快速签发

几分钟内即可获取证书

⚙️ 工作原理

Let's Encrypt 使用 ACME(自动证书管理环境) 协议来自动化证书的申请和管理过程:

1

域名验证

ACME 客户端(如 Certbot)向 Let's Encrypt 发起证书申请,并证明你对域名的控制权。

2

完成挑战

Let's Encrypt 会发起"挑战"来验证域名所有权,常见方式有:

  • HTTP-01 验证:在网站根目录放置特定文件
  • DNS-01 验证:添加一条 DNS TXT 记录
3

签发证书

验证通过后,Let's Encrypt 从多个网络位置确认验证结果,然后签发 SSL/TLS 证书。

4

自动部署

Certbot 自动将证书部署到 Web 服务器(Nginx/Apache),并配置 HTTPS 重定向。

📋 环境要求

项目 要求
服务器 Linux 服务器(推荐 Ubuntu/CentOS/Debian)
域名 已解析到服务器 IP 的域名
端口 80 端口和 443 端口必须对外开放
Web 服务器 Nginx 或 Apache(推荐 Nginx)
权限 root 或 sudo 权限

⚠️ 注意:申请证书前,请确保域名已正确解析到服务器 IP,否则验证会失败!

📦 安装 Certbot

Certbot 是 Let's Encrypt 官方推荐的 ACME 客户端工具,支持自动化获取和部署证书。

Ubuntu/Debian 系统

# 更新软件包列表
sudo apt update

# 安装 Certbot 和 Nginx 插件
sudo apt install -y certbot python3-certbot-nginx

CentOS/RHEL 系统

# 安装 EPEL 仓库
sudo yum install -y epel-release

# 安装 Certbot 和 Nginx 插件
sudo yum install -y certbot python3-certbot-nginx

使用 Snap 安装(通用方法)

# 安装 snapd
sudo apt install -y snapd

# 安装 Certbot
sudo snap install --classic certbot

# 创建符号链接
sudo ln -s /snap/bin/certbot /usr/bin/certbot

🎯 获取 SSL 证书

方式一:Nginx 自动配置(推荐)

# 自动获取证书并配置 Nginx
sudo certbot --nginx -d example.com -d www.example.com

Certbot 会自动:

方式二:仅获取证书(手动配置)

# 仅获取证书,不修改 Nginx 配置
sudo certbot certonly --nginx -d example.com -d www.example.com

方式三:DNS 验证(适用于通配符证书)

# 通配符证书需要 DNS 验证
sudo certbot certonly --manual --preferred-challenges dns -d "*.example.com" -d example.com

✅ 证书获取成功后,文件保存在 /etc/letsencrypt/live/example.com/ 目录下

文件 说明
fullchain.pem 完整证书链(证书 + 中间证书)
privkey.pem 私钥文件
cert.pem 域名证书
chain.pem 中间证书

🔄 自动续期配置

Let's Encrypt 证书有效期为 90 天,建议配置自动续期:

测试续期

# 模拟续期测试(不会实际续期)
sudo certbot renew --dry-run

配置定时任务

# 编辑定时任务
sudo crontab -e

# 添加以下行(每天凌晨2点检查续期)
0 2 * * * /usr/bin/certbot renew --quiet --post-hook "systemctl reload nginx"

💡 Certbot 只会在证书到期前 30 天内才会实际续期,每天运行一次完全没问题。

🌐 Nginx HTTPS 配置示例

如果选择手动配置,参考以下 Nginx 配置:

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

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

    # SSL 证书路径
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    # SSL 安全配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    # HSTS 安全头
    add_header Strict-Transport-Security "max-age=31536000" always;

    location / {
        root /var/www/html;
        index index.html;
    }
}

常见问题

Q: Let's Encrypt 证书安全吗?

安全!Let's Encrypt 使用与付费证书相同的加密标准,所有主流浏览器都信任它。Mozilla、Google、Cisco 等大公司都是其赞助商。

Q: 为什么有效期只有 90 天?

短有效期是故意设计的:一是降低私钥泄露的影响范围;二是鼓励自动化管理,配合自动续期后完全无感。

Q: 支持通配符证书吗?

支持!使用 DNS-01 验证方式即可申请通配符证书(如 *.example.com)。

Q: 有速率限制吗?

有。每个注册域名每周最多 50 个证书,每个 IP 每 3 小时最多 10 个帐户。正常使用完全够用。

Q: 可以用在商业项目吗?

完全可以!Let's Encrypt 没有任何使用限制,个人项目和商业项目都可以免费使用。

Q: 和付费证书有什么区别?

加密强度完全相同。付费证书主要区别在于:支持组织验证(OV)/扩展验证(EV)、提供保险赔付、有专业技术支持。对于大多数网站,Let's Encrypt 完全够用。

💬 加入交流群

和志同道合的朋友一起交流学习

抖音交流群二维码

抖音扫码加入