超簡単!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を管理者として実行します。

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

N:Create certificate を選択します。

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

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

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

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

承認するかで yes

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

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

設定確認

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

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

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

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

サイトへのアクセス

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

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

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

ルート証明書の期限

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

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

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

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

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

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

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