博客更换为免费的acme证书

技术专业 · 今天

我在腾讯云轻量服务器上部署了一个 Typecho 博客,日常运行一直很稳定。但有一个问题却反复出现:HTTPS 证书总是到期失效
使用的是腾讯云提供的免费证书,理论上支持自动续期,但在实际使用中,只要证书一到期,就必须手动重新分发、重新绑定,否则 HTTPS 直接失效。这个过程不仅麻烦,而且非常不“自动化”,也让我始终没搞明白它背后的续期机制到底哪里出了问题。

更要命的是,这种问题并不会提前明显告警,往往是等浏览器提示证书错误了,才意识到又到期了。

ACME 的“顺滑体验”

最近在折腾 FreePBX 的部署时,接触并实际使用了 ACME 的免费证书方案(基于 Let’s Encrypt)。整个体验可以用一句话概括:

一次配置,之后几乎不用再操心。

最终,我决定把博客的证书也从原来的腾讯云证书,整体切换为 ACME 的免费证书方案
由于当前网络环境的限制,常规的 ACME 安装方式无法直接使用,例如某些在线脚本或默认 CA 连接会失败。因此在实际操作中,只能采用替代方案来完成证书申请与续期。

1. 使用 Gitee 镜像安装

1. 克隆代码(使用 Gitee 源) 复制并执行这条命令:

Bash

git clone https://gitee.com/neilpang/acme.sh.git

2. 进入目录并安装

Bash

cd acme.sh
./acme.sh --install -m info@mcetf.cn

3. 使命令生效

Bash

source ~/.bashrc

2. 安装成功后,申请并部署证书

一旦上面安装成功(看到 Install success),请立刻执行下面的步骤来申请证书(就是之前的步骤,我再列一遍方便你复制):

1. 申请证书 (路径我根据你刚才的 find 结果填好了)

Bash

acme.sh --issue -d mcetf.cn -d www.mcetf.cn -w /usr/local/lighthouse/softwares/typecho

2. 安装证书到 Nginx 配置目录

Bash

# 确保目录存在
mkdir -p /usr/local/lighthouse/softwares/nginx/conf/ssl

# 安装证书
acme.sh --install-cert -d mcetf.cn \
--key-file       /usr/local/lighthouse/softwares/nginx/conf/ssl/mcetf.cn.key  \
--fullchain-file /usr/local/lighthouse/softwares/nginx/conf/ssl/mcetf.cn.cer \
--reloadcmd     "/usr/local/lighthouse/softwares/nginx/sbin/nginx -s reload"

3. 找到并修改 Nginx 配置文件

这是最后一步,也是最关键的一步。我们需要找到 Nginx 在哪里配置了旧的证书,把路径改成新的。

  1. 查找配置文件在哪里: 腾讯云这个镜像的配置文件通常在这个位置,你可以用 ls 确认一下:

    Bash

    ls /usr/local/lighthouse/softwares/nginx/conf/include/

    (你应该能看到类似 typecho.conf 或者 mcetf.cn.conf 的文件)

    或者直接用这个命令查找包含 "ssl" 配置的文件:

    Bash

    grep -r "ssl_certificate" /usr/local/lighthouse/softwares/nginx/conf/
  2. 编辑配置文件: 假设你找到的文件是 /usr/local/lighthouse/softwares/nginx/conf/nginx.conf 或者 include/typecho.conf。使用 vi 编辑它:

    Bash

    # 例如:
    vi /usr/local/lighthouse/softwares/nginx/conf/nginx.conf
    # (具体文件名看上一步 grep 的结果)
  3. 修改证书路径: 找到 ssl_certificatessl_certificate_key 这两行,修改为我们刚才生成的路径:

    Nginx

    # 修改前可能是指向腾讯云生成的 crt 文件,修改为下面这样:
    ssl_certificate /usr/local/lighthouse/softwares/nginx/conf/ssl/mcetf.cn.cer;
    ssl_certificate_key /usr/local/lighthouse/softwares/nginx/conf/ssl/mcetf.cn.key;
  4. 保存并重启

    • Esc 键,输入 :wq 回车保存退出。
    • 重启 Nginx:

Bash

```
/usr/local/lighthouse/softwares/nginx/sbin/nginx -s reload
```
Theme Jasmine by Kent Liao