ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Chrome和IE访问国密网站失败?手把手教你配置国密浏览器与证书

Chrome和IE访问国密网站失败?手把手教你配置国密浏览器与证书 上个季度给单位做终端适配遇到最多的不是业务系统本身的问题而是这个经典场面网站明明部署了国密SSL运维也确认证书状态正常结果同事的 Chrome 一打开就是ERR_SSL_PROTOCOL_ERRORIE 更直接白屏或者弹一个“此网站的安全证书有问题”。每次我都要重新解释一遍这不是网站坏了也不是用户不会用而是很多人把“国密网站”当成普通 HTTPS 站点来处理思路一开始就偏了。这篇文章就把 Chrome 和 IE 访问国密网站的几条可行路径、背后的原理差异以及我在实际维护中踩过的坑一起讲清楚。无论你是终端运维、网安同事还是只是某个业务系统的使用方按着后面的方案对照操作基本都能解决。1. 国密网站为什么把浏览器“卡死”在门口1.1 国密 HTTPS 用的不是同一套 TLS 协议普通 HTTPS 走的是 TLS 协议浏览器和服务器在握手阶段协商出一组密码套件然后通过证书完成身份校验。国密网站走的是 TLCP 协议对应的标准是 GMT 0024 以及后来的 GB/T 38636《信息安全技术 传输层密码协议》密码套件和证书算法完全是另一套体系。举个例子普通 TLS 里常见的是ECDHE_RSA_WITH_AES_128_GCM_SHA256证书签名算法是RSA-SHA256或ECDSA-SHA256。而国密 TLCP 里的密码套件通常是ECC_SM4_CBC_SM3、ECC_SM4_GCM_SM3这类证书的签名算法是SM2withSM3密钥交换和身份认证都基于 SM2 椭圆曲线算法。Chrome 和 IE 的内置加密库根本不认识 SM 系列算法所以在握手第一步收到服务器发来的“国密证书”之后就不知道怎么继续了。这就好比你用国内的手机卡去漫游一个只有专用制式的网络手机信号栏倒是显示有网但就是注册不上去。很多用户会把这类问题误判成“网络不通”或“证书过期”实际上双方都在正常通信只是语言不通。这也是为什么国密网站访问问题往往不是简单“刷新一下”就能好的。1.2 浏览器不支持国密本质上是算法库不支持Chrome 的密码学逻辑主要依赖 BoringSSL它只会启用被 IETF 标准接纳的算法套件。SM2、SM3、SM4 目前没有进入 IETF 的主流 TLS 标准所以 Chrome 不会在握手时把ECC-SM4-CBC-SM3这类套件放进 ClientHello 里。IE 的情况不太一样。IE 用的是 Windows 自带的 SChannel 安全提供程序SChannel 支持的套件列表里也没有国密套件。就算你手动在“Internet 选项”里勾选了一堆 TLS 版本也不会凭空多出 SM 系列算法。所以结论很直接想让 Chrome/IE 原生支持国密几乎不可能只能通过外部组件“补课”。补课的方式一般是两条路要么换一个自带国密算法库的浏览器要么给现有浏览器装一个能够接管国密握手过程的客户端/代理组件。1.3 先判断这个网站是不是真的“国密网站”排查问题之前建议先确认网站到底是不是国密网站。有些单位只是换了一张“国密算法证书”但服务器实际还是用 TLS 协议对外服务这种情况下 Chrome 完全能正常打开根本不需要额外折腾。判断方法可以看三点判断项普通 HTTPS 网站国密 TLS/国密 HTTPS 网站证书签名算法RSA-SHA256 / ECDSA-SHA256SM2withSM3握手协议TLS 1.2 / 1.3TLCP / 国密 TLS 扩展密码套件AES-GCM、CHACHA20 等ECC-SM4-CBC-SM3、ECC-SM4-GCM-SM3根证书颁发者国际 CA 或企业 RSA CA国密根 CA在 Chrome 里点地址栏左侧的小锁打开证书详情如果看到签名算法是SM2withSM3那基本就是国密网站了。如果看到的还是 RSA 签名那说明这个站点可能只是“部署了国密证书但没启用国密协议”或者走的是双证书自适应。先把这个弄明白后面才不会白忙活。2. 最稳的路线换上支持国密算法的浏览器2.1 主流的几个选择与选型依据如果单位有合规要求或者业务系统强制走国密套件最简单的办法不是折腾 Chrome而是直接装一个支持国密算法的浏览器。目前市面上常见的国密浏览器包括密信浏览器、红莲花浏览器、奇安信可信浏览器等部分安全厂商的浏览器也内置了国密支持。这些浏览器一般会在内核里集成国密算法库并在 UI 层面提供“国密站点”的标识提示。它们的基本能力大同小异差别主要体现在证书管理、审计、集中管控和更新机制上。选型时我建议优先考虑单位现有安全体系的兼容性比如如果已经有某厂商的终端管理平台就优先选同厂商的国密浏览器这样证书下发、策略配置、版本升级都能纳入统一管理省去很多手工运维成本。个人临时访问的话装哪个都行影响不大。但如果是要在一个几十人甚至上百人的单位推广一定要先做试点确认它和现有的 OA、网银、政务平台都能正常兼容。2.2 装完浏览器不等于万事大吉根证书必须自己导入很多国密浏览器内置了国密根证书列表但遇到企业自建的国密 CA或者某个小众 CA 签发的证书浏览器预置的根证书列表里未必包含对应根证书。这种情况下你还需要手动导入根证书。操作流程是这样的拿到根证书文件一般是.cer、.crt或.p7b格式。右键选择“安装证书”。存储位置选“本地计算机”不要选“当前用户”因为浏览器进程可能以系统级权限读取。选择“将所有证书放入下列存储”然后点“浏览”选择“受信任的根证书颁发机构”。完成安装后重启浏览器。这里有几个容易踩的坑。第一很多人图快直接双击证书就点“下一步”结果安装到了“个人”证书存储区浏览器根本不认。第二要导入的是根证书不是中间证书或服务器证书搞错层级的话浏览器依然会提示“证书不受信任”。第三导入根证书之后必须重启浏览器否则证书存储缓存不刷新依然报同样的错。还要提醒一句根证书等于一把万能钥匙它能验证这个 CA 名下的所有网站所以一定要确认来源可靠。单位自建 CA 的根证书分发要么走邮件加密压缩包要么走内网文件服务器签名下发不要通过不可信渠道传播。2.3 顺带解决 Linux/macOS 下的访问问题很多单位不光有 Windows 桌面开发测试环境还有 Ubuntu、macOS。这些系统上别说 IE 了Chrome 同样原生不支持国密而且 IE 内核根本不存在。最简单的方案还是装国密浏览器的跨平台版本。奇安信、密信、红莲花这些厂商基本都提供 Windows/Linux/macOS 版本装好后把根证书导入系统信任库访问逻辑和 Windows 下完全一致。如果必须坚持用 Chrome也可以考虑在虚拟机或容器里跑一个 Windows 环境再通过远程桌面把国密浏览器分享出来。这个方案适合测试环境正式办公环境不建议因为体验割裂而且证书和插件维护成本高。3. Chrome 强上国密站的实操与报错处理3.1 Chrome 扩展并不能单独解密还需要本地客户端配合很多人以为给 Chrome 装一个“国密插件”就能像装普通扩展一样解决问题实际上没这么简单。Chrome 扩展运行在浏览器沙箱里无法直接替换 BoringSSL 的算法实现所以市面上的国密“插件”方案通常是这么工作的一个本地代理服务监听本机某个端口比如127.0.0.1:8443。一个浏览器扩展或代理配置把发往国密网站的流量转发到本地代理。本地代理使用国密算法库完成 TLCP 握手再把内容通过 HTTP 或 HTTPS 转发回 Chrome。也就是说扩展只是流量入口真正干活的是随客户端一起安装的本地进程。这也是为什么很多人只装了浏览器扩展、没装客户端套件时依然打不开国密网站因为本地代理进程根本没起来。所以我建议你在下载国密访问组件时别只找 CRX 文件要认准整套“客户端安装包”。一般 CA 机构或安全厂商会提供一个集成安装包装完以后既包含本地代理服务也包含扩展并自动配置好 Chrome 的代理规则。3.2 手动加载 CRX 的完整步骤有些环境下客户端安装包没法自动关联 Chrome 扩展就需要手动加载。以 Windows 为例步骤如下先把国密客户端安装包里的扩展文件夹或 CRX 文件解压出来。在 Chrome 地址栏输入chrome://extensions/回车。打开右上角的“开发者模式”。点击左上角“加载已解压的扩展程序”直接选中刚才解压得到的扩展文件夹。加载成功后确认扩展页里能看到对应的国密扩展并且没有被 Chrome 标记为“已停用”。回到国密客户端主界面确认本地代理服务已启动端口号一般默认是 127.0.0.1 的某个高位端口。重新访问国密网站测试。这里最容易被忽略的是扩展文件的完整性。很多 CRX 文件是从网盘/邮件里流传的解压时可能会因为杀毒软件误隔离部分文件导致加载报错“程序包无效”。所以下载后建议先校验文件大小和校验值再解压解压路径尽量不要带中文或空格。3.3 还在用 Win7 的机器注意 Chrome 版本上限这个坑相当实际。Chrome 109 是支持 Windows 7 的最后一个大版本之后 Chrome 110 起全面放弃 Win7。如果你单位里还有一批 Win7 机器又必须用 Chrome 访问国密网站版本控制要提前确认。有些老牌的国密组件当初只验证到 Chrome 的某个内核版本Chrome 一旦自动升级到 110 以上扩展的加载方式变了本地代理的连接机制也可能被拦。我的建议是Win7 上锁定 Chrome 109.0.5414.xx 的最后一个离线安装包不要开自动更新。安装国密组件时先看官方说明确认支持的内核版本范围。如果新版组件支持老版本 Chrome优先用新版组件。另外Win7 上如果国密扩展无论如何都加载不了可以试一下把 Chrome 设置里的“安全浏览”保护等级降到标准并把“允许在非应用商店安装扩展”打开有时组策略默认关了会导致加载失败。3.4 最典型的几个 Chrome 报错和处理逻辑根据我的经验下面的报错占了日常工单的大头现象可能原因排查思路ERR_SSL_PROTOCOL_ERROR网站强制国密套件Chrome 没有国密能力先确认本地代理进程是否启动确认扩展状态换国密浏览器验证ERR_CERT_AUTHORITY_INVALID国密根证书未导入或证书链不完整重新导入根证书导入后重启浏览器访问国密网站时浏览器一直空白扩展已加载但本地代理端口不通查看本地客户端日志telnet 127.0.0.1 对应端口测试扩展被 Chrome 自动停用非应用商店扩展权限策略限制关闭开发者模式冲突或在组策略里添加扩展 ID 白名单先说一个排错顺序遇到打不开国密网站我一般会先换国密浏览器试一下。如果国密浏览器能打开说明问题在 Chrome 这边的组件上如果国密浏览器也打不开那问题大概率在证书、网络或服务端配置上别在 Chrome 上死磕。4. IE 的老路还能走但限制比想象中多4.1 SChannel 不认识 SM2IE 凭什么打开国密网站IE 的加密模块是 Windows 自带的 SChannel里面同样没有 SM2/SM3/SM4 的算法实现。理论上 IE 根本无法参与 TLCP 握手除非网站本身做了“双证书自适应”也就是服务器同时部署了国际算法证书和国密算法证书根据客户端支持的套件自动选择。如果网站是强制国密协议IE 打开就只会报“不能安全连接到这台服务器”或者干脆白屏。这种场景下想让 IE 继续工作就需要借助国密客户端组件一般是 ActiveX 控件或驱动程序。它们会在 IE 的网络栈里插入一个钩子把国密握手流量接管过来。这就解释了一个很常见的现象同一个网站本机装了银行的国密客户端后 IE 就能打开换一台没装客户端的电脑 IE 依然打不开。4.2 数字证书客户端/助手这类组件的安装套路很多国密网站特别是金融机构和企事业单位的门户会在登录页给出“证书客户端下载”入口。下载安装后的组件通常叫“XX证书助手”“XX安全客户端”“XX网银助手”之类的名字。安装顺序建议按下面来先用管理员权限运行安装包不要双击一下就完事。某些组件需要先装驱动安装过程会要求重启务必重启后再用 IE 尝试访问。把目标国密站点加入本地 Intranet 或受信任站点减小 IE 对 ActiveX 的拦截概率。打开 IE 的“管理加载项”找到对应的国密插件项确认状态是“已启用”。若第一次访问时 IE 底部弹出“是否安装 ActiveX 控件”的提示点允许。在 IE 的“Internet 选项 → 安全 → 自定义级别”里把“ActiveX 控件自动提示”设为启用可以少点几次弹窗。但要注意这只适合内网可信环境如果是在外网访问安全性还是得排在便利性前面。4.3 Edge 的 IE 模式能不能救急Win10/11 之后 Edge 还保留了一个 IE 模式很多人会问我把 Edge 切成 IE 模式是不是就能访问国密网站答案是看情况。Edge 的 IE 模式用 Trident 内核渲染老页面也能加载一部分 ActiveX 控件但它的网络栈和进程模型和独立 IE 并不完全一样取决于国密客户端组件的实现方式。实测中有些老网银控件在 IE 模式下确实能跑有些则识别不到组件。如果组件必须要独立的 iexplore.exe 进程IE 模式就不管用。最稳妥的做法还是把 IE 11 当作独立浏览器使用或者直接在虚拟机的纯净 Windows 环境里装客户端组件。考虑到 IE 生命周期已经结束我的态度是能用 IE 模式兼容就尽量兼容不能兼容的不要恋战尽快迁移到国密浏览器这才是长期解。5. 别忽略证书与服务端的配合问题5.1 服务端只有一套证书客户端怎么配置都白搭很多单位花大力气给用户装浏览器、装客户端结果问题出在服务端只部署了国际算法证书或者只部署了国密证书而没开启适配能力。这种情况下用户侧无论怎么折腾都没用。最常见也最推荐的做法是“双证书自适应”。服务器同时监听标准的 TLS 和国密 TLCP端口通常都是 443但内部根据 ClientHello 里的密码套件自动选择使用哪套证书。这样客户端能力强就走国际算法客户端装了国密组件就自动切到国密套件。如果是自建系统支持国密的 Web 服务器或中间件一般会提供专门版本比如国密版 Nginx、国密版 Tomcat。配置时重点确认三件事是否正确引入了国密算法提供程序很多国密版 Nginx 依赖国密 OpenSSL 动态库。是否分别配置了国际证书和国密证书两套证书链。是否开启 TLS 和 TLCP 双协议监听。只有服务端配好了Chrome/IE 这边的“访问失败”问题才有真正的解决基础。5.2 SM2 双证书和普通证书的区别要心里有数国密体系有个特点用户证书通常分为签名证书和加密证书两张。SM2 是非对称算法签名和加密使用的密钥对可以独立管理。普通网站上常见的用户证书是一张就够用国密体系下则可能出现“一个用户两颗证书”的情况。在浏览器访问国密网站时如果系统要求做双向认证客户端组件会同时读取签名证书和加密证书然后用签名证书完成身份认证。证书没导入完整或者 USB Key 只插了一半都会导致认证失败。对于普通访问者来说这个细节可能不会直接碰到但 IT 运维人员必须清楚。因为证书列表里同时出现两张类似的证书时没有经验的人很容易选错导致网站提示“证书不匹配”。5.3 常见服务端/证书相关报错排查链路如果已经排除了浏览器和客户端组件的问题下一步就按下面的链路看证书现象可能原因处理动作提示“证书链不完整”服务器没有下发中间证书导出完整证书链确认和根证书、服务器证书能形成闭合提示“该证书已过期或尚未生效”服务器或本机时间不同步先校正本机时间再检查服务器时间偏差Chrome 能看到锁头但 IE 打不开网站走的是标准 TLS不是国密协议确认服务端有没有真正启用 TLCP别只换证书不换协议协同客户端打开正常但证书列表显示不可用个人证书存储位置不对证书导入到“个人”存储区不是“根证书”存储区这条链路可以帮助你把问题定位在客户端还是服务端避免反复重装软件。6. 几则实测手记6.1 方案优先级建议下面这个优先级是我在实际维护中总结出来的按“能落地、少扯皮”的程度排场景推荐方案原因单位统一管控、有合规要求部署国密浏览器 统一下发根证书管理和排错成本最低行为可审计个人临时访问国密站点Chrome 国密客户端套件不用改变日常浏览习惯老系统依赖 IE 和 ActiveXIE11 机构证书客户端兼容老控件解决存量问题开发/测试环境国密浏览器跨平台版 本地代理抓包便于查看握手过程和证书链每次我处理这类问题都会考虑一个核心问题这个访问是一次性的还是长期的一次性的怎么做都行长期项目最好别用 Chrome 扩展这种脆弱方案一旦升级或策略变动就集体掉线。6.2 最容易翻车的三个小细节第一个是系统时间不同步。国密证书和普通证书一样有有效期校验电脑时间如果差了几个小时证书会被判成“不在有效期内”。单位域环境一般会自动同步非域电脑就经常踩坑。第二个是本地代理和已有网络代理的冲突。国密客户端通常通过本地代理接管流量如果用户同时配置了系统代理或浏览器代理扩展流量很可能没有走国密组件表现就是普通网站正常、国密网站还是打不开。排查时先清掉浏览器代理设置再试访问国密站点。第三个是清理浏览器 SSL 状态。Chrome 和 IE 都会缓存一些 SSL 会话状态如果之前访问失败过后续修正了问题但依然报错可以去“Internet 选项 → 内容 → 清除 SSL 状态”Chrome 则在chrome://net-internals/#sockets里把空闲套接字清掉再完全关闭浏览器重启。6.3 关于给 Chrome 装“国密插件”的个人看法最后说点实际的。如果能选我的个人建议是优先用国密浏览器而不是给 Chrome 硬塞插件。Chromium 内核迭代速度非常快每次大版本升级都可能影响扩展的权限模型和代理机制今天好不容易配好明天一个自动更新就全白搭。IE 那边就更不用说了微软早已停止支持能用一年是一年但别指望它是长期方案。真正省心的做法是单位层面把国密浏览器和根证书的安装包做成一键部署配合域策略或者终端管理平台分发。用户不需要理解 TLCP 和 TLS 的区别也不需要会看证书签名算法只要打开浏览器就能访问这才是运维的意义所在。希望这篇文章能帮你少踩几个坑。
返回列表