IIS7:无法使用 SSL 证书和端口 443 在站点上设置主机名

p.c*_*ell 54 iis windows-server-2008 certificate iis-7 ssl-certificate

考虑一台装有 IIS7 的 Win 2008 SP2 机器。任务是将证书和主机名应用到这台机器上唯一的站点。网站的主机标题需要是abc.123.example.com

第一步是将 .pfx 安装到个人商店,这是成功的。

IIS7 发现证书可用,但不允许输入主机名。即使在选择我的证书之前,主机名文本框也总是被禁用/变灰。我什至删除了默认的 80 端口绑定。

网站绑定

问题:如何为该站点设置主机名?这个证书是通配符证书的问题吗?我了解到 SSL 请求进入 Web 服务器,并且数据包中的主机头是加密的。为什么 IIS6 允许指定主机头,而 IIS7 不允许?

更新:证书不是问题的一部分。我在机器上创建了一个新站点,在选择HTTPS绑定时,主机名称TextBox被禁用。

小智 50

它确实在 GUI 中工作...

只需确保您正在安装的证书的“友好名称”与您为证书制作的多域名相同。

IE。*.companydomain.com

如果您为 *.companydoman.com 证书输入“友好名称”,则在将证书安装到 IIS 时,主机名标题框将变灰。

如果您使用 *.companyname.com 作为友好名称,那么您就是黄金。

繁荣。

  • 谢谢你的提示!如果其他人无法从 IIS 重命名证书(有人可以吗?),您可以在 MMC 管理单元中为证书重命名证书。只需加载 MMC,添加证书管理单元,选择计算机帐户,本地计算机。加载证书管理单元后,您可以浏览到证书(本地计算机)> 个人 > 证书,然后右键单击以选择证书上的属性。将友好名称字段更改为 *.yoursite.com 并重新加载 IIS 管理器管理单元 (17认同)
  • 友好名称似乎只需要以“*”开头,但之后可以包含您想要的任何其他名称。在我的情况下,我有一个证书对几个不同的域有效,除了 *.com 之外没有共同的根,并且因为友好名称看起来很奇怪而给出。所以,我最终将它称为 *-my-descriptive-name-here。并感谢@Garrett 的重命名提示! (6认同)

joe*_*rty 34

您不能从 UI 执行此操作,必须从命令行执行此操作。这是一个很好的过程:

http://www.sslshopper.com/article-ssl-host-headers-in-iis-7.html

  • 方便的技巧,给证书一个以“*”开头的友好名称,IIS 不会使主机头框变灰:http://blog.armgasys.com/?p=80 (35认同)

Jus*_*ott 10

简短的回答是每个 IP 只能绑定一个证书,因此无论主机名指向该 IP 地址,证书绑定都将适用。能够指定主机名意味着您可以在同一 IP 地址和端口上拥有多个主机名和证书组合(就像使用非 SSL 条目一样),但事实并非如此,因此该字段不可用。

更完整的解释是 SSL 加密您的流量,而该流量的一部分是浏览器发送到服务器的 HTTP 标头。这些标头之一是“主机”标头,IIS 使用它来确定要加载请求的站点。由于需要在发送请求标头之前加载证书以建立安全连接,因此 IIS 必须仅根据 IP 地址和端口号选择证书,而将“主机”标头作为确定的因素留在冷场要加载哪个站点,因此他们不会让您输入一个站点。

这里有一篇文章更详细地概述了 SSL 连接内部工作原理

  • 主机标头可以使用通配符证书或多域“UC”证书:http://www.sslshopper.com/unified-communications-uc-ssl-certificates.html。在这种情况下,即使有多个主机名,服务器也只有 1 个证书可以提供服务。 (2认同)

Slo*_*ire 9

SSLShopper 的答案对我不起作用,因为它在没有主机标头的情况下保留了绑定,并且您无法在不中断与证书的连接的情况下删除该绑定。这是我用来让它工作的方法:

请注意,此答案假定您的证书已生成、添加到证书存储区并添加到 IIS。它还假设除了 SSL 之外,您不希望任何其他绑定到您的网站。

首先,我们需要收集一些信息。我们需要散列、应用程序 ID 和主机名。

脚步

  1. 打开 IIS,选择您的服务器并双击底部的“服务器证书”。请注意“颁发给”地址。这是我们的主机名。保存这个。
  2. 选择您的站点
  3. 使用 http 协议将您的站点绑定到端口 80
  4. 删除所有其他绑定
  5. 使用 https 协议将您的站点绑定到端口 443
  6. 打开命令提示符

    netsh http show sslcert
    
    Run Code Online (Sandbox Code Playgroud)
  7. 保存证书哈希和应用程序 ID

  8. 删除站点上的 https 绑定
  9. 在命令提示符下:

    netsh http add sslcert ipport=0.0.0.0:443 certstorename=my certhash=<put Certificate Hash here> appid={<put Application ID here>}
    
    appcmd set site /site.name:"<put site name here>" /+bindings.[protocol='https',bindingInformation='*:443:<put host name here>']
    
    Run Code Online (Sandbox Code Playgroud)

注意:Appcmd.exe 可以在 C:\Windows\System32\inetsrv 中找到。您可能需要在该文件夹中才能使用此命令。

  1. 从您的站点中删除 http 绑定


小智 5

这里接受的答案令人困惑,我认为这个问题不正确。这不应该是公认的答案。

问题

您有一个通配符 SSL,例如*.ipsum.com并且安装了证书,但是当您尝试添加 HTTPS 绑定时,您无法在 IIS 中为站点选择主机名,因为文本框是灰色的。

解决方案

您的通配符 SSL 可用于任何子域,您只需要确保证书的友好名称以*. 我更喜欢使用与通配符域相同的友好名称,例如,*.ipsum.com但您可以将其称为带有星号的任何东西:*foo

我给我的证书错误的友好名称,救命!

从 Windows 8 或 Server 2012 开始,您可以certlm.msc在开始菜单中键入以管理本地机器的证书。在以前版本的 Windows 上,您需要做一些稍微复杂的事情:

  1. mmc.exe从头运行
  2. 转到File菜单并选择Add/Remove Snap-in...或点击(Ctrl-M)
  3. 突出显示Certificates单元和命中Add >,然后选择Computer Account之后Local Computer在随后出现的对话框然后打Finish之后OK,关闭管理单元窗口

在主窗口中,展开Certificates (Local Computer)Personal然后Certificates,你就可以用鼠标右键单击该证书,打Properties在那里你可以更新友好名称。

关闭并打开 IIS 管理器,然后您可以设置您的主机名。