letencrypt ワイルドカード証明書が certbot ツールを使用して自動的に更新 (更新) できないことが心配ですか?このツールが役立ちます!
申請または更新に関係なく、ワイルドカード証明書である限り、申請者のドメイン名は dns-01 を使用してのみ検証できます。つまり、certbot オペレーターは手動で DNS TXT レコードを追加する必要があります。
ワイルドカード証明書を自動的に更新するために Cron (1 1 */1 * * root certbot-auto renew など) を作成した場合、Cron は TXT レコードを自動的に追加できないため、更新操作は失敗します。
certbot は、シェル スクリプトを作成して DNS サービス プロバイダーの API インターフェイスを呼び出し、TXT レコードを動的に追加できるフックを提供するため、手動介入の必要がなくなります。
certbotが公式に提供しているプラグインとフックのサンプルの中には、国内のDNSサーバー向けのサンプルがなかったので、現在Alibaba Cloud DNS 、 Tencent Cloud DNS 、 Huawei Cloud NDS 、 GoDaddyをサポートしているツールを作成しました(certbotには、公式同等のプラグイン)。
いくつかの PR が最近マージされましたが、テストされていません。ご質問がありましたら、フィードバックをお願いします。
1: ダウンロード
$ git clone https://github.com/ywdblog/certbot-letencrypt-wildcardcertificates-alydns-au
$ cd certbot-letencrypt-wildcardcertificates-alydns-au
$ chmod 0777 au.sh
2: 構成
(1)ドメイン.ini
domain.ini ファイルにルート ドメイン名が含まれていない場合は、自分で追加してください。
(2) DNS API キー:
この API キーは何を意味するのでしょうか? API を介して Alibaba Cloud DNS および Tencent Cloud DNS レコードを操作する必要があるため、ドメイン ネーム サービス プロバイダーから API キーを取得し、au.sh ファイルで構成する必要があります。
(3) 動作環境の選択
現在、このツールは 5 つの動作環境とシナリオをサポートしており、これらはフック ファイルとパラメータを通じて呼び出されます。
独自のサーバー環境とドメイン名サービス プロバイダーに応じて、任意のフック シェル (対応するパラメーターを含む) を選択します。具体的な使用方法については、以下を参照してください。
3: 証明書を申請する
エラーをテストします。
$ ./certbot-auto certonly -d *.example.com --manual --preferred-challenges dns --dry-run --manual-auth-hook "/脚本目录/au.sh php aly add" --manual-cleanup-hook "/脚本目录/au.sh php aly clean"
デバッグ: DNS API の操作中に、API トークンのアクセス許可が不十分であるなど、一連の問題が発生する可能性があります。関連する問題が発生した場合は、/var/log/certd.log を確認してください。
重要な説明: --manual-auth-hook と --manual-cleanup-hook には 3 つのパラメータがあります。
たとえば、Python 環境を選択する場合は、--manual-auth-hook 入力を「/script directory/au.sh python aly add」に変更し、--manual-cleanup-hook 入力を「/」に変更できます。スクリプト ディレクトリ/au.sh Python はクリーンです」
正しいことを確認したら、実際に実行します (--dry-run パラメーターを削除します)。
# 实际申请
$ ./certbot-auto certonly -d *.example.com --manual --preferred-challenges dns --manual-auth-hook "/脚本目录/au.sh php aly add" --manual-cleanup-hook "/脚本目录/au.sh php aly clean"
パラメータの説明 (心配する必要はありません):
複数のドメイン名のワイルドカード証明書 (1 つの証明書に結合、 SAN ワイルドカード証明書とも呼ばれる) を申請する場合は、次のように複数の -d パラメータを直接入力します。
$ ./certbot-auto certonly -d *.example.com -d *.example.org -d www.example.cn --manual --preferred-challenges dns --dry-run --manual-auth-hook "/脚本目录/au.sh php aly add" --manual-cleanup-hook "/脚本目录/au.sh php aly clean"
1: マシン上のすべての証明書を更新します
$ ./certbot-auto renew --manual --preferred-challenges dns --manual-auth-hook "/脚本目录/au.sh php aly add" --manual-cleanup-hook "/脚本目录/au.sh php aly clean"
2: 特定の証明書を更新する
まず、マシン上に存在する証明書の数を確認します。
$ ./certbot-auto certificates
図に示すように、多くの証明書が表示されます。
証明書名 (simplehttps.com など) を覚えてから、次のコマンド更新を実行します。
$ ./certbot-auto renew --cert-name simplehttps.com --manual-auth-hook "/脚本目录/au.sh php aly add" --manual-cleanup-hook "/脚本目录/au.sh php aly clean"
ファイル /etc/crontab を編集します。
#证书有效期<30天才会renew,所以crontab可以配置为1天或1周
1 1 */1 * * root certbot-auto renew --manual --preferred-challenges dns --manual-auth-hook "/脚本目录/au.sh php aly add" --manual-cleanup-hook "/脚本目录/au.sh php aly clean"
certbot マシンが Web サービス (nginx、Apache など) を実行するマシンと同じである場合は、証明書が正常に更新された後、対応する Web サーバーを起動し、次の crontab を実行できます。
# 注意只有成功renew证书,才会重新启动nginx
1 1 */1 * * root certbot-auto renew --manual --preferred-challenges dns --deploy-hook "service nginx restart" --manual-auth-hook "/脚本目录/au.sh php aly add" --manual-cleanup-hook "/脚本目录/au.sh php aly clean"
注: この方法は 1 台のマシンでのみ実行することをお勧めします。証明書を複数の Web サーバーに同期する場合は、現在開発中の別のソリューションが必要です。主な目的は証明書をクラスター サーバーに同期することです。
公式アカウントQRコード:
「HTTPS の詳細な紹介: 原則から実践まで」QR コード: