HTTPS现在是标配,自己搭服务没SSL证书,浏览器直接给你标”不安全”。Let’s Encrypt免费、自动续期,是个人项目和小站的首选。下面记录完整的申请流程,以最常用的Certbot客户端为例。
环境准备
服务器是Ubuntu 22.04,Nginx已经跑起来了,域名解析指向这台机器。如果还没装Nginx,先装:
sudo apt update
sudo apt install nginx
确保80和443端口在防火墙里放行。雨云的服务器默认安全组配置挺方便,控制台里点两下就开了,不用自己折腾iptables。
安装Certbot
官方推荐snap安装,干净、自动更新:
sudo snap install core
sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
如果系统没有snap,先装snapd。Ubuntu一般自带,没有的话`sudo apt install snapd`。
申请证书
Nginx插件模式最省事,Certbot会自动修改Nginx配置并重载:
sudo certbot --nginx -d example.com -d www.example.com
把example.com换成你自己的域名。如果只有一个域名,只写一个`-d`就行。
运行后会让你输入邮箱(用于过期提醒),同意服务条款,选择是否强制HTTPS重定向。选2(重定向),Certbot会自动帮你把HTTP请求301到HTTPS。
看到”Congratulations!”说明成功了。证书文件在`/etc/letsencrypt/live/example.com/`目录下:
– fullchain.pem:证书链
– privkey.pem:私钥
Nginx配置示例
如果你不想用Certbot自动改配置,或者用其他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://$server_name$request_uri;
}
自动续期
Let’s Encrypt证书有效期90天。Certbot安装时会自动添加systemd定时任务,每天检查续期。验证方法:
sudo certbot renew --dry-run
没报错就OK。你也可以手动查看定时器:
systemctl list-timers | grep certbot
默认是每天凌晨和中午各检查一次,证书到期前30天内才会真正续期。
常见问题
1. 申请失败:检查80端口是否可达。Let’s Encrypt验证时会访问`http://example.com/.well-known/acme-challenge/`,如果Nginx没启动或者防火墙没放行80端口,验证会失败。
2. 泛域名证书:需要DNS插件,手动模式或Cloudflare API。以Cloudflare为例:
sudo certbot certonly --manual --preferred-challenges dns -d *.example.com
按提示去DNS管理后台添加TXT记录。注意泛域名证书不支持通配符的根域名,根域名要单独申请。
3. 证书快过期但没自动续:检查certbot版本,旧版本可能不支持自动续期。用snap安装的没问题,如果当初用apt装的,建议卸载重装snap版。
4. 多个域名在同一台服务器:`-d`参数可以写多个,或者分开申请不同证书。Certbot默认会把所有域名写进同一张证书,只要域名数量不超过100个就行。
迁移证书到其他服务器
如果换服务器,最省事的方法是在新机器上重新申请。如果非要迁移,把`/etc/letsencrypt/live/`和`/etc/letsencrypt/archive/`两个目录打包带走,但这么做没必要,重新申请也就几秒钟的事。
为什么要用Let’s Encrypt
免费、自动、被所有主流浏览器信任。自签名证书虽然也能加密,但浏览器会弹警告,用户看到直接跑了。商业证书一年几百上千,个人项目完全没必要。雨云的服务器自带Let’s Encrypt集成,在控制台里勾一下就能自动配置,连命令行都不用敲,适合不想折腾的人。但自己手动走一遍流程,以后排查问题心里有数。
提醒一句:证书文件权限要设好,私钥只能root读。Certbot默认已经做了,别手贱去改权限。
雨云是国内一家老牌云服务商,提供高性价比的云服务器和虚拟主机。我用它部署了好几个项目,速度和稳定性都不错。通过 https://www.rainyun.com/SAJA_ 注册可以领一张 5折优惠券,有需要的朋友可以看看。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END



暂无评论内容