Discourse の証明書更新失敗

LetsEncryptの更新が失敗することをここに確認します。私は何年もセルフホスト型のDiscourseを運用していますが、過去数ヶ月で非常に奇妙なことに2回連続で更新に失敗しました。2回目は今朝のことで、それで調査を始めました。

以下の2つのコミットに原因があることを突き止めました。

および関連するリンクされた行:

問題は2つあると思います。

第一に、return 301 https://${DISCOURSE_HOSTNAME}$request_uri;$request_uri なしで return 301 https://<MY SERVER NAME> に変換されてしまいます。セルフホスト型インストールと、先週セットアップされた友人のセルフホスト型インストールで確認しました。Discourseのテンプレートがどのように機能するのか理解していないため、なぜそれが削除されるのか分かりません。

第二に、@lessLostが述べたように、301リダイレクトがlocationブロックの外にあります。サーバーレベルのリダイレクトはすべてのlocationブロックを上書きすると考えています。LetsEncryptは更新にhttpを使用します。しかし、curl -I http://YOUR_DOMAIN/.well-known/acme-challenge/test で試みると、期待される動作である404(リダイレクトではなく404を期待している)の代わりに、httpsへの301が返されます。

セルフホスト型インストールでは手動で修正しましたが、更新すると私の変更が上書きされると予想しています。残念ながら、テンプレートについて十分理解していないため、プルリクエストを送信できません(@pfaffman — そうでなければそれもやります)。

追記:

これは誤解だと思います —

LetsEncryptはデフォルトでhttpを使用すると確信しています(当然ながら、証明書が期限切れの場合、更新できないため!)。しかし、301をサーバーブロックレベルに配置すると、すべてのリクエストがhttpsに301されるようになり、この更新戦略と矛盾します。

「いいね!」 1