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

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

原始产品版本: Internet 信息服务
原始 KB 编号: 2025598

症状

请考虑以下情况:

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

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

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

原因

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

解决方案

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

<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 枚举元数据库)将导致本文中所述的问题。