Windows VMの証明書を完全無料で自動更新する方法


この記事の内容

  • Windows Server(IIS)でLet’s Encryptの証明書を無料取得・自動更新する方法を解説します
  • Certbot for WindowsはWindows版のサポートが2024年2月に終了したため、代替ツールが必要です
  • GUIベースの「Certify Certificate Manager」とCLIベースの「win-acme」の2つのツールを実際に試します
  • IISのバインディング設定との連携方法や、自動更新の仕組みも確認します
  • 商用利用を検討している場合のライセンス情報についても触れます

前提環境

この記事では、以下の環境を前提として解説します。

  • Windows Server 2019(Azure仮想マシン)
  • IIS(インターネットインフォメーションサービス)をWebサーバーとして使用
  • 独自ドメインのDNSレコード設定済み(HTTP-01チャレンジに対応するため)
  • ポート80(HTTP)および443(HTTPS)を受信許可済み

Certbot for Windowsはサポート終了済み

LinuxではLet’s Encryptの証明書取得に「Certbot」が広く使われています。Certbotには以前Windows版も存在していましたが、2024年2月をもってサポートが終了しています。

そのため、Certbotの公式ページでは現在Windows向けにコミュニティが管理するツールへの移行が案内されています。主な候補として紹介されているのは以下のとおりです。

  • Certify Certificate Manager — GUIベースのアプリケーション
  • win-acme — CLIベースのACMEクライアント
  • Certbot Snap(WSL2経由)

本記事では上位2つのツールをそれぞれ試した手順をご紹介します。


方法1:Certify Certificate Manager(GUIアプリ)

ツールの概要

Certify Certificate ManagerはGUIで操作できるWindows向けのACMEクライアントです。Let’s Encryptを含む複数の証明書認証局に対応しており、IISとの連携が比較的簡単に行えます。

インストール

  1. 公式サイトからインストーラーをダウンロードします
  2. インストーラーを実行し、C:\Program Files 以下にインストールします
  3. インストール完了後、アプリケーションを起動します

証明書の取得手順

  1. アプリを起動し、「New Certificate」 を選択します
  2. まず 「Register Contact」 でACMEアカウントを登録します
    • 証明書認証局として「Let’s Encrypt」を選択
    • メールアドレスを入力し、利用規約に同意
  3. 「New Managed Certificate」 から証明書を作成します
    • 表示名を設定します(例:cert-test2-dev1.example.net
    • ドメイン名を入力します(ワイルドカードも可)
  4. 検証方式として HTTP-01 を選択します(DNSの場合はDNS-01も選択可能)
  5. デプロイ方法として 「Auto」 を選択すると、IISへの展開まで自動で行われます
  6. 「Test」 ボタンでドメインの所有権確認をテストし、成功を確認してから 「Request Certificate」 を実行します

IISバインディングの設定

証明書の取得後、IIS側でHTTPSバインディングを手動で設定する必要があります。

  1. IIS管理ツールを開きます
  2. 対象サイト(例:Default Web Site)を選択し、「バインド」 を開きます
  3. 「追加」から以下を設定します
    • 種類:https
    • ポート:443
    • SSL証明書:取得した証明書を選択
  4. 設定後、ブラウザでHTTPSアクセスを確認します

自動更新の仕組み

Certify Certificate Managerはインストール時に Windowsサービス として登録されます。サービスが起動している限り、証明書の有効期限が近づいたタイミングで自動的に更新処理が実行されます。タスクスケジューラーではなく、サービスとして常駐する設計になっています。

ライセンスに関する注意

コミュニティエディション(無償)でも基本的な動作は可能です。ただし、商用利用の場合は有償ライセンスの購入が必要です。価格の目安は以下のとおりです(2024年時点)。

プラン対象価格(年間)
Starter1サーバー$599
Power Pro25サーバーまでそれ以上

個人・非商用目的での利用であればコミュニティエディションで問題ありません。


方法2:win-acme(CLIベース)

ツールの概要

win-acmeはシンプルかつ柔軟なWindows向けACMEv2クライアントです。コマンドラインで対話的に操作できるほか、JSONファイルやPowerShellスクリプトによる自動化にも対応しています。IISのほか、ExchangeやADFSなど複数の用途に利用できます。

インストール

  1. 公式サイトからZIPファイルをダウンロードします(例:wacs 2.2.9.1
  2. 任意のフォルダに展開します
  3. 展開フォルダ内の wacs.exe を実行します

事前準備:IISバインディングの設定

win-acmeはIISのバインディング情報を参照してドメインを自動検出します。そのため、証明書取得前にIIS側でHTTPSバインディングを設定しておくことを推奨します。

  1. IIS管理ツールでDefault Web Siteのバインドを開きます
  2. HTTPSバインディングにホスト名(例:cert-test2-dev1.example.net)を設定します
  3. 証明書は一時的なものを割り当てておいて構いません

証明書の取得手順

コマンドプロンプトまたはPowerShellで wacs.exe を実行します。

wacs.exe

起動後、対話形式でメニューが表示されます。

NM::CCrreeaatteecceerrttiiffiiccaattee((dfeuflalulotptsieotntsi)ngs)

シンプルに取得する場合は N を入力します。

  1. IISのバインディングが検出されると、対象サイトとして表示されます
  2. 対象サイトを選択します(例:Default Web Site)
  3. すべてのバインディングを対象にする場合は A を入力します
  4. 利用規約に同意します(Y
  5. メールアドレスを入力します
  6. HTTP-01チャレンジでドメイン所有権の確認が自動的に実行されます
  7. 確認が完了すると、証明書が発行されIISバインディングにも自動で割り当てられます

バインディングが事前に設定されていない場合は M(フルオプション)を選択し、ドメイン名を手動入力することでも対応できます。

取得後の確認

IIS管理ツールでサーバー証明書とバインディングを確認します。Let’s Encryptから発行された証明書が割り当てられていれば成功です。ブラウザでHTTPSアクセスし、鍵マークが表示されることを確認してください。

自動更新の仕組み

win-acmeは証明書取得時に Windowsタスクスケジューラー にタスクを自動登録します。

win-AaMcm9e:0r0enew

このタスクが毎日実行され、有効期限が近い証明書を自動的に更新します。win-acmeは無償で利用でき、商用利用に関するライセンス制限もありません。


2つのツールの比較

項目Certify Certificate Managerwin-acme
操作方法GUICLI(対話形式)
商用利用有償ライセンス必要無償
自動更新方式Windowsサービスタスクスケジューラー
IIS連携手動でバインディング設定が必要な場合ありバインディングまで自動設定
向いている用途個人・非商用での簡単セットアップ商用・自動化を重視する場合

まとめ

Windows Server(IIS)でLet’s Encryptの証明書を無料取得・自動更新する方法を2つ紹介しました。

  • Certbot for Windowsは2024年2月にサポートが終了しており、現在は代替ツールへの移行が必要です
  • Certify Certificate Manager はGUIで直感的に操作できますが、商用利用には有償ライセンスが必要です
  • win-acme はCLIベースで完全無償のため、商用環境でも安心して利用できます。タスクスケジューラーによる自動更新も自動設定されます
  • どちらのツールでも、IISのバインディング設定を事前に行っておくとスムーズに進みます
  • LinuxはCertbot、WindowsはWin-acmeというように用途・OSに応じてツールを使い分けることで、すべてのVMでコストゼロの証明書管理が実現できます