ACME クライアントは多数ありますが、サーバ環境と運用方針に応じて選びます。本ページでは、用途別の推奨クライアントと、選定時の判断基準を整理します。
- Linux + Apache / Nginx →
certbot(実績重視)またはacme.sh(軽量重視) - Windows / IIS →
win-acme - Docker / Kubernetes →
Traefikまたはcert-manager
📊 全クライアント早見表
| クライアント | 言語 / 実装 | 対応 OS | 難易度 | 主な強み |
|---|---|---|---|---|
| certbot | Python | Linux / macOS | ★☆☆ | EFF 公式・実績豊富 |
| acme.sh | Pure Shell | Linux / macOS / *BSD | ★☆☆ | 依存ほぼゼロ・軽量 |
| lego | Go | マルチOS | ★★☆ | YAML 管理・大規模向き |
| win-acme | .NET | Windows | ★☆☆ | IIS 完全統合 |
| Posh-ACME | PowerShell | Windows | ★★☆ | Windows 管理者向き |
| Caddy | Go(Web サーバ内蔵) | マルチOS | ★☆☆ | Web サーバごと自動化 |
| Traefik | Go(プロキシ内蔵) | マルチOS | ★★☆ | コンテナ環境最適 |
| cert-manager | Go(K8s ネイティブ) | Kubernetes | ★★★ | 宣言的な K8s 運用 |
🐧 Linux サーバ(Apache / Nginx)
certbot — 王道の安定択
多くの Linux ディストリビューションで標準パッケージとして提供されている、もっとも普及している ACME クライアントです。エンタープライズ環境での採用例も豊富で、トラブルシューティング情報が圧倒的に多いのが強みです。
# インストール(Ubuntu / Debian)
sudo apt install certbot python3-certbot-nginx
# インストール(RHEL / AlmaLinux / Rocky Linux)
sudo dnf install certbot python3-certbot-nginx
# 証明書取得(Nginx プラグインで設定ファイルも自動編集)
sudo certbot --nginx -d www.example.com
acme.sh — 軽量・依存ゼロ
Pure Shell で書かれた軽量クライアントです。Python ランタイムなどの依存関係が一切なく、組み込み機器や共有サーバなどの制約のある環境でも動作します。FujiSSL との接続実績も豊富で、EAB 認証の設定もシンプルです。
# インストール(curl 一発)
curl https://get.acme.sh | sh -s email=admin@example.com
# FujiSSL を既定の CA として設定
acme.sh --set-default-ca --server https://acme.fujissl.jp/acme/directory
# 証明書取得
acme.sh --issue -d www.example.com -w /var/www/html
lego — 大規模・宣言的運用向け
Go 製のクライアントで、設定を YAML / 環境変数で管理できます。CI/CD パイプラインへの組み込みや、大規模インフラでの集中管理に向きます。
🪟 Windows / IIS
win-acme — IIS 連携の定番
Windows / IIS 向けの最も普及したクライアントです。GUI(対話形式)と CLI の両方に対応し、IIS のバインディング設定までを自動化できます。
- IIS Manager との完全統合
- ストア・ファイルシステム両方の証明書配置に対応
- タスクスケジューラ登録まで自動
# win-acme の対話モード起動(管理者権限の PowerShell で)
.\wacs.exe
Posh-ACME — PowerShell ネイティブ
PowerShell モジュールとして提供される ACME クライアントです。Windows サーバの管理スクリプトに自然に組み込めるため、既存の運用自動化との親和性が高いのが特徴です。
# PowerShell Gallery からインストール
Install-Module -Name Posh-ACME -Scope CurrentUser
# 証明書取得
New-PACertificate www.example.com
🌐 モダン Web サーバ・プロキシ統合型
Caddy — Web サーバ自体が ACME 対応
Caddy は Go 製の Web サーバで、ACME 機能を内蔵しています。設定ファイル(Caddyfile)にドメイン名を書くだけで、起動時に自動で証明書を取得・更新します。
# Caddyfile の例(これだけ)
www.example.com {
reverse_proxy localhost:3000
}
# → 起動するだけで HTTPS が有効化される
Traefik — コンテナ環境の定番
Docker / Kubernetes 環境で人気のリバースプロキシです。Docker ラベルや Kubernetes Ingress リソースから自動で証明書を取得します。マイクロサービス構成と相性抜群です。
cert-manager — Kubernetes 標準
Kubernetes 環境では cert-manager がデファクトスタンダードです。Certificate リソースを宣言するだけで、自動取得・更新・Secret 配置までを行います。
# Certificate リソースの例
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: www-example-com
spec:
secretName: www-example-com-tls
issuerRef:
name: fujissl-issuer
dnsNames:
- www.example.com
🛠 独自実装・API 直接連携
独自のアプリケーションやスクリプトに ACME クライアント機能を組み込む場合は、ACME プロトコル(RFC 8555)に従って REST API で直接連携できます。
主要言語のライブラリ
- Python:josepy、acme(certbot 内部ライブラリ)
- Go:golang.org/x/crypto/acme
- Node.js:acme-client
- Java:acme4j
- Rust:instant-acme
FujiSSL の ACME エンドポイント(https://acme.fujissl.jp/acme/directory)は標準仕様(RFC 8555)に完全準拠しているため、これらの汎用ライブラリでそのまま利用できます。
🎯 選び方の判断基準
| 状況 | 推奨クライアント | 理由 |
|---|---|---|
| 初めて ACME を導入する | certbot | 情報量が圧倒的に多く、ハマっても解決しやすい |
| 共有サーバ・組込み機器 | acme.sh | Pure Shell で依存関係ゼロ |
| シンプルさを最重視 | acme.sh | 1 コマンドで完結 |
| Windows / IIS 環境 | win-acme | IIS 統合・GUI 対応 |
| 大規模・複数台・CI/CD | lego | YAML 管理・宣言的 |
| Docker / Kubernetes | Traefik / cert-manager | コンテナ環境ネイティブ |
| 新規構築する Web サーバ | Caddy | HTTPS が起動時に有効化 |
| アプリケーション組込み | 各言語の ACME ライブラリ | REST API 直接連携 |
💡 よくある質問
Q. 複数のクライアントを併用してもいい?
技術的には可能ですが、運用が複雑になるため1 つのサーバには 1 つのクライアントに統一することを推奨します。複数のサーバを管理している場合、サーバごとに最適なクライアントを選ぶのは問題ありません。
Q. クライアントを変更したいときは?
新しいクライアントで新規アカウント作成・証明書取得を行います。既存の証明書は有効期限まで使用し、自然な世代交代で移行できます。
Q. FujiSSL でどのクライアントが推奨ですか?
環境によりますが、社内検証では certbot と acme.sh の動作実績が最も豊富です。OS 標準パッケージで導入したい場合は certbot、軽量さを優先するなら acme.sh をお選びください。