IIS 8.0 集中式 SSL 证书支持:SSL 可伸缩性和可管理性

作者:Shaun Eagan

兼容性

版本 说明
IIS 8.0 IIS 8.0 中引入了集中式 SSL 证书支持。
IIS 7.5 IIS 7.5 不支持集中式 SSL 证书支持。
IIS 7.0 IIS 7.0 不支持集中式 SSL 证书支持。

问题

随着更多的电子商务网站上线,以及更多的企业在线上存储和共享敏感文档,托管和扩展安全网站的能力变得越来越重要。 此外,使用云托管和弹性可伸缩性,必须动态添加和删除服务器容量。 在 Windows Server 2012 之前,在托管安全站点方面存在一些挑战:

  • SSL 可伸缩性:在多租户环境中(如共享托管)中,Windows Server 上可托管的安全站点数量存在限制,从而导致站点密度较低。
  • SSL 可管理性:证书存储在每个 Windows Server 的本地。 因此,需要在每台 Windows Server 上单独管理它们。 必须在每台服务器上重复一个简单的任务,例如续订证书。 此外,如果必须导入数千个证书,则添加新的 Windows Server 可能需要几个小时。

解决方案

在 Windows Server 2012 上,“集中式 SSL 证书支持”功能允许服务器管理员在文件共享上集中存储和访问证书。 与 Windows Server 2008 中引入的共享配置功能类似,可以将服务器场中的 Windows Server 配置为按需从文件共享加载证书。

借助此功能,SSL 绑定的管理体验大大简化。 对于 SSL,证书的 DNS 名称和 CN 名称必须匹配。 类似的协定可以进一步扩展到证书的文件名。 例如,www.contoso.com 将使用证书的文件名 www.contoso.com.pfx。 此协定支持 IIS 8.0 仅拥有一项 SSL 绑定,不论有多少安全站点在使用此功能。 通过 SNI 值或所请求网站的主机名,以及将它与证书的文件名相匹配,可以推断出相应证书。

分步说明

先决条件

  • IIS 8.0 安装在具有集中式 SSL 证书功能的 Windows Server 2012 上。 此功能是 IIS 的可选组件,未作为默认安装的一部分进行安装。

    • 若要安装此功能,在“服务器管理器”中,请务必在“安全”节点下选择“集中式 SSL 证书支持”:

      服务器管理器导航树的屏幕截图。选中并突出显示了“安全”节点下的“集中式 S S L 证书支持”选项。

  • 具有 NULL 密码的示例证书。 (或者,你可能拥有包含一个全局密码的示例证书。)

    • 证书必须具有 CN_name.pfx 的命名约定(即 www.contoso.com.pfx)。
    • 如果证书是通配符证书,请使用“_”作为通配符。 (即:_.contoso.com.pfx)。
    • 如果证书具有多个 CN 名称,则必须将其命名为单个文件。 (即 www.contoso1.com.pfxwww.contoso2.com.pfx等)
  • 两个文件共享:一个用于共享配置,另一个用于集中式 SSL 证书。

    • IIS 服务器正在使用共享配置。
    • 示例证书已复制到文件共享,用于集中式 SSL 证书。
  • \windows\system32\drivers\etc\hosts 已被修改为用于示例站点和证书。 例如,如果证书的 CN 名称为 centralCert0,则主机文件必须包含:

    127.0.0.1 centralCert0

已知 bug 的解决方法

此功能目前没有已知的 bug。

配置集中式 SSL 证书支持功能

  1. 打开“IIS 管理器”。

  2. 在左侧导航窗口中选择服务器节点:
    “I S 管理器”对话框的屏幕截图。显示导航窗口中的服务器节点。突出显示了 W I N 短划线 M M V 三个 A K 6 八 H G 选项。

  3. 在“管理”下,双击“集中式证书”:
    管理图标的屏幕截图。“集中式证书”图标突出显示。

  4. 在“操作”窗格中,选择“编辑功能设置”:
    “操作”窗格的屏幕截图。突出显示了“编辑功能设置”按钮。

  5. 输入以下信息:

    • 启用集中式证书:已选中

    • 物理路径:例如:\\ccdemo\centralcert

      • 这是证书所在的文件共享的 UNC 路径。
    • 用户名:指定对文件共享拥有读取访问权限的用户帐户。

    • 密码/确认密码

    • 证书私钥密码

      • 此为可选项。 如果证书没有密码,请将此保留为空。

      • 如果证书有一个全局密码,请在此处输入该密码。

        “编辑集中式证书设置”对话框的屏幕截图。已选择“启用集中式证书”。

  6. 集中式 SSL 证书支持功能现已准备就绪,可供使用。 请注意,IIS 管理器会读取证书并填充有关证书的最相关信息。 此信息会缓存,以提高性能。

  7. 值得注意的一项可管理性功能是按证书到期日期对证书进行分组的功能:
    “集中式证书”对话框的屏幕截图。在“分组依据”下拉列表中,突出显示了“过期日期”。

  8. 看看能够查看证书的简单程度:

    • 已过期

    • 明天到期

    • 本周到期

    • 下周到期

    • 下个月到期

    • 稍后

      “集中式证书”对话框的屏幕截图。在“文件名”列中,“已过期”、“明天”、“本周”、“下周”均突出显示。

