前言
网站搭建后若未配置SSL证书,则默认通过http访问,而对于配置了SSL证书的网站,一是利于收录,二是能防止浏览器报不安全的警告。
步骤
1、安装 EPEL 和 dnf-plugins-core
sudo dnf install epel-release -y
sudo dnf install dnf-plugins-core -y

2. 启用 PowerTools 仓库(CentOS 9 Stream 需要)
sudo dnf config-manager --set-enabled crb
注:CentOS 9 中 CRB 替代了 PowerTools。

3. 安装 Certbot 和 Nginx 插件
sudo dnf install certbot python3-certbot-nginx -y

4使用 certbot 自动为你的域名申请证书。
sudo certbot --nginx -d www.yourdomain.com -d yourdomain.com
yourdomain.com
sudo certbot --nginx -d yourdomain.com

5.查看nginx配置文件
如图可以看到我们的nginx配置文件被自动修改为https访问了

6. 测试续期功能
sudo certbot renew --dry-run
有succeeded则说明自动续期是通畅的,那么我们就可以自己配置自动续期功能了

7.添加定时任务
sudo crontab -e
然后输入如下内容保存即可
0 0,12 * * * /usr/bin/certbot renew --quiet
当然我们可以用如下命令查看定时任务是否存在
sudo crontab -l

配置上后,我们的域名证书就会自动在到期前30天内自动续期
8.【重要】源码修改配置代理
幽络源的该项目由于是前端后端分离的,在没有配置SSL证书前,前端在配置文件中直接是配置的启动于http://域名的,然后axios也是配置的http://域名的,并且在nginx中我只做了前端项目的反向代理。
那么现在我需要将项目启动于https+域名,让用户通过 https://域名 能正常访问到我的网站
但网站发起的接口请求还是 http的,这会导致浏览器报错:混合内容(Mixed Content),然后接口无法正常请求,因此axios也得修改为https的。如图我修改了nuxt项目中的nuxt.conf.js

但是这样还不够,因为我们的后端是启动于localhost:8080的,那我们需要去修改后端吗?当然不需要,只需要在nginx配置上后端项目的反向代理即可,我的后端项目全局上下文路径为/api,因此配置/api的反向代理到localhost:8080即可,如图

需要特别注意的是代理中的proxy_pass中,localhost:8080后是没有斜杠的,如果带上斜杠,则前端发起的例如 /api/test 会被转发到 localhost:8080/test去,导致无法对应上接口,而不带上斜杠,则会直接拼接转发到 localhost:8080/api/test 正确的接口路径
至此,网站才算真正的配置好https证书
结语
以上为幽络源的“Centos9配置网站SSL证书并自动续时”教程,如有疑问或对建站感兴趣的小伙伴可以加入我们的QQ群307531422
