certbot による ACME 完全自動運用ガイド
Linux 環境の標準 ACME クライアント certbot を使った、FujiSSL / Sectigo 証明書の自動取得・自動更新の完全ガイド。
47日ルール時代の運用に必須です。
🛠️ インストール
| OS | コマンド |
|---|---|
| Ubuntu / Debian | sudo apt update && sudo apt install certbot python3-certbot-nginx |
| RHEL / Alma / Rocky 9 | sudo dnf install certbot python3-certbot-nginx |
| Amazon Linux 2023 | sudo dnf install certbot python3-certbot-nginx |
| macOS(Homebrew) | brew install certbot |
| Snap(任意 OS、最新版) | sudo snap install --classic certbot |
Apache 環境の場合は python3-certbot-apache を選択してください。
certbot 1.21+ が必須。古い OS(CentOS 7など)のリポジトリ版は古い場合があるため、Snap 版や pip 版での新規インストールを推奨。
🔐 EAB(External Account Binding)認証情報の取得
FujiSSL.jp で ACME ライセンスを契約すると、メールで EAB 認証情報が届きます:
- Key ID(例:
YourKeyID123abc) - HMAC Key(例:
YourLongHmacKeyString...)
📋 基本的な使い方
-
ACME アカウントの登録
$ sudo certbot register \ --server https://acme.fujissl.jp/acme/directory \ --eab-kid YourKeyID123abc \ --eab-hmac-key YourLongHmacKeyString... \ --email you@example.com \ --agree-tos \ --no-eff-email -
Nginx 自動設定モード(最も簡単)
$ sudo certbot --nginx \ --server https://acme.fujissl.jp/acme/directory \ -d example.com -d www.example.comNginx の設定ファイルが自動的に更新され、HTTPS リダイレクトの設定も提案されます。
-
Apache 自動設定モード
$ sudo certbot --apache \ --server https://acme.fujissl.jp/acme/directory \ -d example.com -d www.example.com -
webroot モード(既存 Webサーバ稼働中)
サーバの設定ファイルを変更したくない場合:
$ sudo certbot certonly --webroot -w /var/www/html \ --server https://acme.fujissl.jp/acme/directory \ -d example.com -d www.example.com取得した証明書を手動で Nginx / Apache の設定に組み込みます。
-
standalone モード(Webサーバ停止可能)
ポート 80 / 443 が空いている、または Webサーバを一時停止できる場合:
$ sudo certbot certonly --standalone \ --server https://acme.fujissl.jp/acme/directory \ -d example.com -
ワイルドカード証明書(DNS認証必須)
# 手動 DNS 認証 $ sudo certbot certonly --manual \ --preferred-challenges dns \ --server https://acme.fujissl.jp/acme/directory \ -d "*.example.com" -d example.com表示される TXT レコードを DNS に追加し、Enter で検証続行。
🤖 DNS プロバイダ自動認証(ワイルドカード自動化)
主要 DNS プロバイダ向けのプラグインで、ワイルドカード証明書も完全自動化できます。
| DNS プロバイダ | プラグイン |
|---|---|
| AWS Route 53 | python3-certbot-dns-route53 |
| Cloudflare | python3-certbot-dns-cloudflare |
| Google Cloud DNS | python3-certbot-dns-google |
| DigitalOcean | python3-certbot-dns-digitalocean |
| Linode | python3-certbot-dns-linode |
# Cloudflare API トークンを設定ファイルに記載
$ sudo nano /root/.secrets/cloudflare.ini
dns_cloudflare_api_token = YourCloudflareAPIToken
$ sudo chmod 600 /root/.secrets/cloudflare.ini
# ワイルドカード証明書取得
$ sudo certbot certonly \
--dns-cloudflare \
--dns-cloudflare-credentials /root/.secrets/cloudflare.ini \
--server https://acme.fujissl.jp/acme/directory \
-d "*.example.com" -d example.com
🔄 自動更新
certbot は有効期限の30日前から自動更新します。systemd タイマーまたは cron で1日2回チェックされます。
# 自動更新のテスト(実際には更新しない)
$ sudo certbot renew --dry-run
# 自動更新の確認(systemd の場合)
$ sudo systemctl list-timers | grep certbot
NEXT LEFT LAST PASSED UNIT
Tue 2026-05-13 06:24:09 JST 11h left Tue 2026-05-12 06:24:09 JST 12h ago certbot.timer
$ sudo certbot renew --deploy-hook "systemctl reload nginx"
または /etc/letsencrypt/renewal/example.com.conf で renew_hook = systemctl reload nginx。
📜 主要コマンド一覧
| コマンド | 説明 |
|---|---|
certbot certificates | 取得済み証明書の一覧表示 |
certbot renew | 更新可能な証明書を更新 |
certbot renew --force-renewal | 強制更新(テスト用) |
certbot delete --cert-name example.com | 証明書の削除 |
certbot revoke --cert-name example.com | 証明書の失効申請 |
❓ よくあるご質問
Q. EAB 認証情報を紛失しました
当社運営の FujiSSL.jp 管理画面から再発行できます。EAB 認証情報は1契約に対し永続的に有効です。
Q. Let's Encrypt から FujiSSL に移行できますか?
はい、--server オプションを変更するだけです。既存の /etc/letsencrypt/ ディレクトリ構造はそのまま利用できます。新しい証明書を取得すると、自動的に FujiSSL の証明書に置き換わります。
Q. OV 証明書も certbot で取得できますか?
はい、FujiSSL は OV 証明書も ACME ネイティブ対応しています。初回契約時のみ組織審査がありますが、それ以降の更新は完全自動化されます。業界でも稀少な OV ACME 対応です。
Q. 証明書を別サーバにコピーして使えますか?
はい、/etc/letsencrypt/live/example.com/ 以下を別サーバにコピーすれば使えます。ただし、自動更新を新サーバで行う場合は、新サーバでも ACME アカウントを登録する必要があります。
Q. 自動更新が失敗した場合の通知は?
certbot は登録時のメールアドレスに有効期限警告メールを送信します。また、サーバ監視ツール(Zabbix、Datadog 等)で証明書の有効期限を監視することも推奨します。