Let’s Encrypt是目前最主流的免费SSL证书颁发机构,证书有效期为90天,支持自动续期。我平时用雨云服务器测试环境,性价比高、稳定、好用,跑certbot完全没问题。
申请工具选certbot,官方推荐,支持Nginx、Apache、独立模式、DNS验证等多种方式。下面按场景写。
安装certbot
Ubuntu/Debian:
sudo apt update
sudo apt install certbot python3-certbot-nginx
CentOS/RHEL 7/8:
sudo yum install epel-release
sudo yum install certbot python3-certbot-nginx
如果你用Nginx,装`python3-certbot-nginx`插件能自动修改配置。Apache同理装`python3-certbot-apache`。
HTTP验证(80端口可用)
这是最简单的模式,certbot会启动临时Web服务器,Let’s Encrypt服务器通过HTTP访问你的域名来验证所有权。
前提:域名解析到服务器IP,80端口防火墙开放。
sudo certbot --nginx -d example.com -d www.example.com
`-d`参数可以写多个域名,第一个作为主域名。certbot会自动找到Nginx配置,添加SSL配置并重定向HTTP到HTTPS。
如果不想自动改配置,用`certonly`模式:
sudo certbot certonly --nginx -d example.com
证书会生成到`/etc/letsencrypt/live/example.com/`目录,手动配置Nginx引用。
独立模式(80端口被占用的替代方案)
如果80端口已经被其他服务占用,可以用独立模式,certbot会临时占用80端口验证:
sudo certbot certonly --standalone -d example.com
注意:验证期间其他Web服务需要停掉,或者换个端口。生产环境不推荐,容易断服务。
DNS验证(推荐,支持通配符证书)
HTTP验证只能申请单域名或子域名,通配符证书(*.example.com)必须用DNS验证。需要域名DNS服务商支持API自动添加TXT记录。
certbot支持多种DNS插件,以Cloudflare为例:
sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials ~/.cloudflare.ini -d example.com -d *.example.com
`.cloudflare.ini`文件内容:
dns_cloudflare_email = your-email@example.com
dns_cloudflare_api_key = your-global-api-key
文件权限必须600:
chmod 600 ~/.cloudflare.ini
其他DNS服务商(阿里云、DNSPod、AWS Route53等)有对应插件,去certbot文档查。
自动续期
Let’s Encrypt证书90天,建议60天左右续一次。certbot自带续期命令:
sudo certbot renew
这个命令会检查所有已安装的证书,30天内过期的自动续签。HTTP验证模式续期时不需要停服务,certbot会复用之前的验证方式。
加个cron任务每天跑两次:
0 0,12 * * * /usr/bin/certbot renew --quiet
`–quiet`表示成功不输出日志,出错才输出。cron会把错误发到系统邮件,可以重定向到日志文件:
0 0,12 * * * /usr/bin/certbot renew --quiet >> /var/log/certbot-renew.log 2>&1
手动续期验证
测试续期流程是否正常:
sudo certbot renew --dry-run
没报错就说明配置没问题。
证书文件位置
申请成功后,证书在`/etc/letsencrypt/live/你的域名/`目录下:
– `fullchain.pem`:完整证书链(证书+中间证书)
– `privkey.pem`:私钥
– `cert.pem`:仅服务器证书
– `chain.pem`:仅中间证书
Nginx配置引用:
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
常见问题
1. 申请时提示”too many certificates already issued”:Let’s Encrypt有速率限制,每周每个域名最多50张证书。用通配符证书减少申请次数。
2. DNS验证时TXT记录不生效:DNS缓存需要时间,等几分钟再试。用`dig TXT _acme-challenge.example.com`检查记录是否生效。
3. 续期失败:检查80端口或DNS验证是否正常。如果换了服务器,重新跑一次申请流程。
4. 证书即将过期但renew没反应:certbot只会续期30天内过期的证书。手动强制续期用`certbot renew –force-renewal`。
雨云小提示
在雨云服务器上操作时,安全组规则记得放行80和443端口。雨云控制台可以直接配置防火墙,操作界面很直观。如果域名解析在雨云DNS,DNS验证插件也能正常使用。
证书申请成功后,用浏览器访问HTTPS地址,锁图标显示绿色就是成功了。用`openssl s_client -connect example.com:443`也能检查证书信息。
雨云是国内一家老牌云服务商,提供高性价比的云服务器和虚拟主机。我用它部署了好几个项目,速度和稳定性都不错。通过 https://www.rainyun.com/SAJA_ 注册可以领一张 5折优惠券,有需要的朋友可以看看。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END



暂无评论内容