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 绑定
我们将使用基于任务的 cmdlet 之一(名为 New-WebBinding)来将 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
现在,可以使用我们在步骤 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 绑定。