経緯
一応ドメインを持っていて、turai.work ドメインを持っているのだが、Let's EncryptのワイルドカードSSL証明書で運用している。
期限も近づいてきたし、certbot-autoコマンドで更新するか〜と思って更新を実行したのだが
/root/certbot/certbot-auto renew --force-renewal
以下のようなエラーが
Saving debug log to /var/log/letsencrypt/letsencrypt.log - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Processing /etc/letsencrypt/renewal/turai.work.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.',) Attempting to renew cert (turai.work) from /etc/letsencrypt/renewal/turai.work.conf produced an unexpected error: 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.',). Skipping. All renewal attempts failed. The following certs could not be renewed: /etc/letsencrypt/live/turai.work/fullchain.pem (failure) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - All renewal attempts failed. The following certs could not be renewed: /etc/letsencrypt/live/turai.work/fullchain.pem (failure) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 renew failure(s), 0 parse failure(s)
なんで?????ちなみに他にワイルドカードではないLet's EncryptのSSL証明書もあるのだが、そっちは上記のコマンドで正常に更新できた。
エラー原因
どうやらワイルドカードSSL証明書の場合はイレギュラーで、更新のたびにDNSの認証が必要らしい。メンドクセーーーー
が、更新しないとエラーになって悲しいことになるのですることに。てかDNS更新必要ならcronで定期実行できないじゃんと嘆いてたらcertbot-dns-route53なるプラグインを発見
certbot用のプラグインで、AWSのキーを予めセットしておけば更新時に自動で処理してくれる。素晴らしい
ってことで導入
certbot-dns-route53のインストール
通常 /opt/eff.org/certbot/venv/bin/pip にcertbotが使っているPythonの環境が入っているのでその中のpipを使ってインストール
/opt/eff.org/certbot/venv/bin/pip install certbot-dns-route53
インストールが完了したらプラグイン一覧で確認
./certbot/certbot-auto plugins
以下のような項目があればインストールに成功している
* dns-route53 Description: Obtain certificates using a DNS TXT record (if you are using AWS Route53 for DNS). Interfaces: IAuthenticator, IPlugin Entry point: dns-route53 = certbot_dns_route53.dns_route53:Authenticator
AWSのキー取得
AWSのIAM管理画面へログインして新しいIAMを作成、Route53の権限を設定してアクセスキーとシークレットキーを取得
rootコマンドで実行するので/root/.aws/credentialsに以下を作成
[default] aws_secret_access_key = ************* aws_access_key_id = ******
あとはdns-route53のプラグインを使用することを明示的に書いて更新実行
/root/certbot/certbot-auto renew --force-renewal --no-self-upgrade --server https://acme-v02.api.letsencrypt.org/directory --agree-tos --dns-route53
Congratulations, all renewals succeeded. The following certs have been renewed: /etc/letsencrypt/live/turai.work/fullchain.pem (success)
って言われたら成功 やったね
あとの詳しいことは公式ドキュメント参照