用户首先需要注意的是,Chrome 等主流浏览器并没有一个名为 `#enable-gmssl` 的通用实验性标志来开启国密支持。网传的该标志,很可能源自一些厂商基于 Chromium 开发的国产浏览器定制版本。
因此,Chrome 对国密证书的兼容,目前主要依赖将根证书导入到操作系统的信任存储区,并且这可能仍受限于操作系统和 Chrome 自身对国密协议栈的支持程度。下面是具体的操作步骤,主要分为三个核心环节。
1. 获取国密根证书
你需要从提供服务的国密CA机构的官方网站下载其根证书。常见的CA机构包括CFCA(中国金融认证中心)、GDCA(广东数字证书认证中心)等。证书文件常见的格式有 `.crt`、`.pem`、`.cer` 等。
2. 将根证书导入系统信任存储区(操作系统级)
对于非国产化操作系统的Chrome来说,这一步是核心。**Chrome 在 Windows 和 macOS 上使用的是操作系统的证书存储区。
Windows 系统
1. 在 Chrome 地址栏输入 `chrome://settings/security`,点击“管理证书”,或在 Windows 开始菜单搜索“管理计算机证书”。
2. 在证书管理器中,右键点击 “受信任的根证书颁发机构” 文件夹,选择“所有任务” > “导入”。
3. 在导入向导中,点击“浏览”选择你的国密根证书文件。
4. 在“证书存储”步骤,务必选择 “将所有的证书都放入下列存储”,并浏览选择 “受信任的根证书颁发机构”。
5. 按向导完成导入,必要时重启浏览器。
macOS 系统
1. 在访达的“应用程序” > “实用工具”中打开 “钥匙串访问”。
2. 在左侧边栏选择 “系统” 钥匙串。
3. 将你的国密根证书文件(如 `.crt` 或 `.pem`)直接拖拽到钥匙串列表中,或通过菜单栏“文件” > “导入项目”来添加。
4. 导入后,在列表中找到它并双击打开。在“信任”部分,将 “安全套接字层 (SSL)” 和 “X.509 基本策略” 都设置为 “始终信任”。关闭窗口时,系统会提示你输入密码保存更改。
Linux 系统
这通常需要通过命令行工具 `certutil` 来完成。
1. 确保已安装 `libnss3-tools` 包(Debian/Ubuntu)或 `nss-tools`(Red Hat/Fedora/CentOS)。
2. 打开终端,使用 `certutil` 命令将证书(必须为 DER 格式)导入到 Chrome 使用的 NSS 数据库中。
bash
# 找到 Chrome 的 Profile 目录,通常是 ~/.pki/nssdb/
certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n "给你的根证书起个名字" -i 你的国密根证书.der
或者,也可以将证书(PEM格式)添加到 `/usr/local/share/ca-certificates/` 目录,然后运行 `sudo update-ca-certificates` 命令进行系统级信任,具体效果视浏览器配置而定。
3. 验证与可能需要的其他配置
证书导入后,可以通过以下方式验证:
地址栏安全标识:访问国密HTTPS网站,地址栏应显示🔒锁形图标,且无“不安全连接”或“证书无效”等警告。注意,这可能只是表明连接使用了证书,而并非意味着国密协议套件协商成功。
关于实验性标志的真实情况:请再次注意,Chrome 不存在通用的 `#enable-gmssl` 标志。
其他备选方案:如果以上步骤后访问仍提示“ERR_CERT_AUTHORITY_INVALID”,可以尝试在Chrome启动时添加临时命令行参数 `--force-fieldtrials=RSAKeyUsageForLocalAnchors/DisabledLaunch` 来绕过部分安全限制。但这并非长久之计,且会降低浏览器安全性。
疑难排查
如果导入证书后浏览器仍不信任,常见的原因和解决办法如下:
确认证书链完整性:请确保已正确安装并信任了整个信任链上的**所有证书,而不仅仅是网站证书。
重启是关键:完成证书导入后,务必彻底关闭并重新启动Chrome,新的证书信任设置才会生效。
检查导入位置:请再次确认,你的根证书已被准确无误地导入到 “受信任的根证书颁发机构” 文件夹,而不是任何其他存储区。
文件格式问题:如果你的证书文件不能被识别,可以尝试使用 OpenSSL 等工具将其转换为 `.crt` 或 `.pem` 等常见格式。
管理员权限:在 Windows 系统上,向“受信任的根证书颁发机构”存储区导入证书需要管理员权限。如果遇到导入失败或灰色按钮,请以管理员身份运行 certmgr.msc。
总结
通过以上步骤,你就能在Chrome上手动完成国密根证书的导入配置。这并非开启一个隐藏开关那么简单,核心在于将国密根证书置入操作系统级的“信任列表”中,由浏览器使用它来验证站点证书的有效性。如果过程遇到问题,随时可以回来参考上面的排查建议。