Как сделать сертификаты CA системы доверия Firefox?

29

Наш сетевой администратор недавно включил проверку HTTPS на нашем брандмауэре / маршрутизаторе. Для пользователей IE это хорошо, потому что все сертификаты были распределены через Active Directory для компьютеров, подключенных к домену. Однако у нас есть несколько пользователей Firefox, которые теперь выдают ошибки сертификатов практически на каждом сайте HTTPS.

Firefox использует свой собственный CA-магазин, и они тоже этим гордятся . Есть ли способ заставить Firefox доверять хранилищу системных сертификатов по умолчанию? Я вижу много сообщений о том, как это сделать в Linux, но ничего для Windows.

Из этого поста я подозреваю, что это невозможно, но этому посту почти 4 года.

Уэс Сайид
источник

Ответы:

46

Начиная с Firefox 49, существует некоторая поддержка сертификатов Windows CA и поддержка Active Directory, предоставляемая корпоративными корневыми сертификатами начиная с Firefox 52. Также поддерживается macOS для чтения из цепочки для ключей начиная с версии 63.

Начиная с Firefox 68, эта функция включена по умолчанию в версии ESR (для предприятий), но не в (стандартной) быстрой версии.

Вы можете включить эту функцию для Windows и MacOS about:config, создав это логическое значение:

security.enterprise_roots.enabled

и установите его в true.

В GNU / Linux этим обычно управляет p11-kit-trust, и флаг не требуется.

Развертывание всей системы конфигурации

Начиная с Firefox 64, есть новый и рекомендуемый способ с использованием политик, задокументированный на https://support.mozilla.org/en-US/kb/setting-certificate-authorities-firefox

Для устаревших версий установочную папку Firefox можно извлечь из реестра Windows, затем перейти в defaults\pref\подкаталог и создать новый файл со следующими данными:

/* Allows Firefox reading Windows certificates */    
pref("security.enterprise_roots.enabled", true);

Сохраните его с .jsрасширением, например, trustwincerts.jsи перезапустите Firefox. Запись появится about:configдля всех пользователей.

Развертывание сертификатов Windows в масштабе всей системы

В Firefox с 49 до 51 он поддерживает только «корневой» магазин. Начиная с Firefox 52, он поддерживает другие хранилища, в том числе добавленные из домена через AD.

Это немного выходит за рамки, но объясняет, какое хранилище сертификатов было единственным, поддерживаемым Firefox для версий от 49 до 51 или только для локального тестирования. Поскольку это развертывается для всех пользователей локальных компьютеров, для этого требуются права администратора в окне CMD / PowerShell или в вашем собственном сценарии автоматического развертывания.

certutil -addstore Root path\to\cafile.pem

Это также можно сделать из консоли управления, щелкнув по множеству окон, если вы предпочитаете мышь ( Как: просмотреть сертификаты с помощью оснастки MMC ).


источник
Вы знаете, в каком хранилище сертификатов должен быть загружен сертификат, чтобы это работало?
ETL
@ETL Я протестировал только с доверенным хранилищем системы локального компьютера, и это хорошо, поскольку он работает со всеми учетными записями компьютеров. Согласно вики-странице Mozilla, упомянутой в другом ответе, они ожидают полной поддержки сертификатов (включая сертификаты AD) в Firefox 52. По умолчанию certmgr.msc показывает пользовательское хранилище сертификатов, но его необходимо добавить в хранилище сертификатов локального компьютера. Вы также можете использовать Windows certutil (не путайте с NSS certutil в Mozilla) для ее развертывания.
Arg. У меня есть сертификат (я добавляю их с помощью групповых политик в доверенные корневые центры сертификации локального компьютера). Я включил опцию Firefox, но сертификат все еще не используется в FF 50.1. Это были твои сертификаты?
ETL
2
Контрольный список: 1: Firefox не перечисляет сертификаты Windows в Advanced -> Certificates, но в любом случае должен работать как доверенный. 2: Сертификат сервера должен быть создан с этим CA, используя CA непосредственно, так как сертификат сервера не будет работать. 3: Сертификат сервера должен быть сгенерирован правильно, наследуя политики CA для альтернативных имен субъектов. 4: если certstore не тот, попробуйте использовать certutil от Microsoft, я делаю это: в окне cmd администратора: certutil -addstore Root path\to\cafile.pem(или .crt)
1
Это также упоминается в Mozilla Wiki .
Франклин Ю
2

Рассматривали ли вы развертывание этих сертификатов в Firefox, а также в хранилище сертификатов Windows?

https://wiki.mozilla.org/CA:AddRootToFirefox подробно описывает несколько вариантов:

  1. Измените базу данных сертификатов напрямую, используя certutil.
  2. Используйте функцию автоматической настройки Firefox, поместив файл javascript рядом с двоичным файлом, чтобы добавить сертификаты:

    var certdb = Cc["@mozilla.org/security/x509certdb;1"].getService(Ci.nsIX509CertDB);
    var certdb2 = certdb;
    try {
        certdb2 = Cc["@mozilla.org/security/x509certdb;1"].getService(Ci.nsIX509CertDB2);
    } catch (e) {}
    cert = "MIIHPT...zTMVD"; // This should be the certificate content with no line breaks at all.
    certdb2.addCertFromBase64(cert, "C,C,C", "");
    
  3. Распространяйте файлы базы данных сертификатов напрямую.
  4. Пакет Firefox для установки, включая сертификаты в вашем дистрибутиве.
  5. Используйте CCK2 для создания расширения, которое добавляет сертификаты.
wfaulk
источник
1

Не существует хорошего способа справиться с использованием системного хранилища, но есть хороший обходной путь (принудительное использование настраиваемого магазина, совместимого с Firefox).

Бит скрипта ниже хорошо работает при входе / выходе из системы.

Stop-Process -processname firefox

$DBPath="\\yourserver\yourshare\cert8.db"
$FirefoxProfiles=Get-ChildItem $Env:appdata\Mozilla\Firefox\Profiles     
$DB=Get-Item $DBPath    
ForEach ( $Profile in $FirefoxProfiles )
{
    $FullPath=join-path $Env:appdata\Mozilla\Firefox\Profiles $Profile
    Copy-Item $DB $FullPath
    $FullPath
}
Тим Бригам
источник
Вы могли бы даже расширить идею, подобную этой, и получить текущий список доверенных сертификатов из хранилища Windows и сгенерировать файл cert8.db на лету, используя certtil Mozilla, на который есть ссылка в ответе wfaulk.
Райан Болджер
1

Есть бесплатный проект, который предоставляет возможность управлять корневыми сертификатами Firefox с помощью групповых политик. Вы можете установить или удалить корневые сертификаты из базы данных Firefox.

Slipeer
источник