1
输入域名
2
选择验证方式
3
完成验证
4
选择证书格式
5
下载证书

步骤 1:输入您的域名

请输入需要申请 SSL 证书的域名。支持单域名和通配符域名(如 *.example.com)。

支持格式:example.com、www.example.com、*.example.com

测试建议:首次使用请选择 "Let's Encrypt Staging",避免触发速率限制
⚠️ 生产环境每个域名每周最多申请5次,超过限制需等待7天

关于 Let's Encrypt

  • 完全免费,自动化颁发
  • 受所有主流浏览器信任
  • 证书有效期 90 天,支持自动续期
  • 支持单域名、多域名和通配符证书

📋 Staging 环境说明

Staging 环境(测试环境)用途:

  • 学习和测试:无速率限制,可以无限次测试
  • 流程完全相同:与生产环境的申请流程100%一致
  • 证书不受信任:浏览器会显示"不安全"(这是正常的)
  • 切换简单:测试成功后,切换到生产环境即可获得真实证书

💡 首次使用强烈建议先用 Staging 环境练习,避免触发速率限制

⚠️ ACME 协议重要特性

每次申请/续期证书时,验证数据都会改变:

  • HTTP-01 验证:文件名和内容每次不同(CA 服务器随机生成 token)
  • DNS-01 验证:TXT 记录值每次不同(基于随机 token 计算)
  • 原因:这是 ACME 协议的安全设计,无法绕过
  • 建议:使用 Certbot 或 acme.sh 等工具实现自动续期

💡 本工具适合首次申请或学习 ACME 流程,生产环境建议使用自动化工具

方式 A:Web 服务器验证(HTTP-01)

通过在您的 Web 服务器上放置验证文件来证明域名所有权。适用于有公网可访问 Web 服务器的场景。

配置完成后一定要使其生效比如【nginx -s reload】重新加载nginx

⚠️ ACME 协议重要特性:

  • 每次申请/续期证书时,验证文件名和内容都会改变!
  • 原因:Let's Encrypt 每次生成不同的随机 token
  • 这是 ACME 协议的安全设计,无法绕过
  • 验证数据无法提前准备或长期保留使用

操作步骤:

  1. 创建验证文件目录:
    mkdir -p /var/www/html/.well-known/acme-challenge
  2. 创建验证文件:

    文件名:xxxxxxxxxxxx

    文件内容:xxxxxxxxxxxx.yyyyyyyyyyyy

    快捷命令(复制粘贴直接执行):

    echo "验证内容" > /var/www/html/.well-known/acme-challenge/验证文件名

    设置文件权限:

    # 设置文件权限(确保 nginx/apache 用户可以读取)
    chmod 644 /var/www/html/.well-known/acme-challenge/*
    chown -R nginx:nginx /var/www/html/.well-known/
    
    # 如果是 Apache,使用:
    # chown -R www-data:www-data /var/www/html/.well-known/
  3. 配置 Nginx(示例):
    server {
        listen 80;
        server_name example.com;
    
        location /.well-known/acme-challenge/ {
            root /var/www/html;
            try_files $uri =404;
        }
    }
  4. 配置 Apache(示例):
    <VirtualHost *:80>
        ServerName example.com
        DocumentRoot /var/www/html
    
        <Directory "/var/www/html/.well-known/acme-challenge">
            Require all granted
        </Directory>
    </VirtualHost>
  5. 配置 Tomcat(示例):

    .well-known 目录放在 webapp 根目录下,确保可以通过 HTTP 访问。

  6. 重启 Web 服务器:
    # Nginx
    sudo systemctl reload nginx
    
    # Apache
    sudo systemctl reload apache2
    
    # Tomcat
    # 重启 Tomcat 服务
  7. 验证配置是否正确(重要步骤):
    # 1. 检查 Nginx 配置语法
    nginx -t
    
    # 2. 如果语法正确,重新加载配置
    nginx -s reload
    
    # 3. 确认验证文件存在且可读
    ls -la /var/www/html/.well-known/acme-challenge/验证文件名
    
    # 4. 测试 HTTP 访问(应该返回文件内容,不应该是 301/302 重定向)
    curl -v http://example.com/.well-known/acme-challenge/验证文件名
    
    # 预期结果:
    # < HTTP/1.1 200 OK
    # 验证文件内容...
    #
    # ⚠️ 如果看到 301/302 或 https://,说明被重定向了,需要修改 Nginx 配置
    # ⚠️ 如果返回 404,检查 root 路径是否正确
    # ⚠️ 如果返回 403,检查文件权限
    
    # 5. 如果遇到问题,查看 Nginx 错误日志
    tail -f /var/log/nginx/error.log

注意事项:

  • 确保域名已正确解析到服务器 IP
  • 确保防火墙开放 80 端口
  • 验证文件需要通过 HTTP(非 HTTPS)访问
  • 验证文件无需扩展名
  • 每次申请/续期:验证文件名和内容每次都不同,需要重新创建验证文件
  • 多域名场景:多个域名可以共用同一个 /.well-known/acme-challenge/ 目录,因为每个域名的验证文件名都是唯一的随机字符串,不会冲突
  • 目录权限:确保 nginx/apache 用户对 /.well-known/acme-challenge/ 目录有读取权限 chmod -R 755 /.well-known/acme-challenge/
  • 自动化建议:推荐使用 Certbot 或 acme.sh 等工具实现自动续期,避免手动操作

方式 B:DNS 解析验证(DNS-01)

通过在域名的 DNS 解析中添加指定的 TXT 记录来证明域名所有权。适用于无法配置 Web 服务器或需要通配符证书的场景。

操作步骤:

  1. 登录域名管理控制台:

    访问您的域名注册商或 DNS 服务商控制台(如阿里云、腾讯云、CloudFlare 等)

  2. 添加 TXT 记录:
    记录类型: TXT
    主机记录: _acme-challenge
    记录值: xxxxxxxxxxxxxxxxxxxxxxxxxxxx
    TTL: 600(10分钟,或更短)
  3. 完整记录示例:
    _acme-challenge.example.com  IN  TXT  "验证字符串"

    💡 注意:主机记录需要填写完整的 _acme-challenge.example.com
    有些DNS服务商可能只需要填写 _acme-challenge(自动补全域名),请根据实际情况调整。

  4. 等待 DNS 解析生效:

    通常需要 1-10 分钟,具体时间取决于您的 DNS 服务商。

  5. 验证 DNS 记录:

    使用以下命令验证 TXT 记录是否生效:

    # Linux / macOS
    dig _acme-challenge.example.com TXT
    
    # Windows
    nslookup -type=TXT _acme-challenge.example.com
    
    # 在线查询
    # 访问 https://dnschecker.org/

⚠️ ACME 协议重要特性:

  • 每次申请/续期证书时,TXT 记录值都会改变!
  • 原因:Let's Encrypt 每次生成不同的随机 token
  • 这是 ACME 协议的安全设计,无法绕过
  • 验证数据无法提前准备或长期保留使用

其他注意事项:

  • DNS 验证支持通配符证书(如 *.example.com)
  • 确保 TXT 记录的值用双引号包裹
  • 不同 DNS 服务商的解析生效时间不同(通常 1-10 分钟)
  • 可以保留 TXT 记录名称(_acme-challenge),续期时只需修改记录值
  • 如果域名使用了 CDN,注意 DNS 缓存问题
  • 建议使用 Certbot 或 acme.sh 等工具实现自动续期

常见 DNS 服务商操作指引: