Let‘s Encrypt通配符证书+Nginx配置全指南:从申请到自动续期一条龙

发布时间:2026/7/19 9:49:45

Let‘s Encrypt通配符证书+Nginx配置全指南:从申请到自动续期一条龙 Lets Encrypt通配符证书与Nginx配置终极指南1. 为什么选择Lets Encrypt通配符证书在当今互联网环境中HTTPS已成为网站安全的基本要求。Lets Encrypt作为非营利性证书颁发机构彻底改变了SSL/TLS证书的获取方式。其通配符证书功能更是为多子域名管理带来了革命性便利。通配符证书的核心价值在于一张证书覆盖所有子域名例如*.example.com可同时保护blog.example.com、shop.example.com等无限子域名显著降低管理成本无需为每个子域名单独申请和维护证书完全免费与传统CA动辄数百美元的通配符证书相比Lets Encrypt提供同等安全级别的免费方案自动化支持通过ACME协议实现证书的自动申请和续期典型应用场景SaaS平台为用户提供个性化子域名企业内部分别部署不同功能的子站点开发测试环境中快速配置多个临时域名博客平台为每位用户分配独立子域名2. 证书申请前的准备工作2.1 系统环境要求确保您的环境满足以下条件组件最低要求推荐版本操作系统主流Linux发行版Ubuntu 20.04/CentOS 8Nginx1.10.31.18.0Python2.7或3.53.6防火墙开放80/443端口配置安全组规则2.2 域名控制权验证申请通配符证书必须通过DNS验证这意味着您需要拥有域名的完全管理权限能够添加/修改DNS TXT记录了解您的DNS提供商API如需自动化常见DNS服务商支持情况阿里云DNSdns_aliCloudflaredns_cfGoDaddydns_gd华为云DNSdns_huawei提示如果使用非主流DNS服务商可能需要手动添加TXT记录3. 使用Certbot申请通配符证书3.1 安装Certbot客户端推荐使用官方推荐的certbot-auto脚本wget https://dl.eff.org/certbot-auto chmod ax certbot-auto sudo mv certbot-auto /usr/local/bin/certbot对于特定系统可使用包管理器安装# Ubuntu/Debian sudo apt update sudo apt install certbot # CentOS/RHEL sudo yum install epel-release sudo yum install certbot3.2 手动DNS验证申请流程执行以下命令启动申请流程以example.com为例sudo certbot certonly \ --manual \ --preferred-challengesdns \ --server https://acme-v02.api.letsencrypt.org/directory \ -d *.example.com \ -d example.com \ --agree-tos \ -m adminexample.com关键步骤解析程序会提示在DNS中添加TXT记录_acme-challenge.example.com. 300 IN TXT gfj9Xq...Rg85nM使用dig命令验证记录是否生效dig -t txt _acme-challenge.example.com确认解析生效后按回车继续3.3 自动化DNS验证以阿里云为例对于支持API的DNS服务商可完全自动化export Ali_Keyyour_access_key export Ali_Secretyour_access_secret certbot certonly \ --dns dns_ali \ -d *.example.com \ -d example.com成功后将输出证书存储路径/etc/letsencrypt/live/example.com/ ├── cert.pem # 域名证书 ├── chain.pem # 中间证书 ├── fullchain.pem # 完整证书链 └── privkey.pem # 私钥4. Nginx配置最佳实践4.1 基础HTTPS配置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; # 启用HTTP/2 listen 443 ssl http2; # 安全增强配置 ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 1d; # 其他业务配置... }4.2 强制HTTPS跳转server { listen 80; server_name example.com www.example.com; return 301 https://$host$request_uri; }4.3 通配符子域名配置server { listen 443 ssl; server_name ~^(?subdomain.)\.example\.com$; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # 根据子域名动态处理请求 location / { proxy_pass http://backend_$subdomain; } }5. 证书自动续期方案Lets Encrypt证书有效期为90天必须设置自动续期5.1 测试续期命令sudo certbot renew --dry-run5.2 配置系统定时任务编辑crontabsudo crontab -e添加以下内容每天凌晨检查续期0 0 * * * /usr/bin/certbot renew --quiet --post-hook systemctl reload nginx关键参数说明--quiet仅输出错误信息--post-hook续期成功后重新加载Nginx5.3 续期通知设置建议配置邮件通知需安装mailutils0 0 * * * /usr/bin/certbot renew --quiet --post-hook systemctl reload nginx | mail -s Certbot Renewal Log adminexample.com6. 常见问题排查指南6.1 浏览器提示不安全检查步骤确保证书路径指向fullchain.pem而非cert.pem验证证书链完整性openssl verify -CAfile /etc/letsencrypt/live/example.com/chain.pem \ /etc/letsencrypt/live/example.com/cert.pem使用在线工具检测https://www.ssllabs.com/ssltest/6.2 续期失败处理常见原因及解决方案错误类型解决方案DNS验证失败检查DNS解析是否生效权限不足使用sudo执行或调整目录权限端口被占用临时停止占用80/443端口的服务证书未到期添加--force-renewal参数6.3 性能优化建议启用OCSP Stapling减少验证延迟ssl_stapling on; ssl_stapling_verify on; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;配置会话恢复减少TLS握手ssl_session_tickets on; ssl_session_timeout 1d;7. 高级配置技巧7.1 多域名证书管理对于拥有多个主域的情况可以申请包含多个通配符的证书certbot certonly --dns dns_ali \ -d *.example.com -d example.com \ -d *.test.org -d test.org7.2 密钥轮换与强化定期升级密钥强度需重新申请证书certbot certonly --force-renewal --key-type ecdsa \ --elliptic-curve secp384r1 -d *.example.com7.3 证书备份策略建议定期备份以下内容/etc/letsencrypt/整个目录Nginx配置文件中证书路径配置续期脚本和定时任务配置备份示例命令tar -czvf letsencrypt-backup-$(date %Y%m%d).tar.gz \ /etc/letsencrypt/ \ /etc/nginx/sites-available/通过以上完整指南您应该能够轻松驾驭Lets Encrypt通配符证书的全生命周期管理为您的Web服务构建安全、高效的HTTPS环境。

相关新闻