SSL 長さゼロ .cer ファイル

こんにちは。

公式のGitHubページから、Ubuntu 22.04 Server LTS(最新のAWS AMIから)にDiscourseをインストールしようとしています。ネットワークは設定済みで、ホストとElastic IPにFQDNが割り当てられています。

すべて正常にデプロイされ、ポート80のnginxインスタンスに接続できます。しかし、ポート443経由で接続できず、nginxのerror.logで繰り返されるエラーは次のとおりです。

> 2023/10/09 08:41:12 [emerg] 9342#9342: 証明書 "/shared/ssl/discourse.xxxx.com.cer" をロードできません: PEM_read_bio_X509_AUX() が失敗しました (SSL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)

さらに調査すると、.cerファイルがゼロバイトであることがわかりました。場所は次のとおりです。

./shared/standalone/ssl/discourse.XXXX.com.cer

ログファイルコンテナ: app:$/var/log/nginx

この問題に遭遇したことがある人はいますか?すべてsudo資格情報で実行されているため、権限の問題ではないようです。

本当に困っています。

編集:/shared/sslおよびletsencryptフォルダを削除し、再構築と再インストールの両方を試しましたが、結果は同じでした。

discourse-setup を実行しましたか? DNS がサーバーを指していることとポートが開いていることを確認するために、それ自体に接続しようとしますが、これは単純なテストです。

DNS とポートが正しく構成されていない状態で再構築を数回以上実行すると、Let’s Encrypt のレート制限に達します。その場合(おそらくそうでしょう)、1 週間待つか、別のサブドメインを使用する必要があります(または、目的のサブドメインと別のサブドメインの証明書を要求するための複雑な手順に従う必要があります)。

docker logs app を実行すると、acme が証明書を取得できない場所を確認できると思います。

ジェイソン様

私も同じ問題に遭遇し、何日も何時間もかけて何が壊れていて、どうすれば直せるのかを突き止めました。この情報が、あなたや同じ問題に直面している他の人々のお役に立てば幸いです。

./discourse-setup を実行中に、このエラーが発生しました。

** FAILED TO BOOT BOOTSTRAP ** please scroll up and look for earlier error

このエラーを修正するために、多くの試みをしました。

./discourse-doctor を実行しましたが、効果はありませんでした。
./launcher rebuild app を実行しましたが、効果はありませんでした。
コンテナ内でトラブルシューティングを試みました。 docker exec -it app /bin/bash
コンテナイメージにはトラブルシューティングのためのツールが限られていたため、このコマンドでログを読みました。
less /var/log/nginx/error.log
ここで、[emerg] 2832#2832: cannot load certificate を含む多くのメッセージを見ました。
何らかの理由で決定的な原因を見つけることができませんでしたが、コンテナを終了してホストから ./launcher logs app と入力したところ、
より多くのデータを確認でき、突然このエラーを見つけました。
“Error creating new order :: too many certificates (5) already issued for this exact set of domains in the last 168 hours , retry after 2024-08-10T12:58:12Z:”
この問題の回避策をグーグルで検索しましたが、指定された時間待つことにしました。
待機時間が経過した後、再度 ./launcher rebuild app を試しました。
今回はうまくいき、SSL証明書( *.cer )が正常に作成され、サイトがアップしました。

教訓は、空の *.cer 証明書を取得した場合は、ホストからこのコマンドを使用してコンテナログを確認する必要があるということです。
root@host:/var/discourse# ./launcher logs app
ログをスクロールして、“too many certificates” を検索してください。
これを事前に知っていれば、数日間の調査を節約できたかもしれません :frowning:

私の回答における前提条件:

  • ホストがDNSプロバイダーで正しく設定されていることを確認しました。
  • 登録メールアドレスとSMTP設定を確認しました。
  • /var/discourse/containers/app.yml が正しく入力されていることを確認しました。
「いいね!」 1