我需要恢复一个应用程序,以便它可以在被淘汰之前被第三方安全地存档。
为了在不危及整个服务器的情况下做到这一点,我想强制用户在连接之前进行身份验证,这意味着需要 TLS。
不幸的是,该服务器(xxx.xxx.xxx.120)上的 443 端口已被另一个应用程序(使用自己的 HTTP 服务器的 Web 邮件系统)占用,因此我为该服务器添加了一个新的公共 IP(xxx.xxx.xxx.120),并在 IIS 中为这个新 IP 上的端口 443 添加了绑定:
我还确保其他应用程序未绑定在 0.0.0.0:443 上,而是使用特定的 IP 地址。
最后,我运行netstat -ano | find ":443"
并得到了这个:
TCP xxx.xxx.xxx.120:443 0.0.0.0:0 LISTENING 3016
TCP xxx.xxx.xxx.120:443 0.0.0.0:0 LISTENING 3016
xxx.xxx.xxx.120 是初始服务器 IP 地址,新的 IP 地址为 xxx.xxx.xxx.122。
为了保险起见,我还运行了netstat -aon | Find "xxx.xxx.xxx.122:443"
(新 IP),但没有得到任何结果,正如预期的那样。
不幸的是,当我尝试启动 Web 应用程序时,收到了以下错误消息:
如果 IIS 尝试绑定的 IP:Port 已被占用,而 netstat 却明确表示可用,则 IIS 会抛出此错误。
我错过了什么?
编辑:当我尝试启动该服务时,系统事件日志中有两个事件:
Log Name: System
Source: Microsoft-Windows-IIS-W3SVC
Date: 7/19/2014 11:59:44 AM
Event ID: 1004
Task Category: None
Level: Error
Keywords: Classic
User: N/A
Computer: xxxx
Description:
The World Wide Web Publishing Service (WWW Service) did not register the URL prefix https://XXX.XXX.XXX.122:443/ for site 2. The site has been disabled. The data field contains the error number.
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Microsoft-Windows-IIS-W3SVC" Guid="{xxxxx}" EventSourceName="W3SVC" />
<EventID Qualifiers="49152">1004</EventID>
<Version>0</Version>
<Level>2</Level>
<Task>0</Task>
<Opcode>0</Opcode>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2014-07-19T09:59:44.000000000Z" />
<EventRecordID>119596</EventRecordID>
<Correlation />
<Execution ProcessID="0" ThreadID="0" />
<Channel>System</Channel>
<Computer>xxxx</Computer>
<Security />
</System>
<EventData>
<Data Name="UrlPrefix">https://XXX.XXX.XXX.122:443/</Data>
<Data Name="SiteID">2</Data>
<Binary>20000780</Binary>
</EventData>
</Event>
和
Log Name: System
Source: Microsoft-Windows-HttpEvent
Date: 7/19/2014 11:59:44 AM
Event ID: 15005
Task Category: None
Level: Error
Keywords: Classic
User: N/A
Computer: XXX
Description:
Unable to bind to the underlying transport for [::]:443. The IP Listen-Only list may contain a reference to an interface which may not exist on this machine. The data field contains the error number.
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Microsoft-Windows-HttpEvent" Guid="{xxx}" EventSourceName="HTTP" />
<EventID Qualifiers="49152">15005</EventID>
<Version>0</Version>
<Level>2</Level>
<Task>0</Task>
<Opcode>0</Opcode>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2014-07-19T09:59:44.330234300Z" />
<EventRecordID>119597</EventRecordID>
<Correlation />
<Execution ProcessID="4" ThreadID="88" />
<Channel>System</Channel>
<Computer>XXX</Computer>
<Security />
</System>
<EventData>
<Data Name="DeviceObject">\Device\Http\ReqQueue</Data>
<Data Name="Address">[::]:443</Data>
<Binary>0000040002003000000000009D3A00C0000000000000000000000000000000000000000000000000430000C0</Binary>
</EventData>
</Event>
答案1
2. 事件“[::]:443”中显示的 IP 地址看起来像 IPv6。也许两个 Web 应用程序都尝试绑定除您指定的 IPv4 地址之外的所有 IPv6 地址。尝试暂时禁用 IPv6,看看问题是否消失。