超簡単!IISで運用中のホームページをSSL化-win-acmeを利用してLet’s Encriptを設定・自動更新

ホームページ

本ページは広告が含まれています。気になる広告をクリック頂けますと、サーバ運営費になります(^^

Google Chromeで表示できない

常時SSLが一般的になってきています。

レンタルサーバのWordPressでは、簡単にLet’s Encryptを利用して独自ドメインのURLをSSL化する事ができます。

問題は業務利用しているIIS利用中のaspです。

こいつもSSL化しなければ。

環境 Windows2019 サーバ上のIIS10

環境は、WindowsServer2019の上で動いているIIS10です。

win-acme

Let’s Encrypt は、与えられたドメインを制御する権限があなたにあることを検証し、証明書を発行するために、ACME プロトコルを使用しています。Let’s Encrypt の証明書を取得するためには、使用する ACME クライアントを1つ選ぶ必要があります。

ACME クライアント実装

Let’s Encryptの運営管理団体は、ISRGであり、公共の利益をもたらすデジタルインフラストラクチャプロジェクトの拠点として機能するために2013年5月に設立されています。

おすすめのACMEクライアントは「Certbot」と表記されているのですが、WindowsServerで導入事例を調べると、win-acmeの記述が多いです。というか、Certbotは、Apache,Nginxは対応しているようですが、IISは対応していないみたい。

だから、win-acmeなんですね、

公式サイトにある、Windows/IISを見ると

Windows / IIS

これだけ対応しているようですが、記事が圧倒的に多いwin-acmeを利用します。

win-acme (.NET)

ダウンロードします。

Gitではこんな感じで掲載されています。

win-acmeの設定

展開した中身はこんな感じです。

IISサーバのバインドを開きます

あらかじめホスト名を追加しておきます。

win-acme をProgram Files フォルダへ

以下の手順を実行する前にダウンロードした、win-acme フォルダを、C:\Program Files\win-acmeに移動します。

移動後、win-acmeを管理者として実行します。

実行するとコマンドプロンプトのような画面が表示されます。

N:Create certificate を選択します。

サイト名が表示されます。

すべてのサイトを選択したかったので <Enter>を入力しました。

mainホストを選びなさいという事なので、上に表示された1を選択

利用規約をデフォルトのアプリで読むか?との表示で、yes

承認するかで yes

e-mailは入力しませんでした。

特にエラーも表示されず、うまくいったようです。

実行ファイルの位置修正

最初にダウンロードしたwin-acme の場所を移動しておかないと、タスクスケジューラに実行ファイルの位置を登録されてしまうため、ファイルが見つからなくなり、実行できなくなります。

そんな時のタスクスケジューラの修正は下記の手順で行なえます。

 A simple Windows ACMEv2 client (WACS)
 Software version 2.2.9.1701 (release, trimmed, standalone, 64-bit)
 Connecting to https://acme-v02.api.letsencrypt.org/...
 Connection OK!
 Scheduled task looks healthy
 Please report issues at https://github.com/win-acme/win-acme

 N: Create certificate (default settings)
 M: Create certificate (full options)
 R: Run renewals (0 currently due)
 A: Manage renewals (1 total)
 O: More options...
 Q: Quit

 Please choose from the menu: O

 S: Manage secrets
 V: Manage global validation options
 T: (Re)create scheduled task
 E: Test notification
 A: ACME account details
 I: Import scheduled renewals from WACS/LEWS 1.9.x
 M: Encrypt/decrypt configuration
 U: Check for updates
 Q: Back

 Please choose from the menu: T

 Deleting existing task win-acme renew (acme-v02.api.letsencrypt.org) from Windows Task Scheduler.
 Adding Task Scheduler entry with the following settings
 - Name win-acme renew (acme-v02.api.letsencrypt.org)
 - Path C:\Program Files\win-acme
 - Command wacs.exe --renew --baseuri "https://acme-v02.api.letsencrypt.org/"
 - Start at 09:00:00
 - Random delay 04:00:00
 - Time limit 02:00:00

 Do you want to specify the user the task will run as? (y/n*)

設定確認

サーバ証明書を開いてみます。

サーバ証明書が登録されています。

証明書の更新用にタスクも登録されてます。

SSLのポートである、443もバインドされています。すごい、win-acmeはよくできてる。至れり尽くせりです。

サイトへのアクセス

今までhttpでアクセスするとこんな感じで表示されてました。

しかーし、Google Chromeは、自動的にhttpsに補完されます。

しっかりと保護されており、証明書も「発行者R3」で登録されています。

ルート証明書の期限

今回取得したLet’s Encryptの証明書は、Windowsのタスクスケジューラに組み込まれ、更新切れを起こさないように自動的に更新してくれます。

しかし、それを証明する認証局の証明書は時々変更される事があるようで、その時に問題が起きないかは少し注意していた方が良さそうです。

古いルート証明書から新しいルート証明書への移行は完全に透過的だが、実際には過去に問題が発生している。特に古いソフトウェアを使っている場合は注意が必要だ。

Helme氏は特に、今回の期限切れで次のソフトウェアやプラットフォームが影響を受ける可能性が高いとして注意を呼びかけている。

9月末でLet’s Encryptルート証明書が期限切れ、古い製品は要注意

基本的には、透過的に移行されるという表現なのですが、古いAndroid端末は対応できなかったりするそうで。

R3への証明書の有効期限は 2025/9/16 だそうで、この近辺には少し情報をあさっておいた方が良さそう。

win-acmeのLet’s Encrypt自動更新がいつの間にか止まっていた時の復旧手順

Windowsサーバー(IISなど)で win-acme を使ってLet’s Encryptの無料SSL証明書を運用していると、「ある日突然、証明書の期限が切れて更新されなくなった」 というトラブルに遭遇することがあります。

今回は、自動更新タスクが消失してしまった場合の確認箇所と、正しい復旧手順(特にタスク作成時の罠)について解説します。

1. 現状の確認:何が起きているのか?

まず、wacs.exe を立ち上げて現状を確認します。 更新が止まっている場合、メインメニューに以下のような不穏なメッセージが表示されているはずです。

Plaintext

Scheduled task not configured yet

(訳:スケジュールタスクがまだ設定されていません)

さらに、更新メニューを見ると:

Plaintext

R: Run renewals (1 currently due)

(訳:更新実行:1つが期限切れ、または期限間近です)

原因は明白です。 Windowsの「タスクスケジューラ」に登録されていたはずの自動更新タスクが、何らかの原因(サーバー移行、アップデート、手動削除など)で消えてしまっています。このままでは手動でコマンドを叩かない限り、永遠に証明書が更新されません。

2. 復旧手順

復旧は以下の2ステップで行います。

  1. 緊急対応: とりあえず今の証明書を更新する
  2. 恒久対応: 自動更新タスクを再登録する

ステップ1:手動更新(緊急対応)

まずは期限切れ(または寸前)の証明書を新しくします。 win-acmeのメニュー画面で R キーを押してください。

エラーが出ずに Success となれば、証明書の実体は更新されます。Webサイトにアクセスして、鍵マークが正常に戻ったか確認しましょう。

ステップ2:自動更新タスクの再登録

次に、消えてしまったタスクスケジューラを再登録します。 ここが一番のハマりポイントです。

  1. win-acmeのメニューから O (More options…) を選択します。
  2. その中のメニューから、スケジュールタスクを作成・修復するオプションを探して実行します(バージョンにより操作が異なりますが、T などが割り当てられていることが多いです)。

すると、以下のような質問が表示されます。

Plaintext

Do you want to specify the user the task will run as? (y/n*)

(訳:タスクを実行するユーザーを指定しますか?)

ここで y (Yes) を選んでしまいがちですが、基本的には n (No) を選ぶことを強く推奨します。

なぜユーザーを指定してはいけないのか?

ここで特定のユーザー(例:Administrator)とパスワードを入力して設定すると、将来そのユーザーのログインパスワードを変更した瞬間に、タスクが認証エラーで動かなくなります。 これが「いつの間にか更新が止まっていた」原因のNo.1です。

n (No) を選ぶと、win-acmeは「SYSTEMアカウント(ローカルシステム権限)」でタスクを作成します。これならユーザーのパスワード変更の影響を受けず、安定して自動更新が稼働し続けます。

3. まとめ

win-acmeの更新が止まっていたら、以下の手順で復旧させましょう。

  1. wacs.exe を起動し、R で手動更新して急場をしのぐ。
  2. 「Scheduled task not configured」と出ていないか確認する。
  3. タスクを再作成する際、ユーザー指定は No を選び、システム権限で動かす。

これで、次回からは忘れた頃に勝手に更新してくれるはずです。

最後にちゃんとタスクスケジューラに登録されているか確認しようね。

タイトルとURLをコピーしました