本文由ChatGPT生成文章摘要本文介绍了如何使用Nginx结合Certbot配置HTTPS协议,并使用Let’s Encrypt作为CA签发数字证书。通过Certbot快速实现HTTPS的部署,首先介绍了Certbot的安装步骤,需先开启EPEL仓库并安装Certbot和相关组件。随后介绍了Nginx的配置步骤,包括添加server块并检查和重新加载Nginx配置。接着详细说明了如何生成证书,运行Certbot命令请求SSL证书,并配置自动续订功能以及如何模拟证书更新。文末指出了可能遇到的问题,如域名解析错误和忘记开放443端口,并建议在完成配置后记得重新启动Nginx。整体流程简单易懂,适合快速部署HTTPS连接。
本文介绍的是Nginx结合Certbot配置HTTPS协议, 签发数字证书的CA为Let’s Encrypt。本文旨在以最快的速度用上Certbot。
Certbot安装
官网: https://certbot.eff.org/
官方安装文档: https://certbot.eff.org/instructions?ws=nginx&os=centosrhel8
Certbot 打包在 EPEL Enterprise Linux(企业版 Linux 的扩展包)上。使用 Certbot,必须先开启 EPEL 仓库。
# 本文使用CentOS 8
yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
sudo yum install certbot python2-certbot-nginx
nginx配置
(安装过程不介绍了)添加一个server块,示例如下
sudo tee /etc/nginx/conf.d/mywebsite.conf > /dev/null <<EOF
server {
listen 80;
server_name XXXX; # 换成你的域名
location / {
proxy_pass http://XXXX; #要映射的端口
proxy_set_header Host '$host';
proxy_set_header X-Real-IP '$remote_addr';
proxy_set_header X-Forwarded-For '$proxy_add_x_forwarded_for';
}
}
EOF
这里可以使用vim或者nano,如果使用需要去掉‘$host’, ‘$remote_addr’,’$proxy_add_x_forwarded_for’中的引号,否则这些变量就是字符串。
检查配置:在添加完配置后,使用以下命令检查 Nginx 配置是否正确。
sudo nginx -t
重新加载 Nginx
sudo nginx -s reload
生成证书
运行 Certbot 命令来请求 SSL 证书。Certbot 将会自动检测 Nginx 配置并为你签发证书。
另外,Certbot 将会配置一个 cron 作业来自动续订证书。证书默认会在 90 天后过期,Certbot 会在证书到期前自动为你续订。自动更新使用 Linux 系统的 cron 定时任务功能,CentOS 可以使用 crontab 命令。言外之意就是执行完下面这行命令你可以什么都不用管了。
sudo certbot --nginx
命令行模拟证书更新(可选):
sudo certbot renew --dry-run
最后记得重启一下nginx以防万一。
可能踩到的坑
- 在生成SSL证书的时候域名的解析出现错误。极有可能就是你域名没备案。
- 别忘了开443端口。