acme.sh
acme.sh による軽量 ACME 運用ガイド
純粋なシェルスクリプトで実装された軽量な ACME クライアント acme.sh。
Python依存なし、root権限不要、ほぼ全てのUNIX系OSで動作。
📋 acme.sh の特徴
- ✅ Python・Java など不要、シェル(bash/sh)だけで動作
- ✅ root 権限なしでもインストール可能
- ✅ 100以上の DNS プロバイダに自動対応
- ✅ 軽量・高速
- ✅ Docker / Synology NAS など特殊環境にも対応
🛠️ インストール
# 公式インストーラ
$ curl https://get.acme.sh | sh -s email=you@example.com
# または git clone でインストール
$ git clone https://github.com/acmesh-official/acme.sh.git
$ cd acme.sh
$ ./acme.sh --install -m you@example.com
インストール後、シェルを再起動するか source ~/.bashrc で acme.sh コマンドが使えるようになります。
🔐 FujiSSL の ACME を使う設定
-
FujiSSL を CA として登録
$ acme.sh --register-account \ --server https://acme.fujissl.jp/acme/directory \ --eab-kid YourKeyID123abc \ --eab-hmac-key YourLongHmacKeyString... -
FujiSSL をデフォルトCAに設定
$ acme.sh --set-default-ca --server https://acme.fujissl.jp/acme/directory -
証明書取得(webroot モード)
$ acme.sh --issue \ -d example.com -d www.example.com \ --webroot /var/www/html -
証明書取得(standalone モード)
$ acme.sh --issue \ -d example.com \ --standalone -
ワイルドカード証明書(DNS API使用)
例: Cloudflare DNS
# Cloudflare API トークンを環境変数に設定 $ export CF_Token="YourCloudflareAPIToken" # ワイルドカード証明書取得 $ acme.sh --issue --dns dns_cf \ -d "*.example.com" -d example.com -
証明書のインストール
取得した証明書を所定の場所にコピーし、サーバの再読み込みを設定:
$ acme.sh --install-cert -d example.com \ --key-file /etc/nginx/ssl/example.com.key \ --fullchain-file /etc/nginx/ssl/example.com.fullchain.crt \ --reloadcmd "systemctl reload nginx"
🔄 自動更新
acme.sh は自動的に cron に登録され、毎日チェックを実行します。有効期限の30日前から自動更新されます。
# 自動更新のテスト
$ acme.sh --renew -d example.com --force
# cron 確認
$ crontab -l | grep acme.sh
📊 acme.sh vs certbot 比較
| 項目 | acme.sh | certbot |
|---|---|---|
| 言語 | シェルスクリプト | Python |
| 依存関係 | ほぼなし(bash/sh) | Python 3 |
| root権限 | 不要(任意) | 通常 sudo |
| DNS プラグイン | 100以上 | 主要プロバイダ |
| Web サーバ自動設定 | 非対応(手動 install-cert) | Nginx / Apache 自動対応 |
| Docker | 専用イメージあり | 標準イメージあり |
| 推奨用途 | 軽量運用・特殊環境・大量サーバ | 標準的な Linux サーバ・Nginx/Apache |
🐳 Docker での acme.sh
$ docker run --rm -it \
-v "$(pwd)/out":/acme.sh \
neilpang/acme.sh \
--issue --dns dns_cf -d example.com \
--server https://acme.fujissl.jp/acme/directory
❓ よくあるご質問
Q. acme.sh と certbot、どちらを選ぶべき?
運用方針次第です。
- Nginx/Apache の自動設定が欲しい → certbot
- 軽量・依存なし・特殊環境(Docker、Alpine、NAS など)→ acme.sh
- 大量のサーバを一括管理 → acme.sh + 設定スクリプト
- DNS API での自動化に強い → acme.sh(100以上のプロバイダ対応)
Q. root 権限なしで運用できますか?
はい。--home オプションでホームディレクトリ以下にインストールし、Webサーバ設定の --reloadcmd も sudo 経由で実行できます。共有サーバや一般ユーザー権限でも運用可能です。
Q. 既に certbot を使っているけど移行できる?
はい、可能です。両方を併用することもできます。証明書ファイル自体は共通フォーマットなので、acme.sh で取得した証明書を既存の Nginx/Apache 設定で使えます。