获取和安装证书

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