Windows - Почему Firefox только доверять сертификату, который certutil установить? - PullRequest
0 голосов
/ 06 апреля 2019

Я недавно исследовал сертификат в 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 голосов
/ 11 апреля 2019

Согласно Mozilla Wiki существуют различия в версиях:

Начиная с версии 49, ... Firefox будет проверять расположение реестра HKLM \ SOFTWARE \ Microsoft \ SystemCertificates(соответствует флагу API CERT_SYSTEM_STORE_LOCAL_MACHINE)

и

Начиная с версии 52, Firefox также будет искать места в реестре HKLM \ SOFTWARE \ Policies \ Microsoft \ SystemCertificates \ Root\ Certificates and HKLM \ SOFTWARE \ Microsoft \ EnterpriseCertificates \ Root \ Certificates (соответствующие API-флагам CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY и CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE соответственно).

Так что было бы неплохо узнать, какую версию вы используете.

Чтобы ответить на ваш вопрос: поскольку флаги искомых магазинов названы в вики, кажется, вы используетенеправильный магазин в вашем решении API.Взгляните на функцию CertOpenStore вместо CertOpenSystemStore.Это позволяет передать, например, CERT_SYSTEM_STORE_LOCAL_MACHINE как dwFlags, чтобы открыть магазин поисков Mozilla.

...