HTTPS 连接失败,IIS 7.0 和 7.5 中的网站删除 SSL 绑定

本文可帮助你解决以下问题:在 Internet Information Services (IIS) 7.0 和 7.5 中为网站删除 HTTPS 连接失败和 SSL 绑定。

原始产品版本: Internet Information Services
原始 KB 数: 2025598

现象

假设出现了下面这种情景:

  • 你有一个在 Internet IIS 7.0 或更高版本上运行的 Web 应用程序,该应用程序使用 SSL 绑定进行配置。
  • 间歇性地,通过 HTTPS 连接到网站会失败。
  • 除非站点配置为需要 SSL 连接,否则用户仍可以通过 HTTP 访问站点。

出现问题时,尝试通过 HTTPS 浏览到网站的用户可能会看到警告消息,指出 SSL 证书已过期或无效,或者网站名称不正确。 如果站点管理员打开 IIS 管理器以查看站点的 SSL 设置,他们可能会发现网站的 SSL 绑定已被删除,或者已替换为无效的证书绑定信息。 最后,系统事件日志中记录了类似于以下内容的事件:

日志名称: 系统
来源:Microsoft-Windows-HttpEvent
日期:2010/3/31 2:43:28 PM
事件 ID:15300
任务类别:无
级别: 警告
关键字:经典
用户:无
计算机:IISServer
说明:
已删除端口的 SSL 证书设置:x.x.x.x:443

原因

网站的 SSL 绑定已被删除且未替换,或者已被删除并替换为无效的证书信息。 发生此问题的原因是旧版 SSL 证书哈希属性干扰了当前 SSL 绑定,导致删除正确的绑定。

解决方法

<CustomMetaData> applicationHost.config 文件的部分中找到以下属性,并将其删除:

<key path="LM/W3SVC/X">
     <property id="**5506**" dataType="Binary" userType="1" attributes="None" value="oXiHOzFAMOF0YxIuI7soWvDFEzg=" />
</key>

此属性是 IIS 6.0 中的旧功能,不再需要此功能。

详细信息

自定义 5506 属性在 IIS 6.0 中用于存储 SSL 证书哈希。 当应用程序或服务(依赖于 IIS 7.0 或 IIS 7.5 中的 ABO 映射器)尝试启动时,它会尝试初始化 ABO 树结构,其中包括生成自定义节点和属性。 在此过程中,它会从 <CustomMetaData> 节中读取,并尝试映射 ABO 树结构中的属性。 在映射期间,它会删除HTTP.SYS中的当前 SSL 绑定,并使用上述旧哈希值重新创建一个新绑定。 如果此值无效,则无法在HTTP.sys中添加新的 SSL 绑定。 这将导致网站没有有效的 IP:与HTTP.sys中的 SSL 绑定对应的端口组合。 使用空白或无效的 SSL 绑定,与网站的 HTTPS 连接将失败。

重现步骤

可以通过在 applicationHost.config 文件的节<CustomMetadata>添加以下内容来重现此问题:

<key path="LM/W3SVC/X">
    <property id="5506" dataType="Binary" userType="1" attributes="None" value="oXiHOzFAMOF0YxIuI7soWvDFEzg=" />
</key>

完成此作后,启动需要 ABO 映射程序的任何应用程序,例如启动 IIS 管理器(Inetmgr6.exe),或使用 ADSUTIL.vbs 枚举元数据库将导致本文中所述的问题。