windows - windows - 为什么firefox只信任certutil安装的证书?
问题描述
我最近研究了 Windows 中的证书。
我尝试了两种不同的方式来安装证书:
1. 使用 certutil 命令安装。例如:certutil -addstore -f "ROOT" rootCA.pem
2. 使用微软 api 安装。
certStore = CertOpenSystemStore(NULL, "ROOT")
CertAddEncodedCertificateToStore(
certStore,
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
rootCACert,
len(rootCACert),
CERT_STORE_ADD_REPLACE_EXISTING,
NULL
)
安装后,我用certmgr.msc
它来检查它是否成功。
并且Firefox的security.enterprise_roots.enabled
设置为True。
但是我发现了一个奇怪的情况。
Firefox 只信任 certutil 安装的证书。
有人可以告诉我为什么吗?
提前致谢!
解决方案
根据Mozilla Wiki,版本之间存在差异:
从版本 49 开始,... Firefox 将检查 HKLM\SOFTWARE\Microsoft\SystemCertificates 注册表位置(对应于 API 标志 CERT_SYSTEM_STORE_LOCAL_MACHINE)
和
从版本 52 开始,Firefox 还将搜索注册表位置 HKLM\SOFTWARE\Policies\Microsoft\SystemCertificates\Root\Certificates 和 HKLM\SOFTWARE\Microsoft\EnterpriseCertificates\Root\Certificates(分别对应于 API 标志 CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY 和 CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE)。
所以很高兴知道你使用的是什么版本。
回答您的问题:由于搜索的商店的标志在 wiki 中命名,您似乎在 API 解决方案中使用了错误的商店。看看函数CertOpenStore而不是CertOpenSystemStore
. 这允许通过例如CERT_SYSTEM_STORE_LOCAL_MACHINE
dwFlags 来打开 Mozilla 搜索的商店。
推荐阅读
- python-3.x - 如何在 opencv python 项目中使用完整的 GPU 加速?
- webpack - 删除并重新安装 node_modules 后,Vue cli 4.51 构建问题
- django - Django certbot 安装
- tensorflow - Tensorflow - 如何通过调整 .config 文件仅增加我的数据的一部分?
- android - 如何清除以前在自定义 ImageView android 上绘制的画布?
- logging - 将 pyspark stderr 从控制台写入特定目录中的日志文件
- flutter - 为什么 GestureDetector 不能在颤振中工作?
- r - 在特定值之后逐行转换为 NA
- vulkan - 1 个颜色附件从 2 个不同的通道映射到 2 个不同的输入附件是否合法?
- python - 从python运行c++函数