PowerShell スナップイン: IIS PowerShell スナップインを使用した SSL の構成

発行日 : 2008 年 7 月 2 日 (作業者 : pharr(英語))
更新日 : 2009 年 3 月 9 日 (作業者 : pharr(英語))

SSL を有効にするには、次の 3 つの手順が必要です。

  1. 証明書の取得とインストール
  2. IIS の SSL バインドの作成
  3. IIS バインドの IP およびポートへの証明書の割り当て


オプションとして次の手順があります。

  • Web サイトへの SSL の強制


証明書の取得とインストール

証明書の取得は注意を要する業務です。Web サイトのユーザーが証明書を信頼する必要があります。そのため、証明書は信頼された証明機関から取得する必要があります。ただし、テスト目的で独自の証明書を作成できます。このチュートリアルでは、いわゆる自己署名入り証明書を使用します。自己署名入り証明書の作成に役立つツールとして MAKECERT と呼ばれるツールがあります。これは、Visual Studio の SDK ツールの一部です。次の MAKECERT コマンドでは、自己署名入り証明書を作成し、それを "個人" の Windows 証明書ストアに自動でインストールします。

makecert -r -pe -n "CN=MyTestServer" -b 07/01/2008 -e 07/01/2010 -eku 1.3.6.1.5.5.7.3.1 -ss my -sr localMachine -sky exchange -sp "Microsoft 
RSA SChannel Cryptographic Provider" -sy 12 

証明書プロバイダーを使用して、証明書ストア内にある証明書を参照できます。

PS IIS:\> makecert -r -pe -n "CN=MyTestServer" -b 01/01/2008 -e 01/01/2010 -eku 1.3.6.1.5.5.7.3.1 -s
s my -sr localMachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12
Succeeded


PS IIS:\> dir cert:\localmachine\my


    Directory: Microsoft.PowerShell.Security\Certificate::localmachine\my


Thumbprint                                Subject
----------                                -------
7ABF581E134280162AFFFC81E62011787B3B19B5  CN=MyTestServer

注 : 証明書の拇印はそれぞれ異なります。

それでは、IIS PowerShell スナップインを使用して SSL バインドを作成し、ここで作成した証明書に関連付ける手順を紹介します。

SSL バインドの作成

New-WebBinding というタスクベースのコマンドレットを使用して、既定の Web サイトに SSL バインドを追加します。

PS IIS:\> New-WebBinding -Site "Default Web Site" -IP "*" -Port 443 -Protocol https

次のコマンドを使用してバインド コレクションを参照します。

PS IIS:\> Get-WebBinding 'Default Web Site'

protocol                                          bindingInformation
--------                                          ------------------
http                                              *:80:
https                                             *:443:

IIS バインドの IP およびポートへの証明書の割り当て

SSL 設定は HTTP.SYS 構成ストアに格納されており、名前付け規則が少し異なっているため、注意を要します。

  1. すべての IP アドレスを指定する場合、HTTP.SYS では 0.0.0.0 を使用し、IIS ではアスタリスク (*) を使用します。

  2. IIS では、":" を使用してバインドを区切ります。PowerShell ではコロンをドライブの指定子として認識するため、代わりに感嘆符を使用します。

ディレクトリを IIS:\SslBindings ディレクトリに変更して、既存の SSL バインドのクエリを実行します。IIS の既定のインストールでは、このディレクトリは空です。

PS IIS:\> cd SslBindings

PS IIS:\SslBindings> dir

ここで、手順 1 で取得した証明書のハッシュを使用して、その証明書をすべての IP アドレス (0.0.0.0) および SSL ポート 443 に関連付けます。

PS IIS:\SslBindings> get-item cert:\LocalMachine\MY\7ABF581E134280162AFFFC81E62011787B3B19B5 | new-item 0.0.0.0!443

上記のコマンドによって、次の SSL バインドが生成されます。

IP Address       Port Store            Sites
----------       ---- -----            -----
0.0.0.0          443  My               Default Web Site

これで SSL の準備が完了しました。ブラウザーを開いて「https://localhost」と入力すると、サイトを参照できます。

まとめ

PowerShell で SSL をセットアップするのは、このようにわかりやすいプロセスです。まず証明書を取得する必要があります。次に、IIS の SSL バインドを作成し、IIS バインドの IP およびポートを使用して HTTP.SYS 内に SSL バインドを作成します。