スタンドアロン方式を使用して、いくつかのドメイン用にいくつかの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チャレンジを使用して新しい証明書を実際に作成するにはどうすればよいですか?
私の元の回答では、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
パラメーターまたは対話モードでドメイン名を指定する必要があるため、スクリプトは素晴らしいオプションです。 。
TL; DR:はい、そうです。
certbotのドキュメント を見てみましょう。
バージョン0.10.0以降、Certbotは、インストールされているすべての証明書の期限切れが近いかどうかを確認し、更新を試みる更新アクションをサポートしています。最も単純な形式は単純です
certbot更新
ここまでは順調ですね。
このコマンドは、30日以内に期限が切れる、以前に取得した証明書を更新しようとします。
これはあなたの質問に答えるはずです。注意:証明書を別のディレクトリに移動する状況でcertbot
がどれだけうまく処理できるかはわかりません。
同じ段落の後半:
他のプラグインまたはオプションを指定しない限り、証明書が最初に発行されたときに使用されたものと同じプラグインとオプションが更新の試行に使用されます。
certonly
とは異なり、renew
は複数の証明書に作用し、それぞれが有効期限が近いかどうかを常に考慮します。
あ、はい; certbot
は、スクリプトを使用せずにすべての証明書を更新する必要があります。
投稿の最初に投稿したコマンドの何が問題になっていますか? certbot -d example.com --manual --preferred-challenges dns certonly
は、dnsチャレンジを使用してexample.comの証明書を取得します。
証明書を作成する手順は次のとおりです。
certbot
コマンドを実行しますcertbot
コマンドを続行しますその完全なプロセスを自動化する場合は、いくつかの DNSプロバイダー をサポートする lego のようなツールを確認することをお勧めします。