创建安全 Web 网站

  1. 打开“IIS 管理器”。

  2. 在左侧导航窗口中选择“站点”:
    I S 管理器导航树的屏幕截图。突出显示“站点”选项。

  3. 选择“添加网站”:
    I S 管理器导航树的屏幕截图。已选择“网站”选项,并突出显示“添加网站”。

  4. 填写信息,就像创建任何站点一样:

    • 站点名称:centralCert0

    • 物理路径c:\inetpub\wwwroot

    • 类型:https

    • 主机名:centralcert0

      • 这是 Windows Server 2012 的新增功能,可为 SSL 指定主机名。
      • 此配置的实际值因正在使用的示例证书而异。
    • 需要服务器名称指示:未选定

      • 还可以选择“需要服务器名称指示”(如果选择)。 集中式证书存储不需要使用 SNI,但在使用 SNI 时可以正常工作。
      • 请注意,在开发人员预览版中,集中式证书存储也需要使用 SNI。 自 Beta 版起,该限制已被删除。
    • 使用集中式证书存储:已选定

      • 请注意,无需选择要使用的特定相应证书。
      • 通过使用命名协定,会自动选择相应的证书。 在此示例中,IIS 尝试从中央 SSL 证书文件共享读取 centralcert0.pfx。

      “添加网站”对话框的屏幕截图。已选择使用集中式证书存储。在“站点名称”框中,文本中心证书为零。

  5. 验证是否已创建站点:
    I S 管理器导航树的屏幕截图。在“站点”下,突出显示中央证书零。

  6. 这就可以了。 安全站点是使用集中式 SSL 证书支持创建的。 管理体验与共享配置和传统的 SSL 绑定非常相似。 不同之处在于:

    • 证书集中存储在文件共享上。
    • 可以为 SSL 站点指定主机名。
    • SSL 绑定未显式管理 1 到 1。

测试安全站点

打开浏览器并导航到 https://centralcert0/ 。 请注意,作为先决条件的一部分,你的主机文件应已修改为将此请求路由到 localhost:

中央证书零网页的屏幕截图。I I S8 显示在网页上。

此外,若要查看新的 SSL 绑定类型,请在提升的命令行窗口中输入以下内容:

netsh http show sslcert

命令行窗口的屏幕截图。窗口显示新的 S S L 绑定类型。S S L 绑定是主机名冒号端口。

请注意,SSL 绑定是“主机名:端口”,值为“*:443”。 此外,没有与此绑定关联的证书哈希,因为根据证书的文件名协定按需加载相应的证书。

方案

请尝试部署以下方案:

  • 集中式 SSL 证书支持旨在针对多租户环境进行缩放。 尝试使用此功能配置数千个安全站点。

  • 使用数千个证书,在提升的命令行窗口中运行以下命令。 请注意,无论安全站点的数量如何,都只有一个绑定:

    netsh http show sslcert

  • 尝试在此服务器场中添加新服务器。 使用共享配置和集中式 SSL 证书支持功能,现在是一个 3 步过程:

    1. 将新服务器配置为使用共享配置。

    2. 将新服务器配置为使用集中式 SSL 证书支持。

    3. 创建 SSL 绑定。 一个提升的命令行窗口,输入:

      add sslcert hostnameport=*:443 appid={00112233-4455-6677-8899-AABBCCDDEFF}
      
  • 与以前版本的 Windows Server 不同,Windows Server 2012 上的证书会按需加载到内存中。 使用集中式 SSL 证书支持功能配置数千个安全站点后,向其中一个安全站点发送 GET 请求并观察内存使用情况。 它是可以忽略不计的。 在以前版本的 Windows Server 上,如果配置了数百个安全站点,则仅仅发送一个 GET 请求就会导致 Windows Server 加载所有证书,从而导致内存使用率升高,并进一步限制可伸缩性。

  • 使用 SNI、传统和集中式 SSL 证书支持创建安全站点。 它们在设计上是能够共存的。

总结

你已成功探索 Windows Server 2012 中的集中式 SSL 证书功能。