1. 概述
腾讯云博客的免费SSH证书有效期只有3个月,但会提前一个月提醒更新证书。为了快捷更新证书,编写本文档。
快速更新证书的大概有三步。
- 手动到腾讯云申请新的免费证书并下载。
- 将证书上传到我的腾讯云服务器。
- 执行证书更新脚本。
2. 详细步骤
2.1. 申请证书
- 打开网页我的证书 - 腾讯云,点击「申请免费证书」按钮。
- 绑定域名,填顶级和一级域名(比如
seedjyh.com);验证方式,填「自动DNS验证」;点击「提交申请,进行域名验证」。
- 等待1~2分钟直到收到腾讯云短信,重新回到我的证书 - 腾讯云,在证书列表最上面一行找到刚申请的证书,点击右边的「下载」按钮。
- 选择「Nginx(适用大部分场景)(pem文件、crt文件、key文件)」下载。
2.2. 上传证书
将zip压缩包(比如seedjyh.com_nginx.zip)上传到博客服务器的任意目录下。
2.3. 执行证书更新脚本
在zip压缩包同一目录下,执行以下sh脚本(文件名和文件路径需根据实际情况调整)。
这个脚本做了以下三件事:
- 解压 zip 压缩包
- 将解压结果中的key文件和crt文件拷贝到nginx目录下,覆盖同名文件。
- 重启nginx服务,加载新证书。
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
46
47
48
|
#!/bin/bash
# 切换到脚本所在目录,以便读取同目录下的 zip 文件
cd "$(dirname "$0")" || exit 1
ZIP_FILE="seedjyh.com_nginx.zip"
CERT_SUBDIR="seedjyh.com_nginx"
NGINX_CERT_DIR="/etc/nginx/cert"
# 1. 检查 zip 文件是否存在
if [ ! -f "$ZIP_FILE" ]; then
echo "错误:当前目录下未找到 $ZIP_FILE"
exit 1
fi
# 2. 解压缩 zip 文件(-o 表示覆盖已存在的文件)
echo "正在解压 $ZIP_FILE ..."
rm -rf "$CERT_SUBDIR" # 清理旧的解压目录,避免文件残留干扰
unzip -o "$ZIP_FILE" > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo "错误:解压 $ZIP_FILE 失败,请确认系统已安装 unzip 命令"
exit 1
fi
# 3. 确认需要的证书文件是否存在于解压目录中
KEY_SRC="$CERT_SUBDIR/seedjyh.com.key"
CRT_SRC="$CERT_SUBDIR/seedjyh.com_bundle.crt"
if [ ! -f "$KEY_SRC" ] || [ ! -f "$CRT_SRC" ]; then
echo "错误:解压后未在 $CERT_SUBDIR 目录中找到 seedjyh.com.key 或 seedjyh.com_bundle.crt"
exit 1
fi
# 4. 拷贝到 nginx 证书目录(-f 强制覆盖同名文件)
echo "正在将证书覆盖拷贝到 $NGINX_CERT_DIR ..."
mkdir -p "$NGINX_CERT_DIR" # 如果目标目录不存在则创建
cp -f "$KEY_SRC" "$NGINX_CERT_DIR/"
cp -f "$CRT_SRC" "$NGINX_CERT_DIR/"
# 5. 重新加载 nginx(平滑重启)
echo "正在执行 nginx -s reload ..."
nginx -s reload
if [ $? -ne 0 ]; then
echo "错误:nginx 重载失败,请检查 nginx 是否正在运行,或当前用户是否有权限执行该命令"
exit 1
fi
echo "证书更新成功,Nginx 已平滑重载!"
|