スマートフォン・タブレットからインターネットサーバーオペレーション

APPW.jp
 
ConoHa VPS移設記/2GB・3コア → 4GB・4コア/Ubuntu 26.04 LTS

④ Let's Encrypt

旧サーバーはCertbotのwebroot方式(HTTP-01)だったが、今回はDNSがまだ新サーバーを向いておらず、 サイト移行自体も途中。DNS-01チャレンジで先に証明書だけ取得し、移行完了後にHTTP-01へ戻す方針にした。 3つのレジストラを相手に手動でTXTレコードを登録した記録。

作業端末: iPad mini(Termius)+ 各レジストラの管理画面(ブラウザ)

MIGRATION ROADMAP — 全17工程
  1. ① SSH、ユーザー追加
  2. ② IPv4/IPv6追加、netplan、ufw
  3. ③ Apache2
  4. ④ Let's Encrypt
  5. ⑤ PHP
  6. ⑥ MariaDB
  7. ⑦ WordPress
  8. ⑧ Dovecot、Postfix
  9. ⑨ Vsftpd
  10. ⑩ Python
  11. ⑪ llama.cpp、ChromaDB
  12. ⑫ Anaconda、Keras、TensorFlow
  13. ⑬ Node.js
  14. ⑭ MongoDB
  15. ⑮ Mosquitto
  16. ⑯ RabbitMQ
  17. ⑰ Supervisor

01webroot方式が使えないタイミング

CertbotのHTTP-01(webroot)チャレンジは、認証時にドメイン名へ実際にHTTPでアクセスして .well-known/acme-challenge/を取得しに行く仕組みのため、証明書取得の前提としてDNSが新サーバーへ向いている必要がある。 PHP・MariaDB・WordPressなど後半の構築がまだの段階でDNSを切り替えるのは得策ではない。

そこでDNS-01チャレンジ(DNSにTXTレコードを一時的に置いて証明する方式)に切り替えることにした。 DNSがどこを向いているかに関係なく証明書だけ先に取れる。

02自動化プラグインの有無を確認

5サイトのドメインは3つのレジストラ(お名前.com/スタードメイン/Value-Domain)にまたがっている。 Certbotには各種DNSサービス向けの自動化プラグイン(certbot-dns-〇〇)があるが、確認した限りこの3社向けの公式・コミュニティプラグインは見当たらなかった。 自動化するにはネームサーバーをCloudflareなど別サービスへ委任する必要があるが、今回はドメイン管理の構成自体を変える大きな決断になるため見送り、 手動でのDNS-01+移行完了後にHTTP-01へ戻すという運用にした。

03Certbotインストール

login-user@新サーバー
$ sudo apt update $ sudo apt install certbot python3-certbot-apache # apacheプラグインは今回未使用。DNS切替後にHTTP-01へ戻す際に使う

04手動DNS-01の実行

サイトごとに実行し、apex・wwwそれぞれのTXTレコードを登録してから確定する。

login-user@新サーバー
$ sudo certbot certonly --manual --preferred-challenges dns \ -d sasagawa.tokyo -d www.sasagawa.tokyo Please deploy a DNS TXT record under the name: _acme-challenge.sasagawa.tokyo. with the following value: (値の文字列) Press Enter to Continue

ここで表示される2行(ホスト名と値)は1つのTXTレコードの情報を分けて表示しているだけで、2レコード追加するわけではない。 DNS管理画面では通常「種別=TXT」「ホスト名」「値」の3項目に分かれて入力する。

反映確認してからEnter dig txt _acme-challenge.ドメイン名 +shortで値が返ってくるのを確認してから続行する。反映待ちのタイムラグで検証に失敗すると、Let's Encrypt側のレート制限に引っかかる恐れがある。

05レジストラごとの入力形式の違い

3社とも入力欄の仕様が異なっていた。今後同じ作業をする時のためのメモ。

レジストラ対象サイトホスト名欄入力順
お名前.comgwaw.jp相対名(_acme-challengeのみ)-
スタードメインappw.jpFQDNホスト名 → 種別 → 値
Value-Domainiseeit.jp / ibe.tokyo / sasagawa.tokyoFQDN種別 → ホスト名 → 値

「相対名かFQDNか」を間違えると、意図しないホスト(例:_acme-challenge.sasagawa.tokyo.sasagawa.tokyoのような二重ドメイン)にレコードが作られてしまうため、 最初の1件はdigで実際に登録された名前を確認してから他のサイトへ進めると安全。

06取得結果

サイト有効期限
sasagawa.tokyo2026-12-04
iseeit.jp2026-12-04
ibe.tokyo2026-12-04
gwaw.jp2026-12-04
appw.jp2026-12-04

証明書は/etc/letsencrypt/live/ドメイン名/配下に格納され、③で設定したVirtualHostのSSLCertificateFile等のパスはそのまま使える。

自動更新は今のところ効かない --manualで取得した証明書はcertbotの自動更新(cron/systemdタイマー)の対象にならない。有効期間は90日。 DNSを新サーバーへ切り替えてサイト移行が完了した時点で、webroot(またはapacheプラグイン)方式に切り替えて自動更新を効かせる予定。 それまでに90日を超えそうな場合は、同じ手順を繰り返す必要がある。

07ここまでの状態

  • 5サイトすべてDNS-01チャレンジで証明書取得済み(有効期限2026-12-04)
  • 3レジストラそれぞれのTXTレコード入力仕様の違いを確認済み
  • 自動更新はDNS切替・HTTP-01方式への移行後に対応予定
← 前回: ③ Apache2 次回: ⑤ PHP →

『ConoHa VPS移設記 ④ Let's Encrypt』を公開しました。