ログイン

[備忘録]Certbotで証明書更新えらー

作成日 2024-01-16 20:24:06
最新更新日 2025-11-23 21:54:36
#備忘録 #Certbot #Let's encrypt #証明書 #SSL #TLS
こんなエラーがでて困った
Failed to renew certificate ai-chan-fan-site.me with 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.')

解決方法(コレダメ)


sudo certbot certonly --manual -d ドメイン名
でできるのだ
そのあとにsudo certbot renewしよう

追記(2025年11月23日) 解決方法


要はこのエラーは「おみゃあマニュアルで証明書発行したから、『更新しろ』と言われてもどうやってやればいいかわかんないよ?」
という意味です。

ならば簡単、マニュアルでしなければ良い。
(マニュアルでしたいならACMEプロトコルを理解して更新するアプリを自作してくださいまし)

2種類の認証方法


「おいCertbot、rumiserver.comの証明書を発行しろ」と言っても、
「お前そのドメインの所有者なの?」という話になります。
これはCertbotが疑っている訳ではなく、Let'sEncryptなどの認証局が疑っています、
貴様が他人のドメインで悪いことをしようとする犯罪者であるということを。

朗報です、貴様が身の潔白を証明する手段は2つあります!
1・HTTP経由で証明する
2・DNSのTXTレコードで証明する

1の方法では、Apache2やNGINXなどのウェブサーバーをセットアップする必要があります。
この方法のメリットは
・即時反映される
・DNSのAPIなどを考えなくて良い
デメリットは
・HTTPサーバーが必要である

2の方法では、DNSのAPIについて考える必要があります、
しかし、それさえできればスマートに行うことができます。

2のデメリットは、DNSには浸透という概念があること。
これは、DNSが何故かレコードをキャッシュするというキチガイみたいな設計をしているためです。
(パフォーマンスは確かに向上しますが、わたしは否定的です。)

この記事ではDNSのみ説明します。

DNSのTXTレコードで証明する


まず、どこのDNSを使っているかで話が変わります。
ここではCloudFlareのDNSという前提で進めます。

他のDNSでもググればやり方でてきます。


CloudFlareのAPIキーを獲得する


まずはCloudFlareのダッシュボードを開きましょう。

そしたら、→を開きましょう。

をクリックします。
「API トークン テンプレート」という項目がありますね?ここに「ゾーンDNSを編集する」という行があります。
をクリックしましょう。


ゾーンリソースには、「アカウントにある全てのゾーン」を選択し、あなたのアカウントを選択します。

次へ進めていけば、APIキーが発行されます。
APIキーは必ずメモしてください。

iniファイルを作成


おそらく、Certbotはrootで扱うと思うので、rootに切り替えます。
sudo bash


さて、お好きなエディタで「/root/cloudflare.ini」を作成し編集してください。
ファイル名は何でも良いです。


内容は以下のようにしてください。
dns_cloudflare_api_token = トークン

には、先程メモしたトークンを張り付けてください。

次に、そのファイルのPERMISSIONを600にしておきましょう。
chmod 600 /root/cloudflare.ini


さて、おそらくPythonとpipは入っていることでしょう。
Certbot用のCloudFlare拡張を入れます。
pip install --upgrade cloudflare==2.19.* --break-system-packages


証明書発行


「rumiserver.com」にはあなたのドメインを入れてください。
certbot certonly --dns-cloudflare --dns-cloudflare-credentials /root/cloudflare.ini --dns-cloudflare-propagation-seconds 60 -d rumiserver.com -d *.rumiserver.com

これで証明書が発行されます!おめでと!()

更新できるかチェックする


certbot renew --dry-run

これでエラーがでなければ成功です。
(--dry-runはテストできる機能です)
さあ、あとはcertbot renewをcrontabにでも登録するだけです。


ログインしたらコメントが書けますよ!