Laravel Forge + Laravel-echo-server + Let's Encrypt:如何避免 ERR_CERT_DATE_INVALID

问题描述 投票:0回答:2

简介

我遇到了一个问题,我有 laravel-echo-server 作为守护进程在 Laravel Forge 服务器上运行。

问题是,一段时间后,当 echo 尝试连接到服务器时,每个用户都会收到 ERR_CERT_DATE_INVALID 错误。但是,我的网站强制使用 https,页面正在加载且安全。我验证了我的证书日期,一切都很好。

此后我终于意识到监督

laravel-echo-server start
的守护进程很久以前就在运行了。所以我手动重新启动它,一切又开始正常工作。

所以,我认为问题是在第一次启动时,laravel-echo-server 获取证书并将其缓存。然后,如果不需要重新启动并且当前日期晚于有效日期,即使 Forge 自动续订我们的证书,我们也会开始收到错误,因为 laravel-echo-server 不会在续订时重新加载证书。

问题

如何续订 laravel-echo-server 使用的证书以避免出现 ERR_CERT_DATE_INVALID 错误?

服务器

  1. 在 Laravel Forge 上使用 Deamon
  2. 使用 laravel-echo-server
  3. 让我们在 Laravel Forge 上加密 SSL 证书
laravel laravel-echo laravel-forge
2个回答
1
投票

首先要知道Laravel Forge什么时候更新我们的证书?
回复是那里

Forge 将在每周日的随机时间和分钟自动开始更新您的证书,以避免压垮 Let’s Encrypt 服务器。

之后是为了知道证书的有效期是多长时间。使用Google Chrome工具后,我发现证书的有效期为90天。我没有任何其他来源。

从那时起,强制关闭 laravel-echo-server 将使我们的守护进程重新启动它并获取新证书。一个简单的计划工作就可以解决这个问题。

//app/Console/Kernel.php
    $schedule->call(function () {
        shell_exec('laravel-echo-server stop');
    })->weeklyOn(1, '1:00');

我把工作定在周一凌晨 1 点。由于 Forge 在周日随机进行,所以我选择周一以确保证书已更新。

通过每周这样做,我将确保 laravel-echo-server 使用的证书永远不会过时。


0
投票

您提出的解决方案对我来说不起作用

我有相同的服务器设置:

  1. 在 Laravel Forge 上使用 Deamon
  2. 使用 laravel-echo-server
  3. 让我们在 Laravel Forge 上加密 SSL 证书

对我有用的解决方案是在 Forge 中创建一个计划的 CRON 作业,它每个月都会杀死该进程。 由于 daemon 确保进程再次启动,我认为这个 解决方案对于生产来说是安全的(当然,如果您的应用程序不允许 laravel-echo-server 每月几秒的停机时间,则有例外)。

我的复发是每月的第一天。 证书每 90 天更新一次,因此重新启动 3 次该过程应该足够了。

步骤:

  1. 转到 Laravel Forge 服务器
  2. 新预定工作
  3. 对于命令使用:
    pkill -f "laravel-echo-server"
  4. 供用户使用forge
  5. 对于频率,选择自定义并输入 CRON 自定义计划。我使用了
    00 03 1 * *
    (这意味着每月第一天的 3 小时 00 分钟运行。
© www.soinside.com 2019 - 2024. All rights reserved.