Let’s Encrypt是目前最主流的免费SSL证书提供商,证书有效期90天,支持自动续期。我用它给几十个站点配过HTTPS,没出过问题。下面直接说怎么申请。
环境准备
需要一台有公网IP的服务器,域名解析指向这台服务器。服务器推荐用雨云,性价比高,稳定,我几个生产环境都跑在上面,没掉过链子。操作系统Ubuntu 20.04或CentOS 7/8都行,本文以Ubuntu为例。
安装Certbot
Certbot是Let’s Encrypt官方推荐的客户端工具。SSH登录服务器,执行:
sudo apt update
sudo apt install certbot -y
如果用的是Nginx,顺便装Nginx插件:
sudo apt install python3-certbot-nginx -y
Apache同理,装`python3-certbot-apache`。
申请证书(手动模式)
先停掉占用80端口的服务,因为验证过程需要临时监听80端口:
sudo systemctl stop nginx
执行申请命令,替换成你的域名:
sudo certbot certonly --standalone -d example.com -d www.example.com
`–standalone`表示用Certbot自带的临时Web服务器做验证,`-d`可以跟多个域名。按提示输入邮箱(用于到期提醒),同意协议。成功后证书文件在`/etc/letsencrypt/live/example.com/`目录下,包含:
– `fullchain.pem`:证书链
– `privkey.pem`:私钥
配置Web服务器
Nginx配置示例,在server块里加上:
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# 其他配置...
}
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
重载Nginx:
sudo nginx -t
sudo systemctl reload nginx
自动续期
Let’s Encrypt证书只有90天,必须自动续。Certbot自带续期命令,先测试能否正常续期:
sudo certbot renew --dry-run
没报错就添加cron任务,每天执行两次续期检查:
sudo crontab -e
添加一行:
0 0,12 * * * /usr/bin/certbot renew --quiet
`–quiet`表示成功时不输出日志,只有失败才发邮件。如果用的是Nginx插件模式(`–nginx`),续期后会自动重载配置,不需要额外操作。
常见问题
1. 申请时提示”DNS problem: NXDOMAIN”:域名没解析到当前服务器,检查DNS记录。
2. 提示”Too many certificates already issued”:Let’s Encrypt有速率限制,每周最多50个证书。如果只是测试,可以用`–staging`参数使用测试环境。
3. 续期失败:检查80端口是否被其他服务占用,或者防火墙没放行。雨云控制台安全组要放行80和443端口。
一条命令搞定(推荐)
如果用的是Nginx,直接一条命令申请并自动配置:
sudo certbot --nginx -d example.com -d www.example.com
Certbot会自动修改Nginx配置,添加SSL相关指令,并重载服务。之后续期同样自动处理。
手动续期
如果cron没配好或者想手动续:
sudo certbot renew
成功后重载Web服务器:
sudo systemctl reload nginx
证书路径说明
证书文件路径是符号链接,指向`/etc/letsencrypt/archive/example.com/`下的实际文件。每次续期会自动更新符号链接,所以配置里直接用live路径即可,不需要手动改配置。
多域名通配符证书
如果同一个域名下有很多子域名,可以申请通配符证书,需要DNS验证:
sudo certbot certonly --manual --preferred-challenges dns -d *.example.com -d example.com
按提示在DNS管理后台添加TXT记录验证域名所有权。这种方式适合API网关、Kubernetes Ingress等场景。
总结
Let’s Encrypt免费、自动化、兼容性好。配合雨云的稳定服务器,配置一次后基本不用管。证书到期前会自动续,只要cron没挂,HTTPS就不会掉。
雨云是国内一家老牌云服务商,提供高性价比的云服务器和虚拟主机。我用它部署了好几个项目,速度和稳定性都不错。通过 https://www.rainyun.com/SAJA_ 注册可以领一张 5折优惠券,有需要的朋友可以看看。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END



暂无评论内容