WindowsでLet’s Encrypt証明書を設定するのは、特にほぼ自動化したい場合は、少々面倒な作業になることがあります。主な問題点は、証明書を発行し、IISで適切にバインドし、その後も手動で煩雑に更新せずに維持することです。当然ながら、Windowsは必要以上に手間をかけているからです。このガイドでは、こうした面倒な点の一部を解消し、一般的な手順を解説します。実際の経験に基づいた多くの調整やヒントも紹介します。
Windows IIS で Let’s Encrypt 証明書を生成してインストールする方法
自動化にはWACS(Windows ACME Simple)を使用する
- まず、 GitHubからWACSクライアントの最新バージョンをダウンロードします。win -acme.v2.2.9.1701.x64.pluggable.zipのような最新のzipファイルを探します。アクセスしやすい場所に解凍します。私は通常、Program Filesまたは専用のフォルダに直接保存するのが分かりやすいです。
- 管理者として実行します
wacs.exe。WACS はシステム証明書の設定と IIS の SSL 証明書のバインドを行う必要があるため、管理者として実行する必要がある可能性があります。 - サーバーに. NET Framework 4.7.2以降がインストールされていることを確認してください。これがないと、WACSが動作しなくなることがあります。Microsoftのサイトからダウンロードできます。
- ウィザードが起動し、何をするか尋ねられます。素早くセットアップするには、「N: — 証明書の作成(デフォルト設定)」を選択してください。新規インストール時やIISの設定が適切でない場合、「Webサイトが見つかりません」といったメッセージが表示されることがあります。原因は不明ですが、IISがすべてのサイトを登録していないか、ホストバインディングが壊れている可能性があります。その場合は、IISマネージャー(inetmgr)を開き、サイトバインディングを確認し、サイトにホスト名が設定されていることを確認してください。当たり前のことのように思えますが、このエラーがあらゆる問題を招いた例を何度も目にしています。
- その後、リストからサイト番号(またはサイト名)を選択し、 を押してAすべてのバインディングを選択し、Yで確定します。
- Let’s Encrypt の規約に同意するように求められますので、同意してください。
- 次に、メールアドレスを入力してください。これは更新通知に重要です。複数のドメインを管理している場合は、メールアドレスをカンマで区切ってください。
- さて、肝心な部分、つまり検証です。デフォルトはHTTP-01で、WACSはポート80で小規模なWebサーバーを起動することでこれを実行します。ファイアウォールでポート80が開いていることを確認してください。この設定をスムーズに動作させたいのであれば、例外はありません。ポート80が使用できない場合は、DNS検証という選択肢があります( WACSにはすべてのオプションが用意されています)。
- WACS は証明書を生成・取得し、システムストアにインストールして IIS にバインドします。とても簡単です。証明書ファイル(通常は*.pemと*.pfx)は に安全に保存されます
C:\ProgramData\win-acme\acme-v02.api.letsencrypt.org\Certificates。
ヒント:WACS がウェブサイトが見つからないと表示する場合は、IIS のバインディングを再確認してください。これは通常、ホスト名またはバインディングの問題です。iisreset変更後もサイトが表示されない場合は、IIS を再起動すると問題が解決する場合があります ( )。
リニューアルの本当の仕組みと重要性
- Let’s Encrypt 証明書の有効期限は 90 日間ですが、WACS は更新が必要かどうかを確認するために毎日実行されるスケジュールされたタスク ( win-acme renew ) を設定します。
- 更新コマンドは次のようになります
wacs.exe --renew --baseuri "https://acme-v02.api.letsencrypt.org/"。これは自動で実行されますが、このタスクが無効になっていないことを確認してください。設定によっては、Windows タスク スケジューラで手動で更新する必要がある場合もあります。 - ヒント:更新が行われない場合は、タスクのプロパティを確認してください。また、一部のサーバーでは、ポート80がブロックされている場合やIISがポートをすぐに解放しない場合、更新が失敗することがあります。そのような場合は、更新が失敗したり、手動でキックする必要が生じたりする可能性があります。
HTTPをHTTPSにリダイレクトしてシームレスにする
証明書をインストールしたら、ユーザーをHTTP接続のままにしておくべきではありません。トラブルを招くだけです。IISのURL書き換えモジュールを使って、すべてのHTTPトラフィックをHTTPSにリダイレクトしましょう。設定には、ポート80の受信リクエストを443にリダイレクトする簡単なルールを作成するだけで済みます。チュートリアルは数多くありますが、古いHTTP接続は安全ではないように見え、ユーザーを混乱させるので、試してみる価値はあります。
RDS ゲートウェイと Web アクセスに Let’s Encrypt を使用する
RDS をご利用の場合、信頼できる証明書の設定は少し手間がかかりますが、可能です。WACS を使用して RDS Web インターフェース用の証明書を発行し、エクスポートして RDS 構成で手動でバインドします。通常は、.pfxファイルをエクスポートし、RDS ツールを使って手動で追加します。さらに良い方法は、 GitHub リポジトリにあるような PowerShell スクリプトを使ってインポートを自動化することです。ただし、証明書は 60~90 日ごとに変更されるため、定期的にサムプリントを更新するか、そのプロセスを自動化する必要があります。
場合によっては、インポートをスクリプト化し、Restart-Service TSGateway更新直後にRDSサービス(など)を再起動することで、手間を大幅に省くことができます。ただし、スケジュールされたタスクでこの処理が自動的に行われるようにしてください。そうしないと、RDS接続で「証明書が無効です」というエラーが発生します。
少し面倒に聞こえるかもしれませんが、一度設定してしまえば、あとは更新がスムーズに実行されるかを確認するだけです。簡単なスケジュールジョブで証明書の問題が完全に解決する設定もあれば、ネットワークやIISの不具合が邪魔になる設定もありました。なぜうまくいくのかはよく分かりません。特定の環境ではうまくいくのですが、そうでない環境ではうまくいかないのです。
これで誰かの何時間も無駄な時間を省けるといいのですが。ポート80を開いたままにして、更新ログを監視するのを忘れないようにしてください。これで何度か助かりました。満足です。
まとめ
- WACS を管理者としてダウンロードして実行し、IIS サイトを選択してウィザードを実行します。
- HTTP 検証用にポート 80 が開いていることを確認してください。
- 証明書はフォルダーに保存されます
Certificates。IIS バインディングをオンラインで検証します。 - スケジュールされた更新タスクを確認し、時々手動で更新をテストしてください。
- RDS の場合、スクリプトを使用して証明書をインポートし、サービスを自動的に再起動します。
まとめ
WindowsでLet’s Encryptを動作させるのは簡単ではありませんが、WACSを使えばそれほど大変ではありません。主な作業は初期設定と、ポート80/443がアクセス可能で適切に設定されていることを確認することです。これさえ済めば、あとはほぼ自動的に完了します。うまくいかない時もありますが、その場合は手動で更新するか、ファイアウォールのトラブルシューティングを行うだけです。これで、トラブルシューティングにかかる時間を少しでも短縮できれば幸いです。