HTTPSを介してcertbot検証を暗号化しましょう


16

Certbot webrootプラグインのドキュメントから

webrootプラグインは、でリクエストしたドメインごとに一時ファイルを作成することで機能します${webroot-path}/.well-known/acme-challenge次に、Let's Encrypt検証サーバーがHTTP要求を作成して、要求された各ドメインのDNSがcertbotを実行しているサーバーに解決されることを検証します。

私用のホームサーバーでは、ポート80が無効になっています。つまり、ルーターでポート転送が有効になっていません。私はそのポートを開くつもりはありません。

ドメインの所有権を検証するために、検証サーバーがHTTP要求ではなくHTTPS(ポート443)要求を行う必要があることをcertbotに伝えるにはどうすればよいですか?

検証サーバーは、デフォルトですでにHTTPを使用しているため、ホームサーバーの証明書を検証する必要さえありません。自己署名証明書、または更新の準備ができている証明書があるかもしれませんが、それは問題ではありません。

現在、証明書を作成/更新するためにポート80の転送とそのサーバーを有効にする必要がある状況にあります。これにより、cronjobを使用して証明書を更新することはできません。十分な作業があれば十分ですが、既に443でリッスンしているサーバーがあり、これも同様に機能します。

回答:


8

https://community.letsencrypt.org/t/shouldnt-verification-via-dns-record-be-a-priority/604/47で報告されているように、letsencrypt.shアップデーターはDNSによる検証をサポートしています。これを実装しているアップデータースクリプトはほとんどないようです。ただし、HTTPメソッドは初期構成用に実装するのが最も簡単です。

お持ちのスクリプトは、更新にTNS SNIまたは事前キーの所有の証明を使用できます。仕様はhttps://tools.ietf.org/html/draft-ietf-acme-acme-01#section-7.5にあります。この場合、HTTPを有効にする必要はありません。


おかげで、DNSベースの検証を忘れてしまいました。ドキュメントがほとんど言及していないので、それに関する情報を見つけることは比較的困難でした。Namecheapにはフックがないので、今すぐ実装して、動作を確認してみます。期待どおりに機能する場合は回答を受け入れますが、現在更新するドメインがないため、時間がかかる場合があります。それ以外の場合は、サーバーがcronjob可能なラッパーとして機能するように、-webrootコマンドをサーバーにベイクする必要があります。
ダニエルF

チェックしたところ、NamecheapのAPIはかなり悪いです(すべてのレコードを上書きして追加または変更します)。この場合、DNSはオプションではありません。また、他のレジストラも使用しているため、さらに複雑になります(APIキー管理)。NamecheapのAPIキーを使用すると、新しいドメインを登録したり、ドメインを転送したりすることもできます。これはFKとしては安全ではありません。
ダニエルF

@DanielF更新にはDNS検証もHTTP検証も使用されないと予想します。サーバーは既存の証明書にTLS SNIを渡す必要があるため、どちらも必要ありません。要求は既存の証明書で署名できます。どちらでも十分です。DNSおよびHTTPは、サインアップに適した方法です。最初の証明書が更新されるまで、30日以内に問題を解決する必要があります。
BillThor
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.