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 设置的任务。
现在我面临的问题是:
- 无法在同一个 IIS 上配置所有 URLs 配置,根据给我的任务,我应该在同一个 IIS 上配置它们。
- 收到一条奇怪的消息(附图片),它不允许我在同一台机器上的同一台 IIS 上配置我上面的所有网站 URL。
- 也在尝试阅读 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 方法。
- 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 sslcert
和 netsh 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 地址下。
我有一种情况,我正在处理 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 设置的任务。
现在我面临的问题是:
- 无法在同一个 IIS 上配置所有 URLs 配置,根据给我的任务,我应该在同一个 IIS 上配置它们。
- 收到一条奇怪的消息(附图片),它不允许我在同一台机器上的同一台 IIS 上配置我上面的所有网站 URL。
- 也在尝试阅读 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 方法。
- 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 sslcert
和netsh 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 地址下。