我最近对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安装的证书。
有人可以告诉我为什么吗?
谢谢!
答案 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搜索商店。