头图

Ghost 博客 SSL 证书过期的解决办法

问题

今天访问我的 Ghost 博客 的时候,发现进不去了:

您的连接不是私密连接

网上找的图,不过就是这个样子,当时忘了截图

点击 高级 也没有进去的链接,而且页面地址前面写着”不安全“,证书显示也已经过期一个月了。而且我自己部署的 flask 服务也访问不了了。

原因

Ghost 本身其实会自动 renew 证书,可使用如下命令查看定时任务:

$ sudo crontab -l
14 0 * * * "/etc/letsencrypt"/acme.sh --cron --home "/etc/letsencrypt" > /dev/null

有这个输出就表示会自动 renew。但是根据网上的说法,Ghost 没有及时升级 /etc/letsencrypt/acme.sh 版本,造成 renew 失败之类的。

我看同目录下的 account.conf 中有一行是这样的:

#AUTO_UPGRADE="1"

自动升级默认是被注释掉的,不过我也不能百分比确定取消注释就会自动升级。具体我也不是很懂,就不多说了,就提一嘴。

解决

所以总而言之,就是要升级 acme.sh 然后重启 Ghost

  1. 进入 acme.sh 目录:

    $ cd /etc/letsencrypt
  2. 备份原文件:

    $ sudo cp acme.sh acme.sh.bk
  3. 升级:

    $ sudo ./acme.sh --upgrade
    ./acme.sh: line 6192: cd: /home/username/.acme.sh: No such file or directory
    [Fri Apr 30 09:47:22 CST 2021] Installing from online archive.
    [Fri Apr 30 09:47:22 CST 2021] Downloading https://github.com/Neilpang/acme.sh/archive/master.tar.gz
    touch: cannot touch '/home/username/.acme.sh/http.header': No such file or directory
    [Fri Apr 30 09:48:36 CST 2021] Extracting master.tar.gz
    [Fri Apr 30 09:48:36 CST 2021] It is recommended to install socat first.
    [Fri Apr 30 09:48:36 CST 2021] We use socat for standalone server if you use standalone mode.
    [Fri Apr 30 09:48:36 CST 2021] If you don't use standalone mode, just ignore this warning.
    [Fri Apr 30 09:48:36 CST 2021] Installing to /home/username/.acme.sh
    [Fri Apr 30 09:48:36 CST 2021] Installed to /home/username/.acme.sh/acme.sh
    [Fri Apr 30 09:48:36 CST 2021] Good, bash is found, so change the shebang to use bash as preferred.
    [Fri Apr 30 09:48:37 CST 2021] OK
    [Fri Apr 30 09:48:37 CST 2021] Install success!
    [Fri Apr 30 09:48:37 CST 2021] Upgrade success!
  4. 升级后的文件是放在 home 目录下的,所以要 cp 过来:

    $ sudo cp ~/.acme.sh/acme.sh .
  5. 手动执行一次定时任务。注意加上 --force,原因:sudo · acmesh-official/acme.sh Wiki

    $ sudo "/etc/letsencrypt"/acme.sh --cron --home "/etc/letsencrypt"
    [Fri Apr 30 09:53:20 CST 2021] ===Starting cron===
    [Fri Apr 30 09:53:21 CST 2021] Renew: 'northcloudgate.com'
    [Fri Apr 30 09:53:22 CST 2021] Using CA: https://acme-v02.api.letsencrypt.org/directory
    [Fri Apr 30 09:53:22 CST 2021] Single domain='northcloudgate.com'
    [Fri Apr 30 09:53:22 CST 2021] Getting domain auth token for each domain
    [Fri Apr 30 09:53:25 CST 2021] Getting webroot for domain='northcloudgate.com'
    [Fri Apr 30 09:53:25 CST 2021] Verifying: northcloudgate.com
    [Fri Apr 30 09:53:30 CST 2021] Success
    [Fri Apr 30 09:53:30 CST 2021] Verify finished, start to sign.
    [Fri Apr 30 09:53:30 CST 2021] Lets finalize the order.
    [Fri Apr 30 09:53:30 CST 2021] Le_OrderFinalize='https://acme-v02.api.letsencrypt.org/acme/finalize/64051473/9381845272'
    [Fri Apr 30 09:53:31 CST 2021] Downloading cert.
    [Fri Apr 30 09:53:31 CST 2021] Le_LinkCert='https://acme-v02.api.letsencrypt.org/acme/cert/03175a17da415b526b37dedf518750770ddc'
    [Fri Apr 30 09:53:32 CST 2021] Cert success.
    -----BEGIN CERTIFICATE-----
    CERTIFICATE CONTENT==
    -----END CERTIFICATE-----
    [Fri Apr 30 09:53:32 CST 2021] Your cert is in  /etc/letsencrypt/northcloudgate.com/northcloudgate.com.cer
    [Fri Apr 30 09:53:32 CST 2021] Your cert key is in  /etc/letsencrypt/northcloudgate.com/northcloudgate.com.key
    [Fri Apr 30 09:53:32 CST 2021] The intermediate CA cert is in  /etc/letsencrypt/northcloudgate.com/ca.cer
    [Fri Apr 30 09:53:32 CST 2021] And the full chain certs is there:  /etc/letsencrypt/northcloudgate.com/fullchain.cer
    [Fri Apr 30 09:53:32 CST 2021] Run reload cmd: nginx -s reload
    [Fri Apr 30 09:53:32 CST 2021] Reload success
    [Fri Apr 30 09:53:32 CST 2021] ===End cron===
  6. 重启 Ghost:

    $ cd /var/www/ghost
    $ ghost restart
    + sudo systemctl is-active ghost_northcloudgate-com
    + sudo systemctl restart ghost_northcloudgate-com
    ✔ Restarting Ghost

