Windows_Server-2012でLet’s Encryptによる証明書を取得する

こんにちは、HACKNOTEのJunya.kです。
これはWindowsのIIS上にLet’s Encryptによる証明書を適用する方法についての記事です。

リモートデスクトップ接続

AWSのEC2インスタンスとして作成したWindowsサーバーにリモートで接続します。
ここではMacから接続する方法を説明します。Windowsからの接続については他記事を御覧ください。

Microsoft Remote Desktopの利用

App StoreからMicrosoft Remote Desktopをインストールします。
Macには標準でRemote Desktopのアプリがインストールされていますが、こちらは不可解な挙動などが多く、今回はMicrosoftのアプリケーションを利用します。

アプリを起動し、+Newを選択します。
起動したいサーバーの情報を入力します。



入力できたらMy Desktopsから作成したものを選択し、起動します。なお、Windowsサーバーの場合デフォルトでUSキーボードが設定されていますので、パスワードなどに記号が含まれている場合キーが異なる場合があるのでご注意ください。
証明書についてのダイアログが出る場合がありますが、continueで起動します。

アクセスを可能にするファイルの作成

フォルダ内のファイルへのアクセスを可能にする設定ファイルを作成します。
ホームディレクトリの直下に.well-knownというディレクトリを作成します。これはコマンドプロンプトからしか作成することができません。

mkdir .well-known

さらにこのディレクトリの下にacme-challengeというディレクトリを作成し、先程解凍したフォルダにあったWeb_Config.xmlをコピーしてきます。
そして、それをweb.configとリネームしておきます。

これで完了です。

この作業をしておかないと、未定義の拡張子がMIMEのタイプに合致しないファイルと判断されてWebサイトからアクセスできず

[EROR] Authorization result: invalide [EROR] NullReferenceException: オブジェクト参照がオブジェクト インスタンスに設定されていません。

といったエラーが発行時に出てしまう可能性があります。

Let’s Encryptの導入

以下のリンクから最新版のwin-acme.v.~.zipをダウンロードします。
https://github.com/PKISharp/win-acme/releases
なお、一昔前の解説記事ではファイル名がlets-encrypt-simple.zipなどと表示されていますが、最近になって名前が変更されたもので、内容は同じです。
ダウンロードしたものを解凍すると以下のような内容になっています。

SSL証明書の発行

コマンドプロンプトを起動し、win-acme.exeを実行します。以下のようにメニューが表示されます。

新しく作成するのでNを選択し、ドメインを選択する画面に移ります。ここではこの場面でドメインを設定してみます。
4:Manually input host namesを選択し、ドメインを入力します。

今登録したドメインを選択することができるので、1を選択し、メールアドレスの登録などを行います。

登録したドメインにhtts://で接続することができれば成功です。