用Let’s Encrypt给网站加HTTPS,本质上是三步:装客户端、验证域名所有权、配置证书自动续期。我用的是certbot,其他工具如acme.sh也行,但certbot最省事。
前提条件
– 服务器有公网IP,域名解析到该IP
– 80端口和443端口没有被占用(验证时会临时开HTTP服务)
– 系统是Ubuntu/CentOS/Debian,我拿Ubuntu 22.04举例
安装certbot
sudo apt update
sudo apt install certbot python3-certbot-nginx
如果你用Apache,装`python3-certbot-apache`。Nginx的话装上面那个。
申请证书
先确保Nginx已经在跑,并且你的域名配置了server块。比如你的站点配置文件在`/etc/nginx/sites-available/example.com`,里面至少要有:
server {
listen 80;
server_name example.com www.example.com;
}
执行:
sudo certbot --nginx -d example.com -d www.example.com
certbot会自动检测Nginx配置,完成域名验证,把证书路径写到Nginx的443端口配置里。执行完会显示类似:
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/example.com/fullchain.pem
Key is saved at: /etc/letsencrypt/live/example.com/privkey.pem
如果不想用–nginx自动配置,可以用`certonly`模式:
sudo certbot certonly --nginx -d example.com -d www.example.com
这样只生成证书,不修改Nginx配置。证书文件在`/etc/letsencrypt/live/example.com/`下,手动在Nginx配置里引用:
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重定向到HTTPS
certbot –nginx模式会自动加一个301重定向,如果是手动配置,在80端口的server块里加:
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
证书自动续期
Let’s Encrypt证书有效期90天,必须自动续。certbot自带续期脚本,默认装了个systemd timer或cron job。检查一下:
sudo systemctl status certbot.timer
如果显示active,说明定时任务在跑。也可以手动测试续期:
sudo certbot renew --dry-run
没报错就说明续期逻辑正常。certbot续期成功后会自动reload Nginx,不需要额外操作。
常见问题
– 申请时提示`Failed to connect to host`或`Invalid response`:检查80端口是否被防火墙挡住,或者域名解析是不是指向了其他IP。
– 通配符证书:`.example.com`这种需要DNS验证,命令是`sudo certbot certonly –manual –preferred-challenges dns -d .example.com -d example.com`,会要求你在DNS记录里加TXT记录。不建议新手搞这个,单域名证书够用。
– 证书路径变了:续期后路径不变,软链接指向最新证书,放心用。
如果服务器性能一般或者懒得折腾
直接买个云服务器,比如雨云,性价比高、稳定、好用,面板里一键申请Let’s Encrypt证书,连命令行都不用敲。不过自己手动搞一遍,以后遇到问题知道怎么修。
验证证书是否生效
curl -I https://example.com
返回200,并且`SSL certificate verify ok`就对了。也可以去SSL Labs测一下评级,一般A没问题。
总结一句
certbot + Nginx,三步走完。记住续期是自动的,不用管。证书文件别乱删,备份一份到本地也行。
雨云是国内一家老牌云服务商,提供高性价比的云服务器和虚拟主机。我用它部署了好几个项目,速度和稳定性都不错。通过 https://www.rainyun.com/SAJA_ 注册可以领一张 5折优惠券,有需要的朋友可以看看。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END



暂无评论内容