IIS (Internet Information Services) で Let's Encrypt の SSL 証明書を使用する
現在表示しているページは選択中の表示言語には対応しておりません。
環境
- Windows Server
-
- Windows Server 2019
- Internet Information Services
-
- 10.0
- win-acme
-
- v2.1.16.1
※ 他のバージョンでも動作しますが未確認です。
Let's Encrypt について
サーバー間との通信を暗号化して行うにはクライアントとサーバーの2つがあれば暗号化自体を行うことはできますが、その相手サーバーが正しいかどうかを証明することができません。
これを解決する方法のひとつとして第三者である認証局から取得した SSL 証明を使用することによって相手のサーバーが正しいことを証明できるのですが、認証局を使用するため定期的な費用が発生することがほとんどです。
そこで多くのスポンサーによって支援されている認証局である「Let's Encrypt」を使用することによって無償で SSL 証明書を取得することができます。今回は Let's Encrypt から SSL 証明書を取得して IIS で運用しているサイトに適用し HTTPS 通信ができるように設定します。
以下のリンク先が公式ホームページ (日本語) となります。
前提条件
- Windows Server がセットアップ済みであること
- IIS (Internet Information Services) をセットアップし、サイトが作成済みであること
- ドメインを取得済みであること
- ドメインから対象のサーバーにアクセスできること
- HTTP で Web サイトにアクセスできること
- ファイアウォールの設定で HTTPS (443) のポートで接続できるようにしておくこと
本 Tips では ASP.NET Core のプログラムで公開されているサイトを使用していますが、IIS のサイトさえあればサイトが動作している媒体はなんでも構いません。
win-acme の取得
SSL 証明書には必ず有効期限があります。そのため SSL 証明書は定期的に更新する必要があります。
Let's Encrypt から SSL 証明書を定期的に取得するには win-acme というツールを使うと便利なのでダウンロードします。
ダウンロードできるファイルがたくさんありますが、ここでは「win-acme.v2.1.16.1037.x64.trimmed.zip」をダウンロードします。 バージョンは時期によって変わる場合があります。arm64, x64, x86 については Windows Server であれば x64 で問題ありません。
ZIP ファイルから中身を取り出して Windows Server の任意のフォルダに展開します。ツールはセットアップに使用するだけなので場所はどこでも構いません。 一応プログラムが実行可能な場所においてください。
IIS の設定
win-acme を使用する前に IIS 側で事前設定が必要です。
IIS マネージャーを開いたら HTTPS でアクセスするサイトを選択し、右のメニューにある「バインド」をクリックします。
80 番ポートを選択して編集ボタンをクリックします。
取得済みのドメイン名をホスト名に入力します。サブドメイン限定でアクセスさせたい場合はサブドメインを入れて構いません。
win-acme の実行
win-acme はバージョンによって選択内容が変わったりするので、違うバージョンを使用している場合は違いを汲み取ってください。
展開したファイルから「wacs.exe」を「管理者権限」で起動します。
新しく作成するので「N」を入力します。
サイト名の一覧が表示されるので対象のサイトの番号を入力します。
特別な事情がない限りは「A」でいいです。
「y」と入力して確定します。
「Terms of service (利用規約)」が下記のフォルダにあるので読む場合は「y」を入力します。 ただ、Windows Server には標準で PDF を表示するアプリがないので、フォルダから PDF ファイルをコピーして読んだ方がいです。
同意する場合は「y」を入力します。
Let's Encrypt に関する問題などの通知を受け取る場合はメールアドレスを入力します。いれなくても問題ありません。
その後セットアップが開始され、エラーが特に表示されていなければ完了です。画面は閉じて問題ありません。
IIS から「サーバー証明書」を開くと証明書が追加されていることを確認できます。
証明書の有効期限は90日間です。
証明書の自動更新はタスク スケジューラで登録されていることを確認できます。
IIS マネージャーからサイトのバインドを表示すると自動的に HTTPS のバインドが作成されていることが分かります。
Web サイトにアクセスできることを確認した後、HTTP のアクセスが不要であれば削除して構いません。
確認
外部の Web ブラウザで「https://ドメイン名」でアクセスすると HTTPS で接続できることを確認します。
アドレスバーのカギアイコンをクリックすると証明書を確認できます。