RSS ログイン
Date==== Time==== Update==== Time==== Title==== [[W]WRITE [RET]READ [?]HELP]
2024-01-16 20:24:06 2025-11-23 21:54:36 [備忘録]Certbotで証明書更新えらー
TEXT FILE (   5KiB ) を受信しますか? [Y]/[N] > Y

備忘録 Certbot Let's encrypt 証明書 SSL TLS

こんなエラーがでて困ったFailed to renew certificate ai-chan-fan-site.me with error
The error was

解決方法(コレダメ)

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という前提で進めます。

!{NOTE}(他のDNSでもググればやり方でてきます。)

CloudFlareのAPIキーを獲得する

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

そしたら、アカウント管理

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


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

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

iniファイルを作成

おそらく、Certbotはrootで扱うと思うので、rootに切り替えます。
sudo bash
さて、お好きなエディタで「/root/cloudflare.ini」を作成し編集してください。
!{NOTE}(ファイル名は何でも良いです。)

内容は以下のようにしてください。
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にでも登録するだけです。