logo资料库

彻底解决IE无法浏览密钥长度512位以下HTTPS网站的方法.docx

第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
资料共4页,全文预览结束
摘要:自 Microsoft 在 2012 年 8 月 14 日发布的“最小密钥长度更新(2661254)” 安全通报和 2013 年 11 月 12 日发布“重要数字签名中的漏洞可能允许拒绝服务 ( MS13-095 , 更 新 2868626 ) ” 的 安 全 公 告 有 关 内 容 , WindowsXPSP3 和 Windows7 从非安全更新 (2661254)开始阻止使用长度少于 1024 位的弱 RSA 密钥的功能,Windows 8 或 Windows Server 2012 已经包含了阻止使用长度少于 1024 位的弱 RSA 密钥的功能。但是 1024 位以下密钥作为过渡阶段的 HTTPS 服务器有一定的存在数量,特别是采用 SSL 硬件加密卡方式加密的网站来说, 需要更长的时间周期来替换,而业务往往又不能中断,结合实际工作中碰到的问 题,通过仔细研究,提出了比较完整的、详细的解决方案。 关键字:HTTPS 服务器;密钥长度;Windows 更新;注册表 问题提出: 根据 Microsoft 在 2012 年 8 月 14 日发布的“最小密钥长度更新(2661254)” 安全通报和 2013 年 11 月 12 日发布“重要数字签名中的漏洞可能允许拒绝服务 ( MS13-095 , 更 新 2868626 ) ” 的 安 全 公 告 有 关 内 容 , WindowsXPSP3 和 Windows7 从非安全更新 (2661254)开始阻止使用长度少于 1024 位的弱 RSA 密钥的功能,非安全更新 2868626 是 2661254 的替代;而 Windows 8 或 Windows Server 2012 已经包含了阻止使用长度少于 1024 位的弱 RSA 密钥的功能。其 结 果 是 在 安 装 了 以 上 更 新 包 的 WindowsXPSP3 ( 以 上 更 新 包 不 适 合 WindowsXPSP2)和 Windows7 系统和所有的 Windows8 系统的 Internet Explorer (以下简称 IE)浏览器将不允许访问使用密钥长度少于 1024 位的 RSA 证书 保护的网站。WindowsXPSP3 系统使用 IE8.0 浏览器浏览该类网站时,出现如图 1 所示的提示,无法显示网页。Windows7 和 Windows8 下使用 IE 浏览器出现类 似错误。在实际工作中会给我们带来诸多不便,特别是大型企业用户访问内部网 站时会更多碰到此类问题。 解决方法: 要解决上述问题最好的办法是服务器端及时更新证书,按照上述 Microsoft 安全通告的建议将证书密钥长度更新到 1024 位以上,建议是 2048 位。但是,在 服务器端无法及时取代密钥长度少于 1024 位的 RSA 证书而业务又无法中断 的情况下,客户端可以采用以下方法解决这个。 方法 1:安装第三方浏览器
经过测试,Chrome(谷歌)浏览器(测试了另外几个都不行)可以浏览此 类网站,IE8.0 和 Chrome44.0 的结果对比如图 2 所示,在 Chrome 中可以选择“继 续前往 XX(不安全)”继续显示网页。 方法 2:删除已安装的更新 通过“控制面板”-“添加/删除程序”中的“显示更新”选项,找到相应的安全更 新包,删除掉,即可。通过深入研究,现在已经知道影响这个证书长度的更新包 有 2661254、2808679 和 2868626 三个更新,如果发现系统里有多个要逐个删除。 这个方法实际工作中存在不足:一方面这方法只能适用 WindowsXP 和 Windows7 这两个通过更新包升级的系统,而对于 Windows8 和 Windows Server 2012 已经包含在系统里了,就无能为力;另一方面有些系统无法通过上述的“添 加/删除程序”功能删除,更有些会出现删除后更新包里面显示已经没有了,但实 际没有删除成功,本人在用虚拟机实验过程中就曾出现过这样的情况,结果用删 除 WindowsXP 的 SP3 补丁包回退到 SP2,然后重新安装 SP3 升级包的方法才解 决。 方法 3:使用注册表设置允许密钥长度少于 1024 位 此方法是最有效也是最彻底的解决方法。 根据 Microsoft 安全公告中的说明,用于控制对密钥长度少于 1024 位的 RSA 证书的检测和阻止的注册表路径是 HKEY_LOCAL_MACHINE\Software \ Microsoft \ Cryptography \ OID \ EncodingType 0 \ CertDLLCreateCertificateChainEngine \ Config , 其 控 制 值 有 MinRsaPubKeyBitLength 、 EnableWeakSignatureFlags 、 WeakSignatureLogDir 、 WeakRsaPubKeyTime 四个。有以下两个方法通过设置一个或几个参数组合来实 现用 IE 浏览器访问证书密钥长度少于 1024 位的网站。 方法 1:设置 MinRsaPubKeyBitLength 为需要的值 MinRsaPubKeyBitLength 是定义所允许的最小 RSA 密钥长度的 DWORD 值。默认情况下,此值不存在,所允许的最小 RSA 密钥长度为 1024。根据有 关说明和实际测试,客户端通过定义 MinRsaPubKeyBitLength 这个参数来实现获 得对密钥长度少于 1024 位的 RSA 证书的访问许可权限,从而实现用 IE 浏览 器访问该类证书的密钥长度少于 1024 位的网站。 具体命令:
1、对于 Windows XP、Windows Server 2003 和 Windows Server 2003 R2 系 统 来 说 , 可 以 使 用 注 册 表 编 辑 器 、 reg 命 令 或 reg 文 件 来 创 建 “HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Cryptography \ OID \ EncodingType 0 \ CertDLLCreateCertificateChainEngine \ Config \ MinRsaPubKeyBitLength”并赋于需要的值,如要将系统设置成允许访问证书密钥 长度 512 位以上(包括 512 位)的所有网站,那就将此值设为 512(十进制)。 命令如下: reg add "HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\ OID \ EncodingType 0 \ CertDLLCreateCertificateChainEngine \ Config" /v MinRsaPubKeyBitLength /t REG_DWORD /d 512 /f。 运行结果如下,这时候的标题是“证书错误,导航已阻止”,页面上是“此网 站的安全证书有问题”,可以选择“继续浏览此网站(不推荐)”正常访问该网站 : 2、对于 Windows7、Windows8 等用户既可以使用注册表编辑器、reg 命令 或 reg 文 件 来 创 建 “HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Cryptography \OID \EncodingType 0 \CertDLLCreateCertificateChainEngine \ Config\MinRsaPubKeyBitLength”并赋于需要的值,也可以使用 certutil 命令更 改这些注册表设置(以管理员身份运行),如要将系统设置成允许访问证书密钥 长度 512 位以上(包括 512 位)的所有网站,那就将此值设为 512(十进制)。 命令如下: certutil -setreg chain\minRSAPubKeyBitLength 512 经过这样设置,在 Windows7 和 Windows8 下就也可以通过 IE 浏览器访问上 述密钥长度少于 1024 位的网站。 方法 2:设置 EnableWeakSignatureFlags 的值为 8 EnableWeakSignatureFlags DWORD 值有三个可能的值:2、4、6 和 8。其 中 8 是启用日志记录,不强制阻止长度少于 1024 位的密钥。这时如果设定了 WeakSignatureLogDir,那么当遇到长度少于 1024 位密钥时将被复制到物理 WeakSignatureLogDir 文件夹(如该文件夹不存在要先创建之)中。 设置方法同上,注册表命令:
reg add "HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\ OID \ EncodingType 0 \ CertDLLCreateCertificateChainEngine \ Config" /v EnableWeakSignatureFlags /t REG_DWORD /d 8 /f。 reg add "HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\ OID \ EncodingType 0 \ CertDLLCreateCertificateChainEngine \ Config" /v WeakSignatureLogDir /t REG_SZ /d "c:\Under1024KeyLog" /f。 Windows7、Windows8 下的 certutil 命令如下: certutil -setreg chain\EnableWeakSignatureFlags 8 certutil -setreg chain\WeakSignatureLogDir "c:\Under1024KeyLog" 总结: RSA 是 HTTPS 体系中最重要的算法,而且被证明 RSA 密钥要求在 2048 位以上才是安全的,但是 1024 位以下密钥作为过渡阶段的 HTTPS 服务器有一定 的存在数量,特别是采用 SSL 硬件加密卡方式加密的网站来说,需要更长的时 间周期来替换,而业务往往又不能中断。所以采用本文介绍的通过注册表修改方 法较好地解决了这个实际问题,有着很大的实际意义。 陈慧蕊 工商银行杭州软件开发中心 陈连春 建设银行台州分行电子银行部
分享到:
收藏