linux系统如何将根证书预置到chromium浏览器中

本文详细介绍了如何将根证书预置到Linux系统的Chromium浏览器中,包括通过操作系统内置证书和修改浏览器代码两种方法。特别是对于国密根证书,如沃通根证书的处理步骤,涉及到证书下载、格式转换、导入以及代码修改等环节。测试结果显示,只有部分浏览器支持这种预置证书的方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

方法一、操作系统内置证书

1.准备

2.编译

3.下载根证书

4.证书格式转化

5.导入根证书

6.重编译

7.获取lib,替换系统so

8. 浏览器代码分析

9、测试结果

方法二 修改chromium浏览器代码


       最近接到一个需求就是将根证书预置到浏览器中,也就是当用户直接安装浏览器访问https服务器的时候不会出现不信任的情况。由于某些浏览器的证书读取是从操作系统中读取的,因此可以使用预置根证书到操作系统中。从而内置根证书。

下面文章将帮助你解决这个问题。

方法一、操作系统内置证书

1. 编译前准备

// hg命令

sudo apt-get install mercurial
cd ~
mkdir nss
cd nss

// 获取源码

hg clone https://hg.mozilla.org/projects/nspr
hg clone https://hg.mozilla.org/projects/nss

2.编译

编译前准备

sudo apt install g++
sudo apt install zlib1g-dev

 开始编译构建项目

nss/build.sh

make -C nss nss_build_all USE_64=1 -j16

3.下载根证书

我们这里以内置国密沃通根证书为例。当然其他的证书的方法也是一样的

https://www.wotrus.com/root/SM2_intermediateca.htm

4.证书格式转化

注意导入的证书的格式是der格式,因此需要将证书的格式专为der格式。

openssl x509 -outform der -in WoTrus-SM2.crt -out WoTrus-SM2.der

openssl x509 -outform der -in wtsm2_dv.crt -out wtsm2_dv.der

openssl x509 -outform der -in WoTrus-SM2_SSL_V3.crt -out WoTrus-SM2_SSL_V3.der

openssl x509 -outform der -in WoTrus-SM2_SSL_V4.crt -out WoTrus-SM2_SSL_V4.der

5.导入根证书

在nss目录中执行一下代码。导入国密SM2根证书

国密证书在nss目录中。

./nss/cmd/addbuiltin/Linux4.19_x86_64_cc_glibc_PTH_64_DBG.OBJ/addbuiltin -n 国密SM2根证书 -t "C,C,C" -i WoTrus-SM2.der >> ./nss/lib/ckfw/builtins/certdata.txt

删除否个已经信任的证书

./nss/cmd/addbuiltin/Linux4.19_x86_64_cc_glibc_PTH_64_DBG.OBJ/addbuiltin -D -n "" -i WoTrus-SM2.der

6.重编译

nss/build.sh

make -C nss nss_build_all USE_64=1 -j16

7.获取lib,替换系统so

sudo cp ./dist/Linux4.19_x86_64_cc_glibc_PTH_64_DBG.OBJ/lib/libnssckbi.so /usr/lib/x86_64-linux-gnu/nss

8. 浏览器代码分析

因为在crypto/nss_util.cc代码中,初始化时会加载libnssckbi.so内的根证书

9、测试结果

支持该方案预制证书到浏览器器中,只有chrome、Opera支持,统信浏览器、360浏览器、edge浏览器。

其余浏览不支持该方式预制。

测试浏览器如下:

奇安信可信浏览器、龙芯浏览器、qq浏览器、火狐浏览器。

1.后期导入的根证书存放在数据库中,数据库目录为

方法二 修改chromium浏览器代码

   我们知道默认加载数据库的目录,将这个目录复制一次,放在别的目录中,再导入到浏览器中就可以了。

修改crypto/nss_util.cc代码

在NSSInitSingleton(){}中添加一下代码

   //加载uos_nssdb
    PK11SlotInfo* db_slot = SECMOD_OpenUserDB("configDir='sql:/usr/share/browser/.pki/uos_nssdb' tokenDescription='' flags=readOnly");

    if (db_slot) {
      if (PK11_NeedUserInit(db_slot))
        PK11_InitPin(db_slot, nullptr, nullptr);
    } else {
      LOG(ERROR) << "Error initializing NSS with a persistent database (/usr/share/browser/.pki/uos_nssdb) : " << GetNSSErrorMessage();
    }

国密根证书认证中心

  1. 中国电子认证有限公司(CEC):

    • 中国电子认证有限公司是中国国家密码管理局(国密算法的发布机构)设立的电子认证服务公司。它在国密领域有很高的信誉,提供了一系列的国密证书服务。
  2. 中国人民银行金融认证中心:

    • 金融认证中心是中国人民银行设立的金融行业CA中心,提供金融机构所需的数字证书服务,包括支持国密算法的证书。
  3. CFCA(中国金融认证中心):

    • 中国金融认证中心是一家提供数字证书服务的公司,也在国密领域提供相应的证书服务。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三雷科技

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值