PowerShell スナップイン: IIS PowerShell スナップインを使用した SSL の構成
発行日 : 2008 年 7 月 2 日 (作業者 : pharr(英語))
更新日 : 2009 年 3 月 9 日 (作業者 : pharr(英語))
SSL を有効にするには、次の 3 つの手順が必要です。
- 証明書の取得とインストール
- IIS の SSL バインドの作成
- 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 構成ストアに格納されており、名前付け規則が少し異なっているため、注意を要します。
すべての IP アドレスを指定する場合、HTTP.SYS では 0.0.0.0 を使用し、IIS ではアスタリスク (*) を使用します。
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 バインドを作成します。