获取和安装证书
获取证书是一项棘手的业务。 网站的用户必须信任该证书,这就是必须从受信任的证书颁发机构获取证书的原因。 但是,出于测试目的,可以创建自己的证书。 在本演练中,我们将使用所谓的自签名证书。 帮助我们创建自签名证书的工具称为 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:端口
现在,由于 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 中获取的证书哈希,并将其与 (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 绑定。