前提
- 一个有公网IP的服务器
- 一个备案通过的域名
- 有基础的Linux基础操作能力
开始
教程官网
这里笔者以centos8+Nginx,但实际上我的系统信息cat /etc/os-release
1 2 3 4 5 6 7 8 9
| NAME="Alibaba Cloud Linux" VERSION="3 (Soaring Falcon)" ID="alinux" ID_LIKE="rhel fedora centos anolis" VERSION_ID="3" PLATFORM_ID="platform:al8" PRETTY_NAME="Alibaba Cloud Linux 3 (Soaring Falcon)" ANSI_COLOR="0;31" HOME_URL="https://www.aliyun.com/"
|
我买的是阿里云的服务器,在选择系统时看了有Alibaba Cloud Linux 3的选项,查了下在资料,基本说着兼容什么什么系统,你可以理解成,就是基于什么什么系统,然后做了一些本土化设置,以及一些优化等等,参考鸿蒙。
接下来的所有操作皆是在root用户操作下,
安装snapd
1 2 3 4 5
| yum install epel-release yum install snapd systemctl enable --now snapd.socket ln -s /var/lib/snapd/snap /snap
|
执行完过后,重启一下实例,操作之前我建议你删完全移除nginx,并删除etc/nginx
此目录,
安装Nginx
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| yum -y install nginx
nginx -v
systemctl start nginx
systemctl enable nginx
|
修改nginx配置
1
| vim /etc/nginx/nginx.conf
|
删除默认的server配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| server { listen 80; server_name localhost;
location / { root html; index index.html index.htm; }
error_page 500 502 503 504 /50x.html; location = /50x.html { root html; }
}
|
填写自己的配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| server { server_name wangijun.com; root /home/wlf/hexoblog;
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html; location = /40x.html { }
error_page 500 502 503 504 /50x.html; location = /50x.html { } }
|
使用certbot申请SSL证书
为单域名申请SSL证书
1 2 3 4 5 6 7 8 9 10 11 12 13
| snap install --classic certbot
ln -s /snap/bin/certbot /usr/bin/certbot
certbot --nginx
certbot renew --dry-run
|
为子域名申请SSL证书
--expand-d
告诉Certbot使用包含所有旧域和一个或多个附加新域的新证书更新现有证书。
使用该命令指定所有已有域名和一个或多个新域名
1 2 3 4 5 6 7
| certbot --expand -d existing.com,example.com,newdomain.com
certbot --expand -d existing.com,example.com,newdomain.com
|
这种方式适合子域名不多的情况下,但理论上是无限的,就是命令有点长。
自动续约过后重启Nginx
执行命令
certbot renew --deploy-hook "systemctl restart nginx"
撤销证书
如果需要吊销证书,请使用子命令执行此操作。revoke
可以通过提供证书名称或提供证书路径来吊销证书 查看证书路径:certbot certificates
1 2 3
| certbot revoke --cert-name example.com
certbot revoke --cert-path /etc/letsencrypt/live/example.com/cert.pem
|