冗長性のために2つのDNSプロバイダーを使用します。 2016年のDynDNS DDOS攻撃以来、私たちはこの実践に一人ではないことを期待しています。
Let's Encrypt証明書ボットをDNSチャレンジで使用しようとしています。 DNSプロバイダーが2つあると問題が発生するようです。チャレンジプロセスの一部として、両方のDNSプロバイダーを同一のTXTレコードで更新する必要がありますか?
本当の質問は、Let's Encrypt ACME Certificate Authority(CA)はDNSをどのように検証するかですTXTエントリ?クライアントが行うようにパブリックDNSをクエリするだけですか、それとも、使用しているcertbotプラグインにマップする特定のDNSプロバイダーに対してクエリを実行しますか?前者を疑っています。
プラグインの1つだけを使用して証明書を作成しようとしました。 TXTエントリが作成されましたが、検証に失敗しました。両方のDNSプロバイダーを更新する必要があると思います(または2つのプロバイダーをリンクして変更を同期する方法を理解する必要があります)。
ドキュメント は、まだ試していませんが、同じタイプの複数のプラグインを使用できることを示していないようです。プロバイダーの1つでは、APIにアクセスするためにアップグレードする必要があります。
複数の認証プラグインをチェーンできない場合、自動更新の唯一のオプションは、カスタムスクリプトでプリフックとポストフックを使用して両方のDNSプロバイダーを変更することだと思います。
必要な作業と費用を引き受ける前に(または更新プロセスを手動で管理することを選択する前に)、これを確認していただければ幸いです。
編集:StackExchangeが独自のオープンソースDNSアップデーター dnscontrol を作成して公開していることを知っています。これはフックの前後のスクリプトで使用できます。ただし、当社のプロバイダーの1つはサポートされていません。
デフォルトのcertbotよりも多くの機能を提供するサードパーティのACME(LetsEncrypt)クライアントはたくさんあります。彼らは自分のサイトのリストをここに維持します: ACMEクライアント実装
それらの多くは、ある種のDNSプラグインアーキテクチャを備えており、証明書内の異なる名前に異なるプラグインを指定できるものもあります。しかし、私が知っているものでは、ゾーンごとにプラグインを組み合わせることができません(複数のプラグインが単一のゾーンのTXTレコード)にサービスを提供するようなものです)。
ただし、これを行うための事前/事後フックの作成をすでに検討している場合。 acme.sh のようなものを使用することをお勧めします。事前に書かれたDNSプラグインがたくさんあります。おそらく、2つ以上のプラグインを1つのマージされたプラグインにかなり簡単に組み合わせて、目標を効果的に達成することができます。
Letsencryptは、ランダムリゾルバーにクエリを実行するだけで、TXTエントリを検証します。どのネームサーバーを使用するかについてはまったく制御しません。
chosenServer:= dnsClient.servers [Rand.Intn(len(dnsClient.servers))]
委任することをお勧めします_acme-challenge.example.com.
ゾーンを使用して、自動アクセスできる1つのDNSプロバイダーにアクセスします。これを変更するのにかかる時間よりも長い間、またはletsencrypt証明書が有効である時間よりも長い間、DNSプロバイダーでDoS状況が発生することはありません。したがって、ACMEの冗長性のみをスキップしてもかまいません。ネームサーバーを追加する前と同じように、すべての自動化を使用できます。
コメントに基づく編集:それぞれのcertbotプラグインがエイリアスまたは委任された検証ドメインを正しく処理していないため、この戦略ではcertbotを続行できません。検証レコードのゾーンを変更するように見えるはずですが、検証済みドメインのゾーンを変更しようとしますが、それが非常に有効であり、それらが異なることを無視します。
他のacmeクライアントは、検証レコードの場所を明示的に示す必要がある場合があります acme.shの場合と同様