certbotとDNSチャレンジを使用してドメインを更新する


9

スタンドアロンの方法を使用して、いくつかのドメインのSSL証明書をいくつか作成しました。サーバー統合なしで、証明書のみに関心があります。

彼らは今更新のためです。だから、私は走った:

certbot -d example.com --manual --preferred-challenges dns certonly

そして、各ドメインの指示に従いました(各ドメインに必要なDNSエントリを追加します)。このようにして、サーバーを停止して新しい証明書を取得する必要がなくなりました。

私の(漠然とした)すべてについての理解は、DNSチャレンジを使用して証明書を自動的に更新する現在の方法がないことです。または、「手動」の方法で証明書を自動的に更新できないのでしょうか。

とにかく、私はこのスクリプトを書きました。

#!/bin/bash

for i in renewal/*;do
  n=${i:8:-5};
  echo $n;
  # echo "\n" | certbot --text --agree-tos -d $n --manual --preferred-challenges dns --expand --renew-by-default  --manual-public-ip-logging-ok certonly;
done

この時点で、renewalディレクトリ内のすべてのドメインには以下が含まれています。

オーセンティケーター=手動

そして:

pref_challs = dns-01

質問:

  • さて...「certbot renew」を実行すると、スクリプトを使用せずにすべて自動的に更新されますか?

  • DNSチャレンジを使用して新しい証明書を実際に作成するにはどうすればよいですか?

回答:


4

更新された回答(以下の元の回答を参照)

私の最初の回答では、renewコマンドを使用するときに提供したスクリプトは必要ないという事実に焦点を当てました。ただし、renewコマンドが実際にこのシナリオに適用できるかどうかは確認していません。

コメント状態のcdhowieとbobpaul certbot renewは、非インタラクティブモードであり、DNSチャレンジと組み合わせて、--manual-auth-hookパラメーターを介してスクリプトを提供する必要があります。このスクリプトは、TXTレコードを設定できる必要があります。--manual-cleanup-hookパラメータを介して後でクリーンアップする別のスクリプトを提供することもできます。

これらのパラメーターを指定した場合、プロセス全体が対話なしで自動的に実行されます。

これらのパラメーターを指定しない場合、certbotは失敗します。

/opt/certbot # certbot renew --force-renewal
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/foobar.w9f.de.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Could not choose appropriate plugin: The manual plugin is not working; there may be problems with your existing configuration.
The error was: PluginError('An authentication script must be provided with --manual-auth-hook when using the manual plugin non-interactively.',)

手動モードで証明書を更新する場合は、証明書の取得に使用したコマンドを再実行する必要があります。この場合、certonlyコマンドは現在の証明書/構成を調べず、代わりに-dパラメーターまたは対話モードでドメイン名を指定する必要があるため、スクリプトは優れたオプションです。


「certbot renew」を実行すると、スクリプトを使用せずにすべて自動的に更新されますか?

TL; DR:はい、そうです。

certbotドキュメントを見てみましょう:

バージョン0.10.0以降、Certbotは、インストールされているすべての証明書の期限切れが近いかどうかを確認し、更新を試みる更新アクションをサポートしています。最も単純な形式は単純です

certbot更新

ここまでは順調ですね。

このコマンドは、30日以内に期限が切れる、以前に取得した証明書を更新しようとします。

これはあなたの質問に答えるはずです。注意:certbot証明書を別のディレクトリに移動する状況をどれだけうまく処理できるかはわかりません。

同じ段落の後半:

他のプラグインまたはオプションを指定しない限り、証明書が最初に発行されたときに使用されたものと同じプラグインとオプションが更新の試行に使用されます。とは異なりcertonlyrenew複数の証明書に作用し、常にそれぞれが有効期限に近いかどうかを考慮します。

あ、はい; certbotスクリプトを使用せずに、すべての証明書を更新する必要があります。


最初にDNSチャレンジを使用して実際に新しい証明書を作成するにはどうすればよいですか?

投稿の最初に投稿したコマンドの何が問題になっていますか? certbot -d example.com --manual --preferred-challenges dns certonlydnsチャレンジを使用してexample.comの証明書を取得します。

証明書を作成する手順は次のとおりです。

  • certbot投稿したコマンドを実行する
  • コマンドがDNS TXTレコードを表示するのを待ちます
  • そのTXTレコードを作成する
  • certbotコマンドを続ける
  • 指定したドメインの証明書を取得します
  • TXTレコードを削除します(作成にのみ必要であり、更新には新しいレコードが必要であるため)

その完全なプロセスを自動化したい場合は、いくつかのDNSプロバイダーをサポートするレゴのようなツールを確認することをお勧めします


ファンタスティック、数か月で機能するかどうかをお知らせします!
Merc


ええ、だから一般的には使用しないでください--manual。の全体的な目的--manualは、インタラクティブモードを強制することです。ただし、awsやdigitaloceanなどのDNSプラグインをオプションcertonlyなしで使用--manualすると、90日前に自動的に更新されます。
bobpaul

入力をありがとう、私は答えを更新しました。
マルト
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.