IIS 7.5 多个子域相同的通配符证书
IIS 7.5 Multiple subdomains same wildcard certificate
这是一个奇怪的问题,因为我想做的就是扩展一个配置,该配置已经按照描述的方式正常运行,添加一个新网站,它只是一个现有 Web 应用程序的副本。
所以我们得到的是通配符证书*.business.com
我们已经有 8 个其他站点绑定到同一个 SSL 证书,每个站点都有自己的主机名。
- a.business.com
- b.business.com
- ..
- h.business.com
所有现有站点的 role/application/structure 都大不相同,因此从这个意义上讲,没有任何重复的文件或应用程序。
我正在尝试添加 x.business.com 但由于某些原因 IIS 不想知道它。
我会解释我所做的,希望有人能看到我的错误。
我的第一步是在域的 DNS 中设置 A 记录。
所以上面列出的所有其他 URL 都指向相同的 public IP 地址。
我们称它为 100.10.10.100
然后我在 IIS 中创建了一个简单的网站,其中包含一个简单的 default.htm 用于测试。
将主机名设置为 x.business.com 并绑定 SSL 证书(使用 appcmd)后,我测试了站点地址。没有什么。我的意思是说该站点无法访问的一般错误。此时没有日志,因为站点没有提供任何服务。
ping URL returns DNS 中设置的 IP 地址但没有响应。
为了尝试简化,我添加了另一个名为 TestSite 的简单站点。我在主机文件 127.0.0.1 TestSite 中创建了一个条目。尝试了 IIS 服务器浏览器,这也没有用。
然而,当我将 TestSite 更改为使用端口 81 然后进行测试时 http://testsite:81 我得到了肯定的响应。
然后我尝试扩展这个测试并制作了另一个 A 记录测试站点。business.com。将主机名添加到现有测试站点,然后尝试 http://testsite.business.com:81 失败。
回滚一切,它再次工作。
对于我的生活,我看不出我需要做什么才能让它工作。这似乎是一个 DNS 问题,但其他 8 个站点都可以使用相同的 IP address:port(例如 100.10.10.100:80)正常工作,多个站点绑定到同一个 SSL 证书没有问题并且已经从近两个站点工作年.
我想补充一点,我没有设置它,因此在黑暗中摸索,但我确信我过去做过类似的事情没有问题。
我已经搜索了几个小时,但没有发现任何明显遗漏的内容。当我看到很少有类似问题的帖子时,它也让我担心,这让我觉得我错过了一些真正基本的东西。
感谢您对诊断此问题的想法。
好的,大家可以放松一下了。
有两个问题是 DNS A 记录中的拼写错误。是的,这是我的。
不过,我还在默认网站中发现了一段有趣的代码。
Default.asp 有以下代码。看起来这是在对传入的 Web 请求和重定向进行一些转换。
// Redirect appropriately
response.buffer = True
response.clear
response.status = "301 Moved"
If InStr(sServerName,"a") > 0 Then
response.addHeader "Location", "https://a.business.com/" & Request.QueryString
Elseif InStr(sServerName,"b") > 0 Then
response.addHeader "Location", "https://b.business.com/" & Request.QueryString
End If
所以我添加了
// Redirect appropriately
response.buffer = True
response.clear
response.status = "301 Moved"
If InStr(sServerName,"a") > 0 Then
response.addHeader "Location", "https://a.business.com/" & Request.QueryString
Elseif InStr(sServerName,"b") > 0 Then
response.addHeader "Location", "https://b.business.com/" & Request.QueryString
Elseif InStr(sServerName,"x") > 0 Then
response.addHeader "Location", "https://x.business.com/" & Request.QueryString
End If
这是一个奇怪的问题,因为我想做的就是扩展一个配置,该配置已经按照描述的方式正常运行,添加一个新网站,它只是一个现有 Web 应用程序的副本。
所以我们得到的是通配符证书*.business.com
我们已经有 8 个其他站点绑定到同一个 SSL 证书,每个站点都有自己的主机名。
- a.business.com
- b.business.com
- ..
- h.business.com
所有现有站点的 role/application/structure 都大不相同,因此从这个意义上讲,没有任何重复的文件或应用程序。
我正在尝试添加 x.business.com 但由于某些原因 IIS 不想知道它。 我会解释我所做的,希望有人能看到我的错误。
我的第一步是在域的 DNS 中设置 A 记录。
所以上面列出的所有其他 URL 都指向相同的 public IP 地址。
我们称它为 100.10.10.100
然后我在 IIS 中创建了一个简单的网站,其中包含一个简单的 default.htm 用于测试。
将主机名设置为 x.business.com 并绑定 SSL 证书(使用 appcmd)后,我测试了站点地址。没有什么。我的意思是说该站点无法访问的一般错误。此时没有日志,因为站点没有提供任何服务。
ping URL returns DNS 中设置的 IP 地址但没有响应。
为了尝试简化,我添加了另一个名为 TestSite 的简单站点。我在主机文件 127.0.0.1 TestSite 中创建了一个条目。尝试了 IIS 服务器浏览器,这也没有用。
然而,当我将 TestSite 更改为使用端口 81 然后进行测试时 http://testsite:81 我得到了肯定的响应。
然后我尝试扩展这个测试并制作了另一个 A 记录测试站点。business.com。将主机名添加到现有测试站点,然后尝试 http://testsite.business.com:81 失败。
回滚一切,它再次工作。
对于我的生活,我看不出我需要做什么才能让它工作。这似乎是一个 DNS 问题,但其他 8 个站点都可以使用相同的 IP address:port(例如 100.10.10.100:80)正常工作,多个站点绑定到同一个 SSL 证书没有问题并且已经从近两个站点工作年.
我想补充一点,我没有设置它,因此在黑暗中摸索,但我确信我过去做过类似的事情没有问题。
我已经搜索了几个小时,但没有发现任何明显遗漏的内容。当我看到很少有类似问题的帖子时,它也让我担心,这让我觉得我错过了一些真正基本的东西。
感谢您对诊断此问题的想法。
好的,大家可以放松一下了。
有两个问题是 DNS A 记录中的拼写错误。是的,这是我的。
不过,我还在默认网站中发现了一段有趣的代码。
Default.asp 有以下代码。看起来这是在对传入的 Web 请求和重定向进行一些转换。
// Redirect appropriately
response.buffer = True
response.clear
response.status = "301 Moved"
If InStr(sServerName,"a") > 0 Then
response.addHeader "Location", "https://a.business.com/" & Request.QueryString
Elseif InStr(sServerName,"b") > 0 Then
response.addHeader "Location", "https://b.business.com/" & Request.QueryString
End If
所以我添加了
// Redirect appropriately
response.buffer = True
response.clear
response.status = "301 Moved"
If InStr(sServerName,"a") > 0 Then
response.addHeader "Location", "https://a.business.com/" & Request.QueryString
Elseif InStr(sServerName,"b") > 0 Then
response.addHeader "Location", "https://b.business.com/" & Request.QueryString
Elseif InStr(sServerName,"x") > 0 Then
response.addHeader "Location", "https://x.business.com/" & Request.QueryString
End If