本文へスキップ
重要 SSL/TLS証明書 47日間ルール正式決定 — ACME自動更新の導入を推奨しております。 Phase 2(100日へ短縮)まで 306日
300,000枚 累計発行
17,206社 利用中
19年 運営
24時間365日 自動発行
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 ~/.bashrcacme.sh コマンドが使えるようになります。

🔐 FujiSSL の ACME を使う設定

  1. FujiSSL を CA として登録

    $ acme.sh --register-account \
      --server https://acme.fujissl.jp/acme/directory \
      --eab-kid YourKeyID123abc \
      --eab-hmac-key YourLongHmacKeyString...
  2. FujiSSL をデフォルトCAに設定

    $ acme.sh --set-default-ca --server https://acme.fujissl.jp/acme/directory
  3. 証明書取得(webroot モード)

    $ acme.sh --issue \
      -d example.com -d www.example.com \
      --webroot /var/www/html
  4. 証明書取得(standalone モード)

    $ acme.sh --issue \
      -d example.com \
      --standalone
  5. ワイルドカード証明書(DNS API使用)

    例: Cloudflare DNS

    # Cloudflare API トークンを環境変数に設定
    $ export CF_Token="YourCloudflareAPIToken"
    
    # ワイルドカード証明書取得
    $ acme.sh --issue --dns dns_cf \
      -d "*.example.com" -d example.com
  6. 証明書のインストール

    取得した証明書を所定の場所にコピーし、サーバの再読み込みを設定:

    $ 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.shcertbot
言語シェルスクリプト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 設定で使えます。