PowerShell 嵌入式管理單元:使用 IIS PowerShell 嵌入式管理單元設定 SSL
由 IIS 小組
若要啟用 SSL,需要三個步驟:
- 取得及安裝憑證
- 在 IIS 中建立 SSL 系結
- 將憑證指派給 IIS 系結的 IP:Port
選擇性地:
- 在您的網站上強制執行 SSL
取得及安裝憑證
取得憑證是一項棘手的業務。 您網站的使用者必須信任憑證,這就是您必須從受信任的憑證授權單位單位取得憑證的原因。 不過,為了進行測試,您可以建立自己的憑證。 在此逐步解說中,我們將使用所謂的自我簽署憑證。 可協助我們建立自我簽署憑證的工具稱為 MAKECERT,而且是 Visual Studio SDK 工具的一部分。 下列 MAKECERT 命令會建立自我簽署憑證,並在 「my」 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:\> dir cert:\localmachine\my
Directory: Microsoft.PowerShell.Security\Certificate::localmachine\my
Thumbprint Subject
---------- -------
7ABF581E134280162AFFFC81E62011787B3B19B5 CN=MyTestServer
注意
您的憑證指紋將會不同!
現在,讓我們使用 IIS PowerShell 嵌入式管理單元來建立 SSL 系結,並將它與我們剛才建立的憑證產生關聯
建立 SSL 系結
我們會使用名為 New-WebBinding 的其中一個工作型 Cmdlet,將 SSL 系結新增至預設網站:
PS IIS:\> New-WebBinding -Name "Default Web Site" -IP "*" -Port 443 -Protocol https
您可以使用下列命令查看系結集合:
PS IIS:\> Get-WebBinding 'Default Web Site'
protocol bindingInformation
-------- ------------------
http *:80:
https *:443:
將憑證指派給 IIS 系結的 IP:Port
現在會變得有點棘手,因為 SSL 設定會儲存在HTTP.SYS組態存放區中,而且命名慣例稍有不同。
- 在 HTTP.SYS您必須使用 0.0.0.0 來指定所有 IP 位址;在 IIS 中,您會使用星號 (*) 。
- 在 IIS 中,您會使用 「:」 來分隔系結。 因為 PowerShell 會將冒號視為磁片磁碟機指示器,改為使用驚嘆號:
您可以 CD 到 IIS:\SslBindings 目錄,並查詢現有的 SSL 系結。 IIS 預設安裝上的目錄將會是空的:
PS IIS:\> cd SslBindings
PS IIS:\SslBindings> dir
現在,您可以使用我們在步驟一取得的憑證雜湊,並將它與 0.0.0.0.0 () 和 SSL 埠 443 的所有 IP 位址產生關聯:
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 系結。