常時SSLが一般的になってきています。
レンタルサーバのWordPressでは、簡単にLet’s Encryptを利用して独自ドメインのURLをSSL化する事ができます。
問題は業務利用しているIIS利用中のaspです。
こいつもSSL化しなければ。
環境は、WindowsServer2019の上で動いているIIS10です。
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を見ると
これだけ対応しているようですが、記事が圧倒的に多いwin-acmeを利用します。
win-acme (.NET)
ダウンロードします。
Gitではこんな感じで掲載されています。
展開した中身はこんな感じです。
IISサーバのバインドを開きます
あらかじめホスト名を追加しておきます。
以下の手順を実行する前にダウンロードした、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 だそうで、この近辺には少し情報をあさっておいた方が良さそう。