IIS10 多个站点和多个 SSL 证书的 SSL 配置

IIS10 SSL Configuration for Multiple Sites and more than one SSL Cert

我有一种情况,我正在处理 URL 路由的 IIS 网站配置。 我已添加网站并在服务器上导入所需的证书。

我的情况是(我有多个网站 URL 和两个 SSL 证书 - 如下所示):

qatest1.abc.com

qatest2.abc.com

qatest3.abc.com

需要在一个 SSL 证书上配置以上 3 URLs - 即 QA 证书

另一个URL是:

perftest.abc.com

为此 URL 有一个单独的证书作为 PERF(性能)证书

这就是我在 MS IIS 10 上配置 IIS 设置的任务。

现在我面临的问题是:

  1. 无法在同一个 IIS 上配置所有 URLs 配置,根据给我的任务,我应该在同一个 IIS 上配置它们。
  2. 收到一条奇怪的消息(附图片),它不允许我在同一台机器上的同一台 IIS 上配置我上面的所有网站 URL。



  3. 也在尝试阅读 SNI(但不确定在这种情况下如何使用 SNI)。

需要可以支持我的 IIS 专家的帮助 activity 才能完成。

#1 - 可以通过 CLI 命令(appcmd 和 netsh)或脚本(PowerShell)和编程(c#)实现,但不能使用 IIS 管理器 GUI afaik。

#2 -(见#1)。 IIS 管理器很愚蠢,会用最后选择的证书覆盖现有的绑定。如果您单击是,您最终会将绑定附加到错误的证书。这是 IIS 管理器 GUI 而非 IIS 的限制。

#3 - 您想要打开 SNI。这意味着您可以拥有与同一 IP 地址关联的多个证书。如果没有 SNI,每个证书需要 1 个 IP 地址

这 2 个链接会让您了解如何使用 appcmd 和 netsh - 这是创建所需配置的 quickest/easiest 方法。

  1. Binding a certificate with netsh

如果您了解 PowerShell("POSH"),您可以使用 IISAdministration PowerShell cmdlet New-IISSiteBinding 创建绑定并与证书指纹相关联(尽管 netsh 对于调试和修复问题仍然很有用)。

两种方法都可以让您真正配置 2 个东西 - IIS 的绑定 Windows/SChannel/HTTPS.sys(操作系统组件实际上负责 'S' 'HTTPS').有时它们会不同步,最简单的解决方法是删除并重新创建绑定(例如,在对“至少一个其他站点正在使用相同的 HTTPS 绑定...”单击“是”之后)。

小提示:

  • 一旦您开始使用此配置 IIS 管理器或 Windows Update/software 安装可能会在某些时候破坏您的绑定。编写一个脚本,可以删除并重新创建端口 443(仅!)的所有绑定,以便您可以轻松解决未来的问题。
  • 如果您使用 netsh - 它对语法非常挑剔。使用命令 netsh http add sslcert.
  • 时,参数的顺序和间距很重要
  • 虽然您的测试 netsh http show sslcertnetsh http delete sslcert 对尝试不同的配置非常有用(这不会删除证书,只会删除绑定)
  • 证书需要在机器证书存储中并记下路径。使用 POSH 或 netsh 时,始终指定证书指纹和安装证书的 store\path。
  • 如果您需要 IIS 站点上的默认 HTTPS 绑定(例如负载平衡器健康检查等),请在任何命名的 HTTPS 绑定之前添加它。

最后 - 如果您的域都是 abc.com 下的 1 级,那么获得通配符证书将为您省去很多麻烦。一个 *.abc.com 证书将涵盖您的所有域,您可以完全避免此限制。

祝你好运!

您可以使用此检查服务器名称标识,以避免出现证书提示。

此功能提供了一种更简单的解决方案,可以在单个 IP 地址上托管具有不同或单独 SSL 的多个站点。

每个 HTTPS 绑定都需要一个唯一的 IP/port 组合,因为主机 Header 不能用于区分使用 SSL.This 的站点是因为主机 header 在期间不可见SSL 握手。

服务器名称指示 (SNI) 允许服务器安全地托管多个站点的多个 TLS 证书,所有站点都在一个 IP 地址下。