ACMEクライアントツール(certbot)によるサーバ証明書管理手順(利用管理者向け)
改版履歴 | |||
版数 | 日付 | 内容 | 担当 |
V.1.0 | 2025/10/10 | 初版 | NII |
V.2.0 | 2026/03/25 | ACMEクライアントツールごとにページを分割 | NII |
V.2.1 | 2026/04/13 | Apache / Nginxプラグインの記述を追加 | NII |
目次
1. はじめに
このページは、Linuxサーバ上でcertbotを用いてサーバ証明書を発行・更新・失効・削除するための実務手順をまとめたものです。
certbotはサーバ上で実行するコマンドラインツールで、Apache / Nginx 等のWebサーバと連携してACMEプロトコルにより証明書の取得と更新を自動化できます。
certbotの詳細なマニュアルについては、下記公式マニュアルをご参照ください。User Guide — Certbot 5.5.0 documentation
2. 前提条件
2-1. 実行環境
Linuxサーバ
certbotはLinux等のサーバ上で実行します。
多くの操作は設定ファイルや 80/443番ポートへのバインドを伴うため、管理者権限(root / sudo)での実行が前提です。
個人のPCではなく、運用対象のWebサーバで実行してください。HTTP-01を使う場合、外部からTCP80番に到達できる環境
DNS-01を使う場合、手動またはDNSプロバイダAPI経由のプラグインを使用して、対象ドメインのDNS TXTレコードを設定できる環境
ACME サーバはHTTP-01検証において、外部からTCP80番ポートで到達可能であることを確認します。
certbotにはローカルで待ち受けるポート番号を変更するための--http-01-portオプションがありますが、
CAがアクセスする公開側のポート番号は80に固定されており、別の値に変更することはできません。
そのため、80番ポートを開放できない環境では、DNS-01検証方式の利用を検討してください。
3. certbotのインストール手順
3-1. snapによるcertbotインストール(推奨)
最新版の入手が容易で、自動更新(systemd timer)も事前設定済み、かつ多くのsystemd採用ディストリで利用可能です。
snapdが未導入の場合、ディストリに応じてインストールしてください。
Debian系(Ubuntuなど)
コマンド例sudo apt update sudo apt install snapd -yRedhat系(RHEL, CentOS, AmazonLinuxなど)
コマンド例sudo dnf install epel-release -y sudo dnf install snapd -y sudo systemctl enable --now snapd.socket
certbotのインストール
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
certbot --version
※ディストリごとの詳しい手順は、Certbot Instructions をご参照ください。
3-2. OS パッケージからのインストール
Debian系(Ubuntuなど)
コマンド例sudo apt update # Apacheを利用している場合 sudo apt install certbot python3-certbot-apache -y # Nginxを利用している場合 sudo apt install certbot python3-certbot-nginx -y※上記のうち、ご利用の環境環境に合わせてどちらか一方を実行してください。
Redhat系(RHEL, CentOS, AmazonLinuxなど)
コマンド例# epel-releaseを有効化 sudo dnf install epel-release -y # Apacheを利用している場合 sudo dnf install certbot python3-certbot-apache # Nginxを利用している場合 sudo dnf install certbot python3-certbot-nginx※上記のうち、ご利用の環境環境に合わせてどちらか一方を実行してください。
4. certbotによるサーバ証明書管理手順
本章では利用管理者のcertbotによるサーバ証明書の各種手続きの流れについて記述します。
登録担当者による利用管理者へのACMEプロトコル認証情報(EAB)通知済みで、サーバ証明書の新規発行が必要な場合は「証明書新規発行」を行ってください。
既にサーバ証明書を本システムから発行していて、サーバ証明書の更新、失効された証明書の再発行を行う場合は「証明書更新発行」を行ってください。
サーバ証明書の失効を行う場合は「証明書失効」を行ってください。
EAB Key IDおよびHMAC秘密鍵はACMEアカウント認証のための秘密情報(アカウント鍵)です。
厳重に取り扱ってください。
手続きの種別 | 手続きを行う主な機会 |
証明書新規発行
| 新規にサーバ証明書の発行を必要とする場合。 |
サーバ証明書の記載内容(主体者DN)を変更する場合。 | |
証明書更新発行
| サーバ証明書の(主体者DN以外の)記載内容を変更する場合。 |
有効期限内の証明書を強制的に再発行したい場合。 | |
失効されたサーバ証明書の再発行を行う場合。 | |
証明書失効 | サーバ証明書が不要になった場合や秘密鍵が危殆化した場合。 |
4-1. サーバ証明書新規発行手続き概要
本章では利用管理者のサーバ証明書新規発行手続きの流れについて記述します。
利用管理者は以下の手続きにより証明書の新規申請・取得を行います。
4-1-1. 証明書発行
renew(更新)が成功しても、Webサーバはリロードするまで古い証明書を保持します。 deploy‑hookあるいは更新フックスクリプトで自動リロードを登録してください(いずれか一方でOKです)。
deploy-hook sudo certbot renew --deploy-hook "systemctl reload nginx"
フックスクリプト #!/usr/bin/env bash
set -euo pipefail
echo "Hook executed at $(date)"
sudo systemctl reload nginx実行権限を必ず付与してください。 sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/myhook.sh
|
4-2. サーバ証明書の更新申請手続き
本章では利用管理者のサーバ証明書更新手続きの流れについて記述します。
利用管理者は以下の手続きにより証明書の更新申請・取得を行います。
4-2-1. 証明書更新
※renewコマンドは、一度certbotによる証明書ダウンロードまでが成功した後に実行可能で、前回の選択や設定がそのまま引き継がれて証明書発行を実施します。 sudo certbot certonly --force-renewal --key-type rsa
|
4-3. サーバ証明書の失効申請手続き
本章では利用管理者のサーバ証明書失効手続きの流れについて記述します。
利用管理者は以下の手続きにより証明書の失効申請を行います。
4-3-1. 証明書失効
|