TLS 证书过期 第二轮

正在从命令行进行手动重建,因为证书似乎又过期了。

分享给可能遇到此问题的其他人。

1 个赞

不应该再发生这种情况了。十二月份有一个修复:

2 个赞

其中一个论坛的证书过期了,另一个则没问题。我能确定的主要区别是,出问题的论坛是通过 Web 更新的,而没问题的论坛在 Web 更新时停滞了,我选择通过 CLI(命令行界面)更新来恢复。

先前版本:2025.12.0-latest (b10ea7929f),如 11 月 28 日所述。

12 月 23 日,我对出问题的论坛的 nginx 脚本进行了修补,但后来发现修补失败了。但我没有重启或通知 nginx,所以这可能毫无意义。对于后来没有出问题的论坛,我什么都没做。

可能是我把它弄坏了而不是修好了。但这是操作记录:

root@ubuntu-4gb-hel1-1-app:/# docker exec -it app bash
root@ubuntu-4gb-hel1-1-app:/# sed -i '/301/s/;/$request_uri;/' /etc/nginx/conf.d/outlets/before-server/20-redirect-http-to-https.conf
root@ubuntu-4gb-hel1-1-app:/# cat /etc/nginx/conf.d/outlets/before-server/20-redirect-http-to-https.conf
server {
  listen 80;
  listen [::]:80;

  location ~ /.well-known {
    root /var/www/discourse/public;
    allow all;
  }

  return 301 https://forum.example.com$request_uri;
}

1 月 1 日,我更新了两个论坛,一个通过 Web,另一个通过 CLI。

1 月 19 日或可能是 20 日,出问题的论坛的证书过期了,Web 无法访问该论坛。

当我注意到时,我重启了主机——没有做任何其他操作——然后出现了一个新证书:
签发于 2026 年 1 月 20 日星期二 12:04:25

非常非常奇怪的是,我修补的文件似乎在重启时恢复到了未修补的状态,尽管这个服务器——两个服务器——都已经更新过了。我想了解这是怎么发生的。

root@ubuntu-4gb-hel1-1:~# docker exec -it app bash
root@ubuntu-4gb-hel1-1-app:/# ls -l /etc/nginx/conf.d/outlets/before-server/20-redirect-http-to-https.conf
-rw-r--r-- 1 root root 173 Jan 20 13:05 /etc/nginx/conf.d/outlets/before-server/20-redirect-http-to-https.conf
root@ubuntu-4gb-hel1-1-app:/# cat /etc/nginx/conf.d/outlets/before-server/20-redirect-http-to-https.conf
server {
  listen 80;
  listen [::]:80;

  location ~ /.well-known {
    root /var/www/discourse/public;
    allow all;
  }

  return 301 https://forum.techshedfrome.org;
}

作为参考,运行正常的服务器如下所示:

root@rc-debian-hel:~# docker exec -it app bash
root@rc-debian-hel-app:/# ls -l /etc/nginx/conf.d/outlets/before-server/20-redirect-http-to-https.conf
-rw-r--r-- 1 root root 185 Jan  1 19:57 /etc/nginx/conf.d/outlets/before-server/20-redirect-http-to-https.conf
root@rc-debian-hel-app:/# cat /etc/nginx/conf.d/outlets/before-server/20-redirect-http-to-https.conf
server {
  listen 80;
  listen [::]:80;

  location ~ /.well-known {
    root /var/www/discourse/public;
    allow all;
  }

  return 301 https://retrocomputingforum.com$request_uri;
}

运行正常的站点似乎在重建或重启时获得了新证书:

签发于 2026 年 1 月 1 日星期四 18:59:22
到期于 2026 年 4 月 1 日星期三 19:59:21

现在两者都在运行

Discourse 2026.01.0-latest - https://github.com/discourse/discourse version a9008966f0b339b5a00c1629bc61eb2ff8ad812a