PowerShell 管理单元:使用 IIS PowerShell 管理单元配置 SSL

作者:IIS 团队

若要启用 SSL,需要执行三个步骤:

  1. 获取和安装证书
  2. 在 IIS 中创建 SSL 绑定
  3. 将证书分配给 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 配置存储中,并且命名约定略有不同。

  1. 在 HTTP.SYS 中,必须使用 0.0.0.0 指定所有 IP 地址;在 IIS 中,使用星号 (*)。
  2. 在 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 绑定。