然后,就又可以看到安全的小白锁了,证书也有效了:

博客恢复

彩蛋

在 Google ”您的连接不是私密连接“这个问题的时候,意外发现了一个神奇操作:

image.png

即,当你遇到“您的连接不是私密连接”错误的时候,直接在当前页面“凭空”输入 thisisunsafe,就可以进去页面了。注意是凭空,不是地址栏,你是看不到你所输入的东西的。

而且根据 reddit 上的说法,

  • 这个 bypass word 之前是 badidea,再之前是 danger
  • Chrome 65 的时候把 badidea 改成了 thisisnotsafe 又改成了 thisisunsafe。而且还用 base64 加密了。

Reddit

bypass word 更改

此外前文提到的 flask 服务也恢复正常了。

Reference

END

NLP and Python developer, sometimes datavis. he/him.

88 声望
0 粉丝
0 条评论
推荐阅读
使用 Transformers 在你自己的数据集上训练文本分类模型
之前只闻 transformers 超厉害超好用,但是没有实际用过。之前涉及到 bert 类模型都是直接手写或是在别人的基础上修改。但这次由于某些原因,需要快速训练一个简单的文本分类模型。其实这种场景应该挺多的,例如...

secsilm阅读 965

封面图
开源问答社区软件 Answer 1.0 正式版发布!
这是继 10 月 Alpha 版本发布后的首个正式版本。你可以使用 Answer 高效地搭建一个问答知识社区,并用于产品技术问答、客户支持、用户交流等场景。

AnswerDev7阅读 2.4k评论 1

封面图
2022风云变幻的一年,我开始思考生活的意义
2022 年对所有人来说,是束缚的一年、也是艰难的一年。这一年疫情起起伏伏,商场歇业,饭店关门,在工作之余吃一碗热乎的刀削面也成了奢侈。对一个北漂来说,“回家”和“进京”从未如此艰难。假期好不容易回趟家,结...

杨成功9阅读 1.4k评论 1

封面图
技术社区的朋友们,让我们在 2050 团聚吧!
提到 2050 你会想到什么? ——第一批 00 后步入 50 岁,刚刚出生的孩子们成为这个世界的中流砥柱;如科幻般的世界:上天下地、无尽探索、发达的医疗、先进的交通;

SegmentFault思否5阅读 12.9k评论 1

世界杯火热进行中, 用一个div画个足球场助助兴
四年一度的世界杯正在火热进行中,有没有熬夜看你喜欢的队伍比赛呢。在这欢庆的氛围中,我决定用代码参与一把世界杯,擦边参与,那就是用CSS画一个足球场,正常的用CSS布局肯定是非常easy的,所以决定只用一个div...

南城FE7阅读 1.1k评论 2

封面图
百度搜索首届技术创新挑战赛有奖征文|分享百度搜索大赛
有人举手发问:海克斯科技是什么梗?还有人举手发问:KFC🍗打工可以偷吃几块不? 爱美的人问:怎么去除很早一以前的痘印,那块有点黑。北方的朋友也会向南方的朋友发问:大蟑螂🪳是什么呀?南方的朋友也会对奇北方...

SegmentFault思否5阅读 15.7k

封面图
工作 7 年的老程序员,现在怎么样了
我考上大学(2010年)之前也是这么过的。第一年哥哥给买了个一台华硕笔记本电脑。那个年代买华硕的应该不少,我周边就好几个。有了电脑之后,室友就拉着我一起 cs,四个人组队玩,那会觉得很嗨,上头。

六七十三4阅读 1.2k评论 5

NLP and Python developer, sometimes datavis. he/him.

88 声望
0 粉丝
宣传栏