为了在网站上启用 HTTPS,我们需要从证书颁发机构(CA)获取证书(一种文件)。 市面上获取证书的方式还是挺多的,这次主要给大家介绍一个我平时比较常用的一种免费的方式:cerbot
操作环境
Ubuntu 22.04
Nginx
使用教程
1. 安装Certbot客户端
sudo apt update
sudo apt install certbot
安装过程我就不放截图了,没什么特别的点,输入电子邮件地址,确认服务条款,一路确认即可。
2. 获取免费证书
certbot certonly --standalone -d example.com
example.com换成你的域名即可。比如域名为 haha.com 那就是 :
certbot certonly --standalone -d haha.com
正常情况:如果顺利,证书和私钥会生成在这。就可以到下一步了。
异常情况:
如果没有成功,按我遇到的情况是有两种:(因为是临时想起来写的,所以现在也没有截图)
1. 第一种是报错什么 80端口被占用之类的。这种就只要把nginx停了即可。
systemctl stop nginx
然后再执行上面那步 certbot ...
2. 第二种是 报错 Connection refused 啥的
这时候你要检查一下,你的域名是不是解析到当前服务器。要用域名解析到的那台当前服务器搞这个。然后同样再执行 certbot ...即可。
最后 记得重启nginx
systemctl start nginx
3. 配置Nginx开启HTTPS
找到你的nginx配置文件。如果你是apt安装的nginx 一般是在 /etc/nginx/nginx.conf
配置如下:配一下证书和私钥的位置。当然 你挪到其他地方也是可以的,记得对上位置即可。
server {
listen 443 ssl http2;
server_name jinmo-coder.cn www.jinmo-coder.cn;
# 证书
ssl_certificate /etc/letsencrypt/live/jinmo-coder.cn/fullchain.pem;
# 私钥
ssl_certificate_key /etc/letsencrypt/live/jinmo-coder.cn/privkey.pem;
location / {
root /var/lib/jenkins/workspace/codecabin/.vuepress/dist;
index index.html index.htm;
}
}
4. 定时刷新证书(可选)
因为证书的有效期为90天,所以我们需要让这个证书自动去更新,通过执行以下命令,自动检查系统内的证书,并且自动更新这些证书。certbot提供了刷新证书的命令:
certbot renew --dry-run
你可以选择每次来点一下。也可以搞个定时任务Cron:
-
Cron 服务命令
# 查看服务状态 sudo service cron status # 开启服务 sudo service cron start
检查服务状态,没有启用就开启服务
-
修改cron配置
crontab -e
第一次使用要选择编辑工具 我们选择2。然后在文件的尾部添加需要的定时任务
-
# 每隔 两个月的 凌晨 2:15 执行 更新操作
15 2 * */2 * certbot renew -
# 检查定时任务是否生效 crontab -l
但是这里面可能会有点问题,就是上面说到的80端口被占用那个问题。那也可以选择执行脚本:
写个脚本:
vim /root/renew_cert.sh
内容可以如下:
#!/bin/bash
systemctl stop nginx # 停止 Nginx
certbot renew # 更新证书
systemctl start nginx # 启动 Nginx
赋予执行权限:
chmod +x /root/renew_cert.sh
上面第三步的renew就改成:
15 2 * */2 * /root/renew_cert.sh
参考地址: