Let's Encrypt 免费通配符 SSL 证书申请全攻略
2025.10.13 13:35浏览量:152简介:本文详细介绍如何通过Let's Encrypt申请免费通配符SSL证书,涵盖环境准备、证书申请、验证、安装及自动化续期等全流程,帮助开发者高效实现网站HTTPS加密。
Let’s Encrypt 免费通配符 SSL 证书申请全攻略
一、为什么选择 Let’s Encrypt 通配符证书?
Let’s Encrypt 作为全球最受欢迎的免费 SSL 证书颁发机构,其通配符证书(Wildcard SSL)具有以下核心优势:
- 全域名覆盖:单个证书可保护主域名及所有子域名(如
*.example.com),无需为每个子域名单独申请证书。 - 零成本:完全免费,适合个人开发者、初创企业及预算有限的项目。
- 自动化支持:支持 ACME 协议,可通过 Certbot 等工具实现证书自动申请与续期。
- 行业认可:由非营利组织 ISRG 运营,证书被所有主流浏览器信任。
二、申请前的环境准备
1. 服务器要求
- 操作系统:支持 Linux(Ubuntu/CentOS/Debian 等)或 Windows Server(需 WSL 或 PowerShell 支持)。
- Web 服务器:Nginx 或 Apache(需提前安装并运行)。
- 域名控制权:需拥有域名的 DNS 管理权限,用于完成域名所有权验证。
2. 安装 Certbot 工具
Certbot 是 Let’s Encrypt 官方推荐的自动化工具,支持多种操作系统和 Web 服务器。
Ubuntu/Debian 安装示例:
# 添加 Certbot 官方仓库sudo apt updatesudo apt install certbot python3-certbot-nginx # Nginx 用户# 或sudo apt install certbot python3-certbot-apache # Apache 用户
CentOS/RHEL 安装示例:
# 启用 EPEL 仓库sudo yum install epel-release# 安装 Certbotsudo yum install certbot python3-certbot-nginx # Nginx 用户# 或sudo yum install certbot python3-certbot-apache # Apache 用户
3. 配置 DNS 记录
申请通配符证书需通过 DNS 验证(DNS-01),需在域名 DNS 管理面板中添加一条 TXT 记录:
- 记录类型:TXT
- 主机名:
_acme-challenge - 值:由 Certbot 生成(后续步骤中获取)。
三、申请通配符证书的完整流程
1. 运行 Certbot 并选择 DNS 验证
sudo certbot certonly --manual --preferred-challenges dns -d "*.example.com" -d "example.com"
--manual:手动模式(需手动完成 DNS 验证)。--preferred-challenges dns:指定使用 DNS 验证。-d:指定要保护的域名(支持多个)。
2. 完成 DNS 验证
运行命令后,Certbot 会输出一条 TXT 记录值(如 abc123...xyz),需在域名 DNS 管理面板中添加该记录:
- 登录域名注册商(如阿里云、Cloudflare、GoDaddy 等)。
- 找到 DNS 管理页面,添加
TXT记录:- 主机名:
_acme-challenge - 值:Certbot 提供的字符串。
- 主机名:
- 保存记录后,等待 DNS 传播(通常需 1-5 分钟)。
3. 验证 DNS 记录并获取证书
返回终端,按提示确认 DNS 记录已添加后,Certbot 会完成验证并生成证书:
- 证书文件路径:
/etc/letsencrypt/live/example.com/ - 关键文件:
fullchain.pem:包含证书和中间证书。privkey.pem:私钥文件。
四、证书安装与配置
1. Nginx 配置示例
编辑 Nginx 配置文件(如 /etc/nginx/sites-available/example.com):
server {listen 443 ssl;server_name example.com *.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;# 其他配置(如根目录、日志等)root /var/www/html;index index.html;}
重启 Nginx:
sudo systemctl restart nginx
2. Apache 配置示例
编辑 Apache 配置文件(如 /etc/apache2/sites-available/example.com.conf):
<VirtualHost *:443>ServerName example.comServerAlias *.example.comSSLEngine onSSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pemSSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem# 其他配置(如文档根目录、日志等)DocumentRoot /var/www/html</VirtualHost>
重启 Apache:
sudo systemctl restart apache2
五、自动化续期与维护
Let’s Encrypt 证书有效期为 90 天,需设置自动续期以避免过期。
1. 测试续期命令
sudo certbot renew --dry-run
若输出 Success,则表示续期配置正确。
2. 设置定时任务
编辑 crontab:
sudo crontab -e
添加以下行(每天凌晨 3 点检查续期):
0 3 * * * /usr/bin/certbot renew --quiet && sudo systemctl reload nginx # Nginx 用户# 或0 3 * * * /usr/bin/certbot renew --quiet && sudo systemctl reload apache2 # Apache 用户
六、常见问题与解决方案
1. DNS 验证失败
- 原因:TXT 记录未传播或值错误。
- 解决:
- 使用
dig TXT _acme-challenge.example.com检查记录是否生效。 - 确保记录值与 Certbot 输出完全一致(包括空格和大小写)。
- 使用
2. 证书覆盖范围不足
- 问题:未包含根域名(如
example.com)。 - 解决:在
-d参数中同时指定根域名和通配符域名:sudo certbot certonly --manual --preferred-challenges dns -d "example.com" -d "*.example.com"
3. 自动化续期失败
- 原因:Web 服务器未重启或证书路径错误。
- 解决:
- 确保续期命令后包含服务器重启命令(如
systemctl reload nginx)。 - 检查证书路径是否正确(
/etc/letsencrypt/live/下对应域名目录)。
- 确保续期命令后包含服务器重启命令(如
七、进阶技巧:使用 DNS 插件自动化验证
若手动 DNS 验证繁琐,可使用支持自动 DNS 更新的插件(如 Certbot 的 DNS 插件或 Acme.sh):
1. 使用 Certbot DNS 插件(以 Cloudflare 为例)
- 安装插件:
sudo apt install certbot-dns-cloudflare # Ubuntu/Debian
- 获取 Cloudflare API 令牌并创建
~/.secrets/cloudflare.ini:dns_cloudflare_email = your@email.comdns_cloudflare_api_key = YOUR_CLOUDFLARE_API_TOKEN
- 运行申请命令:
sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials ~/.secrets/cloudflare.ini -d "*.example.com" -d "example.com"
2. 使用 Acme.sh(支持更多 DNS 提供商)
- 安装 Acme.sh:
curl https://get.acme.sh | shsource ~/.bashrc
- 以 DNS 模式申请证书(以阿里云为例):
export Ali_Key="YOUR_ALIYUN_ACCESS_KEY"export Ali_Secret="YOUR_ALIYUN_SECRET_KEY"acme.sh --issue --dns dns_ali -d "*.example.com" -d "example.com"
八、总结与最佳实践
- 定期检查证书状态:使用
certbot certificates查看证书有效期。 - 备份私钥:将
/etc/letsencrypt/archive/下的私钥文件备份至安全位置。 - 监控续期任务:确保 crontab 任务未被禁用,并检查日志(
/var/log/letsencrypt/)。 - 多域名场景:若需保护多个通配符域名,可合并申请命令:
sudo certbot certonly --manual --preferred-challenges dns -d "*.example.com" -d "example.com" -d "*.another.com" -d "another.com"
通过以上步骤,您可高效申请并管理 Let’s Encrypt 免费通配符 SSL 证书,为网站提供安全可靠的 HTTPS 加密服务。

发表评论
登录后可评论,请前往 登录 或 注册