SETUP GUIDE

ACME SSL 導入ガイド

ACMEプロトコルを使用したSSL証明書の自動取得・更新手順を解説します。
お使いのサーバー環境に合わせてガイドをお選びください。

!

前提条件

  • root または sudo 権限のあるアカウントでサーバーにアクセスできること
  • 対象サーバーのポート80(HTTP)またはポート443(HTTPS)が外部からアクセス可能であること
  • 証明書を適用するドメインのDNSが、対象サーバーのIPアドレスに正しく設定されていること
  • ACME対応のサーバー環境:VPS / クラウド / オンプレミス(共用サーバーは非対応)
ご契約時に発行されるEABクレデンシャル

以降のセットアップで、ダッシュボードに表示される以下の情報が必要になります:

  • EAB KID — アカウント識別キー
  • EAB HMAC Key — 認証用シークレットキー
  • ACME Server URL — ACMEディレクトリURL(例:https://acme.sectigo.com/v2/DV
1

Apache / NGINX on Linux

NGINX および Apache の両方で、ACMEクライアント「Certbot」を使用して証明書を自動取得・設定できます。OSのroot権限が必要です。

Debian / Ubuntu 系

Certbot のインストールには主に aptsnap の2つの方法があります。

方法A: apt パッケージマネージャー

1

パッケージリストを更新

sudo apt update
2

Certbot とWebサーバープラグインをインストール

Apache:sudo apt install certbot python3-certbot-apache
NGINX:sudo apt install certbot python3-certbot-nginx

方法B: snap パッケージマネージャー(推奨)

1

snapd を最新に更新

sudo snap install core
sudo snap refresh core
2

Certbot をインストール

sudo snap install --classic certbot
3

シンボリックリンクを作成

sudo ln -s /snap/bin/certbot /usr/bin/certbot

Red Hat / CentOS / AlmaLinux 系

方法A: dnf / yum パッケージマネージャー

1

EPEL リポジトリを有効化

sudo dnf install epel-release
# または
sudo yum install epel-release
2

リポジトリを更新

sudo dnf clean all && sudo dnf update
# または
sudo yum clean all && sudo yum update
3

Certbot とWebサーバープラグインをインストール

Apache:sudo dnf install certbot python3-certbot-apache
NGINX:sudo dnf install certbot python3-certbot-nginx

証明書の取得と自動設定

Certbot は自動モードでWebサーバーの設定まで行えます。以下はHTTPバリデーションを使用した例です。

自動インストール(証明書の取得 + Webサーバー自動設定)

sudo certbot --nginx --non-interactive --agree-tos \
  --server <ACME_DIRECTORY_URL> \
  --email <your-email> \
  --eab-kid <EAB_KID> \
  --eab-hmac-key <EAB_HMAC_KEY> \
  --domain example.com \
  --domain www.example.com \
  --cert-name my-certificate
パラメータの説明
  • --nginx または --apache — Webサーバーの種別
  • --non-interactive — 対話モードを無効化(cron/CI/CDでの利用向け)
  • --server — ダッシュボードに表示されるACMEディレクトリURL
  • --eab-kid / --eab-hmac-key — ダッシュボードで発行されるEABクレデンシャル
  • --domain — 証明書を発行するドメイン(複数指定可)
  • --cert-name — 証明書の管理用名称

Sectigo ACMEサーバーでの実行例

sudo certbot --nginx --non-interactive --agree-tos \
  --email admin@example.com \
  --server https://acme.sectigo.com/v2/DV \
  --eab-kid YOUR_EAB_KID \
  --eab-hmac-key YOUR_EAB_HMAC_KEY \
  --domain example.com \
  --domain www.example.com \
  --cert-name my-example-cert

Apache の場合は --nginx--apache に変更してください。

証明書更新後のWebサーバー再読み込み

⚠ 重要:更新だけでは反映されません

証明書が更新されても、Webサーバーが新しい証明書を読み込むまでは古い証明書が使われ続けます。deploy-hook(更新成功時に実行されるコマンド)を設定して、更新後にWebサーバーを自動リロードする必要があります。

Certbot の場合(--deploy-hook)

--deploy-hook を指定すると、証明書の更新が成功した場合のみ、指定したコマンドが実行されます。

A

初回発行時に deploy-hook を設定する場合

NGINX:sudo certbot --nginx --non-interactive --agree-tos \
  --server <ACME_DIRECTORY_URL> \
  --email <your-email> \
  --eab-kid <EAB_KID> \
  --eab-hmac-key <EAB_HMAC_KEY> \
  --domain example.com \
  --cert-name my-certificate \
  --deploy-hook "systemctl reload nginx"
Apache:sudo certbot --apache --non-interactive --agree-tos \
  --server <ACME_DIRECTORY_URL> \
  --email <your-email> \
  --eab-kid <EAB_KID> \
  --eab-hmac-key <EAB_HMAC_KEY> \
  --domain example.com \
  --cert-name my-certificate \
  --deploy-hook "systemctl reload apache2"

RHEL系では apache2 の代わりに httpd を使用してください。

B

既存の証明書に後から deploy-hook を追加する場合

sudo certbot renew --cert-name my-certificate \
  --deploy-hook "systemctl reload nginx"

一度設定した deploy-hook は、以降の自動更新時にも自動的に実行されます。設定は /etc/letsencrypt/renewal/ に保存されます。

acme.sh を使用する場合

acme.sh は軽量なACMEクライアントで、--install-cert コマンドで証明書の配置先と更新後のリロードコマンドを一括設定できます。

1

acme.sh のインストール

curl https://get.acme.sh | sh -s email=your-email@example.com

インストール後、シェルを再起動するか source ~/.bashrc を実行してください。

2

EABアカウント登録

acme.sh --register-account \
  --server <ACME_DIRECTORY_URL> \
  --eab-kid <EAB_KID> \
  --eab-hmac-key <EAB_HMAC_KEY>
3

証明書の発行

⚠️ 必ず RSA 鍵(--keylength 2048)で発行してください。 自動更新の DNS 委任ラベルは CSR から生成されます。RSA 鍵は毎回同一の CSR を生成するため委任が恒久化しますが、 EC 鍵(ec-256 等)は発行のたびに CSR が変わり委任が無効化され、更新に失敗します。
NGINX (webroot モード):acme.sh --issue \
  --server <ACME_DIRECTORY_URL> \
  -d example.com -d www.example.com \
  --keylength 2048 \
  -w /var/www/html
Apache (webroot モード):acme.sh --issue \
  --server <ACME_DIRECTORY_URL> \
  -d example.com -d www.example.com \
  --keylength 2048 \
  -w /var/www/html
スタンドアロンモード (ポート80を一時使用):acme.sh --issue \
  --server <ACME_DIRECTORY_URL> \
  -d example.com \
  --keylength 2048 \
  --standalone
4

証明書のインストールと自動リロード設定

💡 この手順が最も重要です

--install-cert で証明書の配置先と --reloadcmd で更新後のリロードコマンドを設定します。この設定は保存され、以降の自動更新でも自動的に実行されます。

NGINX:acme.sh --install-cert -d example.com \
  --key-file       /etc/nginx/ssl/example.com.key \
  --fullchain-file /etc/nginx/ssl/example.com.crt \
  --reloadcmd      "systemctl reload nginx"
Apache:acme.sh --install-cert -d example.com \
  --key-file       /etc/apache2/ssl/example.com.key \
  --fullchain-file /etc/apache2/ssl/example.com.crt \
  --reloadcmd      "systemctl reload apache2"

自動更新の動作確認

設定が正しく行われていれば、証明書の更新と同時にWebサーバーの再読み込みも自動で行われます。

Certbot の確認

sudo certbot renew --dry-run

deploy-hook の設定を確認するには:cat /etc/letsencrypt/renewal/my-certificate.conf

acme.sh の確認

# 登録済み証明書の一覧と設定確認
acme.sh --list

# cron エントリの確認(自動更新スケジュール)
crontab -l | grep acme

acme.sh はインストール時に cron ジョブを自動登録し、毎日チェックを行います。期限が近い証明書のみ更新されます。

Certbot vs acme.sh の違い
  • Certbot--nginx/--apache でWebサーバー設定を自動変更。--deploy-hook でリロードコマンドを登録。
  • acme.sh — Webサーバー設定は手動。--install-cert + --reloadcmd で証明書配置とリロードを管理。軽量で依存が少ない。
2

IIS on Windows

Windows IIS Server に ACME ベースのSSL証明書をインストールするには、Win-ACME(wacs.exe)を使用します。

前提条件

  • リモートデスクトップ(RDP)等でサーバーへの管理者権限でのアクセスが可能であること
  • IIS で対象ドメインのポート80バインディングが設定済みであること(デフォルト/ワイルドカードバインディングでは動作しません)
1

Win-ACME のセットアップ

  1. win-acme.com から最新版をダウンロード
  2. ZIPを C:\Program Files\Win-ACME に展開
  3. 展開先の wacs.exe を実行して動作確認
2

SSL証明書のインストール

PowerShell を管理者として開き、以下を実行:

& "C:\Program Files\Win-ACME\wacs.exe" `
  --source iis `
  --host yourdomain.com `
  --store certificatestore `
  --installation iis `
  --baseuri <ACME_DIRECTORY_URL> `
  --eab-key-identifier <EAB_KID> `
  --eab-key <EAB_HMAC_KEY> `
  --accepttos
パラメータの置き換え
  • --baseuri — ダッシュボードの ACME Server URL(例:https://acme.sectigo.com/v2/DV/
  • --eab-key-identifier — EAB KID(短い方の文字列)
  • --eab-key — EAB HMAC Key(長い方の文字列)
  • --host — www と非www の両方を設定する場合:--host "mydomain.com,www.mydomain.com"
3

インストールの確認

  1. https:// でサイトにアクセスして証明書を確認
  2. IIS Manager → サイト → バインド で、HTTPS(443)バインディングが追加されたことを確認
  3. スケジュールされた自動更新を確認:
& "C:\Program Files\Win-ACME\wacs.exe" --list --baseuri https://acme.sectigo.com/v2/DV/

注意:Win-ACME は ACMEサーバーごとに証明書を管理します。--baseuri を省略すると、インストール済みの証明書情報が表示されません。

3

ACME 自動更新オプション(通常証明書)

RapidSSL / GeoTrust / Sectigo などの通常証明書(ACME 非対応商品)に「ACME 自動更新オプション」を付けると、 当社の ACME サーバー経由で acme.sh / Certbot / Win-ACME から発行・更新を自動化できます。 接続情報(ACME Directory / EAB KID / EAB HMAC Key)は、ご契約後に ダッシュボードの契約詳細に表示されます。

1

EAB アカウント登録

契約詳細に表示される値をそのまま使用します。

acme.sh --register-account \
  --server <ACME Directory(契約詳細に表示)> \
  --eab-kid <EAB KID> \
  --eab-hmac-key <EAB HMAC Key>
2

証明書の発行(鍵の再利用が必須)

💡 鍵は必ず再利用してください

更新のたびに鍵を作り直すと、DNS の再設定と再認証が必要になります。acme.sh は既定で鍵を再利用します。Certbot は --reuse-key を必ず指定してください。

acme.sh:acme.sh --issue \
  --server <ACME Directory> \
  -d example.com \
  -w /var/www/html
Certbot:certbot certonly --webroot -w /var/www/html \
  --server <ACME Directory> \
  --reuse-key \
  -d example.com
3

DNS 委任レコードの設定(初回のみ)

初回発行を開始すると、契約詳細に「DNS 設定(初回のみ)」として NS レコードが表示されます。 ドメインの DNS に一度だけ委任設定すれば、以降の更新時の認証(証明書ごとに変わる検証値の差し替え)は すべて当社側で自動処理されるため、再設定は不要です。

_<ハッシュ値>.example.com  NS  ns1.dcv.ssl-shop.jp
_<ハッシュ値>.example.com  NS  ns2.dcv.ssl-shop.jp
4

OV 証明書の更新について

OV 証明書は発行に日数がかかるため、期限が近づくと当社側で更新分を先行発行します。 鍵を再利用していれば、クライアントの更新実行時には発行済みの証明書が即座に取得されます。 企業認証情報の再確認が必要な場合は、当社からご連絡します。

?

よくあるエラーと対処法

DNS解決エラー

DNS problem: NXDOMAIN looking up A for example.com

ドメインのDNS Aレコードが正しく設定されていないか、DNSの伝播が完了していません。dignslookup でDNSレコードを確認してください。

HTTPバリデーション失敗

Fetching http://example.com/.well-known/acme-challenge/... : Connection refused

ポート80がファイアウォールでブロックされているか、Webサーバーが正しくドキュメントルートを配信していません。ファイアウォール設定とVirtualHost設定を確認してください。

EABクレデンシャルエラー

Error creating new account: the server rejected our request with "urn:ietf:params:acme:error:unauthorized"

EAB KID または EAB HMAC Key が正しくありません。ダッシュボードからクレデンシャルを再確認し、コピー時に余分な空白が含まれていないか確認してください。

レート制限エラー

rateLimited: Too many requests

認証局のレート制限に達しました。しばらく待ってからリトライしてください。テスト時は --dry-run フラグを使用することを推奨します。

権限エラー

Permission denied: '/etc/letsencrypt/'

Certbot は root 権限で実行する必要があります。コマンドの先頭に sudo を付けてください。

証明書の自動更新が動作しない

certbot renew --dry-run でエラーが発生

sudo systemctl status certbot.timer でタイマーが有効か確認してください。cron の場合は crontab -l でエントリを確認します。

導入支援サービス

ロードバランサーへの設定、複数台環境への証明書配布など、
技術的にお困りの場合はお気軽にご相談ください。

お問い合わせ