Windows-为什么firefox仅信任安装certutil的证书?

时间:2019-04-06 02:42:06

标签: windows firefox certificate certutil

我最近对Windows中的证书进行了研究。

我尝试两种不同的方式来安装证书:
1.使用certutil命令进行安装。例如:certutil -addstore -f "ROOT" rootCA.pem
2.使用Microsoft 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安装的证书。

有人可以告诉我为什么吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

根据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_SYSSE,分别)。

因此,很高兴知道您使用的版本。

要回答您的问题:由于搜索到的商店的标志是在Wiki中命名的,因此您似乎在API解决方案中使用了错误的商店。看一下函数CertOpenStore 而不是CertOpenSystemStore。这允许通过例如CERT_SYSTEM_STORE_LOCAL_MACHINE作为dwFlags打开Mozilla搜索商店。