ACME(証明書の自動更新)手順書

win-acme(Windows IIS)

2025年10月10日

win-acme(Windows IIS)セットアップ:GUI と コマンドラインを選べます

どちらを選ぶ?(推奨早見表)

  • GUI 推奨: 単一/少数サイトのIIS、担当者がRDPで通常運用、まずは確実に通したい場合(HTTP-01中心)
  • コマンドライン 推奨: 自動化・スクリプト化、複数サイト/複数サーバ、ヘッドレス運用、ワイルドカードを使う(DNS-01中心)

いずれも初回にACMEアカウント登録(EAB)が必要です。下の「1. インストール&EAB登録」をまず実施してください。

(重要)動作環境と事前チェック

  • Windows/IISに管理者でログインできること(win-acmeは管理者権限で実行)。
  • 外向き通信:サーバから 管理画面で取得したACMEサーバURL へ到達できること(プロキシ/フィルタ確認)。
  • 時刻同期(NTP)が正常。証明書発行は時刻ずれに弱いです。
  • HTTP-01の場合:対象FQDNに対する 80/TCP 公開/.well-known/acme-challenge/ への例外設定。
  • DNS-01の場合:対象FQDNのゾーンを編集できること(TXTを追加できる権限)。
  • 既存の自動更新ジョブ(別ツール/別CA)があれば停止して競合回避。

1. インストール & EAB アカウント登録(共通)

  1. 管理者権限で対象Windowsサーバにログイン。IISが導入済み、バインドが設定済みであること。
  2. win-acme(wacs.exe) をダウンロードして C:\Program Files\win-acme 等に展開。
  3. FujiSSL 管理ツール「契約一覧 → コマンド」で ACME サーバURL / EAB KID / EAB HMAC Key を控えておく。

アカウント登録(EAB)— コピペ用

cd "C:\Program Files\win-acme"
wacs.exe ^
  --baseuri "管理画面で取得したACMEサーバURL" ^
  --accepttos ^
  --emailaddress admin@example.com ^
  --eab-key-identifier <EAB_KID> ^
  --eab-key <EAB_HMAC_KEY>

--baseuri に ACME URL、--eab-key-identifier/--eab-key に管理ツールで控えた値を指定。

2-A. GUIで設定(HTTP-01 / IIS ファイル認証)— 推奨:一般的なIIS単体構成

HTTP-01 は最も簡単で、IIS が /.well-known/acme-challenge/ へのHTTPアクセスに応答できればOKです。

  1. IISサイトのバインドに :80(HTTP)があることを確認(FW/SG で 80/TCP を許可)。
  2. HTTP→HTTPS のリダイレクトがある場合、/.well-known/acme-challenge/例外にします(URL Rewrite 推奨)。
  3. 「C:\Program Files\win-acme\wacs.exe」 をダブルクリック → 対話メニューで IIS サイトを選び、HTTP validation を選択 → 指示に従って完了。


GUI だけでやる場合の要点

  • URL Rewrite:Blank rule → Pattern: ^\.well-known/acme-challenge/.*$、Action: None、ルールを最上段に。
  • HTTP Redirect 機能で全体リダイレクトしている場合は、.well-known を仮想ディレクトリ化してその場所だけリダイレクト無効に。

2-B. GUIで設定(DNS-01 / TXT レコード)— 推奨:ワイルドカード利用や80/443が閉じた環境

  1. wacs.exe を起動 → 対話メニューで Manual input(または対象ホスト指定)→ DNS validation を選択。
  2. 表示された _acme-challenge.example.comTXT 値を DNS に追加 → 伝播を待って Enter で続行 → 検証 → 発行。
  3. ワイルドカード(*.example.com)にも対応。
DNS-01 の注意

TXT 値は発行ごとに変わります。人手更新は不可のため、DNSプラグインまたはAPIフックで
自動作成→検証→(任意で削除)を行ってください。

※ win-acme の DNSプラグイン版をご利用ください(Cloudflare / Route53 / Azure DNS など対応)。
未対応のDNSでは、事業者APIを叩くスクリプトHookで代替できます。

3-A. コマンドライン一発(HTTP-01 / IIS自動反映)— 推奨:自動化・複数サイト

以下をそのままコピペで実行すると、検証→発行→IISバインド反映→自動更新タスク登録まで一気に行います。

cd "C:\Program Files\win-acme"
wacs.exe ^
  --baseuri "管理画面で取得したACMEサーバURL" ^
  --target iissite --siteid 1 ^
  --host example.com,www.example.com ^
  --validationmode http-01 --validation iis ^
  --store certificatestore --certificatestore My ^
  --installation iis ^
  --friendlyname "FujiSSL-OV-example" ^
  --accepttos --eab-key-identifier <EAB_KID> --eab-key <EAB_HMAC_KEY>

3-B. コマンドライン一発(DNS-01 / 手動TXT)— 推奨:ワイルドカード・閉域環境

実行後に表示される TXT を DNS に足して Enter で続行します。IIS への割り当ても自動で行います。

cd "C:\Program Files\win-acme"
wacs.exe ^
  --baseuri "管理画面で取得したACMEサーバURL" ^
  --target manual --host example.com,*.example.com ^
  --validationmode dns-01 --validation manual ^
  --store certificatestore --certificatestore My ^
  --installation iis --installationsiteid 1 ^
  --accepttos --eab-key-identifier <EAB_KID> --eab-key <EAB_HMAC_KEY>

※ DNS プロバイダのAPIで完全自動化する場合は、win-acme の DNS プラグイン同梱版を使用し、各プロバイダのガイドに沿って
API キー等を設定してください(Cloudflare / Route53 / Azure DNS などに対応)。

DNS-01 の注意

TXT 値は発行ごとに変わります。人手更新は不可のため、DNSプラグインまたはAPIフックで
自動作成→検証→(任意で削除)を行ってください。

※ win-acme の DNSプラグイン版をご利用ください(Cloudflare / Route53 / Azure DNS など対応)。
未対応のDNSでは、事業者APIを叩くスクリプトHookで代替できます。

(補助)IISサイトIDの調べ方

  1. IIS マネージャー → サイト一覧の「ID」列で確認(見えなければ列の選択で追加)。
  2. PowerShell:

    Import-Module WebAdministration
    Get-Website | Select-Object Id, Name, State, Bindings | Format-Table -Auto
  3. appcmd:

    %windir%\System32\inetsrv\appcmd.exe list site /text:name,ID

(補助)プロキシ/WAF/HTTPSリダイレクト越しに HTTP-01 を通す

/.well-known/acme-challenge/例外にして、HTTPのまま IIS 80 番へ素通しするのがコツです。

URL Rewrite の例(web.config 抜粋)

<rule name="Skip ACME challenge" stopProcessing="true">
  <match url="^\.well-known/acme-challenge/.*$" />
  <action type="None" />
</rule>
<rule name="HTTP to HTTPS" stopProcessing="true">
  <match url="(.*)" />
  <conditions><add input="{HTTPS}" pattern="off" /></conditions>
  <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
</rule>

上流にリバースプロキシがある場合も同様に、/.well-known/ を最優先で例外化してください。

運用のポイント

  • 初回発行時にWindows タスクスケジューラへ自動登録。期限前に更新が走ります。
  • 冗長化/ロードバランサ配下では、更新後に証明書を各ノードへ複製配布する仕組みを用意(スクリプトや共有ストアなど)。
  • EAB KID / EAB HMAC Key機密情報です。公開リポジトリ・技術記事・SNS・配布資料・スクリーンショットに載せないでください。

よく読まれている質問