Brian F爱
从专注于角图,Web技术以yobet英雄联盟及波特兰的Node.js的Google开发人员专家中学习。
广告 ·ultimatecourses.com.
用终极课程学习角度正确的方式

IIS和HTTPS与主机标头的绑定

嗯,标题可能并不完全准确。老实说,我不知道这篇文章叫什么- 让我解释一下我所观察到的东西以及如何绕过这个问题。

IIS中的默认行为是您只能将SSL证书绑定到特定站点。并且,默认情况下,您无法为绑定指定主机标头值。这意味着SSL证书现在使用指定的IP地址绑定到所有站点的端口443。如果查看下面的屏幕截图,则会注意到主机名字段是灰色的,我们无法填充此功能。

绑定SSL证书的默认行为是仅允许将证书绑定到单个站点,而无需指定主机名。

原因

以下是IIS中网站的样本绑定:

  • www.example.com.

    • 10.11.1.60:80(http)
    • 10.11.1.60:443(HTTPS)
  • example.com.

    • 10.11.1.60:80(http)

我遇到的问题是我有多个站点绑定到共享IP地址。然后,我使用主机名字字段以确保该站点仅侦听指定主机的请求。您可能知道,这使您可以使用单个IP地址托管多个网站。

另一个问题是我只有一个单个站点证书绑定到www.example.com.域。证书无效example.com.。由于IIS的默认行为,用户访问时https://example.com.它们将收到安全警告,因为SSL证书的完全限定域名(FQDN)已发布www.example.com.,而不是example.com.

解决方案

问题有几个可能的解决方案:

  • 请勿将多个站点绑定到单个IP地址。将IP地址专用于使用HTTPS的每个站点。
  • 购买通配符证书以覆盖example.com域以及所有子域(包括www)。这将使您可以在设置站点绑定时指定主机名。
  • 让IIS.认为认为你有一个通配符证书。此HACK将使您可以为站点绑定设置单个站点证书的主机名值。

让我快速查看每个选项。

选项1:绝对可能,但经常与购买/租赁多个IP地址相关的额外费用。

选项2:如果您有多个子域,这是最好的解决方案。您还可以获得高达5或10个子域的UCC SSL证书,这可能比购买通配符证书价格较低。

选项3.:这是一个很酷的黑客,使我们能够指定主机名值。但是,如果我们想重定向“https://example.com.“ 至 ”https://www.example.com.“(或反之亦然),那么您仍然需要为两个FQDNS进行SSL证书。

主机名黑客

我不确定这是一个黑客,一个错误还是“功能”。但仍然可以看一下如何在IIS站点绑定中启用主机名值字段。要总结以下步骤,我们将更新证书的友好名称以以星号(*)开头。

  • 开始>>mmc.
  • 文件>添加/删除管理单元...
  • 选择证书然后点击添加>按钮
  • 证书管理单元窗口将打开,选择计算机帐户然后点击接下来>然后
  • 点击关闭添加或删除卡扣窗口。
  • 浏览到您的SSL证书。它可能位于个人>证书
  • 右键点击在证书上并选择属性
  • 改变友好的名称,以便他们是一个领先的星号(*)。

使用星号(*)预先添加证书友好名称。

请注意,这不会更改证书。当您将证书签名请求提交给SSL提供程序时,它仍然仅对您要求的FQDN有效。它还不会立即将此证书转换为UCC或通配符证书。它只使我们现在可以修改IIS中绑定的主机名值。

设置主机名值。

通过使用星号前进的证书友好名称,我们现在可以在IIS绑定中设置主机名值。

Brian F爱

嗨,我是布莱恩。我对类型名称,Angular和node.js感兴趣我嫁给了我最好的朋友邦妮,我住在波特兰和我滑雪(很多)。