Добавить центры сертификации всей системы на Firefox

Я хочу добавить несколько корневых ЦС, которые не поставляются с Firefox по умолчанию в Ubuntu, но я не знаю как.

Я пытался добавить их в локальные сертификаты с помощью certutil, но это не сработало. Это испортило мою базу данных сертификатов.

$ certutil -A -d .mozilla/firefox/kek3dogy.default/ -i /usr/local/share/ca-certificates/FNMT_ACRAIZ.crt -n "Certificado Raiz FNMT" -t "TCu,Cuw,Tuw"

, а затем

$ certutil -L -d .mozilla/firefox/kek3dogy.default/

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

Go Daddy Secure Certification Authority                      ,,   
VeriSign Class 3 Secure Server CA - G3                       ,,   
VeriSign Class 3 Extended Validation SSL CA                  ,,   
DigiCert High Assurance CA-3                                 ,,   
GlobalSign Domain Validation CA - G2                         ,,   
GeoTrust SSL CA                                              ,,   
StartCom Class 2 Primary Intermediate Server CA              ,,   
Google Internet Authority                                    ,,   
Certificado Raiz FNMT                                        CT,C,c
USERTrust Legacy Secure Server CA                            ,,   
HP Jetdirect 2B0EAD20                                        ,,   
Akamai Subordinate CA 3                                      ,,   
VeriSign, Inc.                                               ,,   
Thawte SGC CA                                                ,,   
VeriSign Class 3 Secure Server CA - G2                       ,,

Сертификат не будет отображаться в Firefox. Я пробовал это несколько раз, даже удаляя профиль, и он один раз появлялся в интерфейсе Firefox, но совершенно пустой.

В любом случае, это только для пользователя, и я хочу добавить его в масштабе всей системы. Есть ли общесистемная база данных, которую я могу изменить? Как?

Если нет общесистемной базы данных, которую я могу изменить, я могу положиться на стартовый скрипт X (как /etc/X11/Xsession.d/ или скрипт, вызываемый системой автозапуска xdg на /etc/xdg/autostart/) для изменить профиль пользователя при запуске сеанса, но мне нужно решение, которое работает. Сейчас я даже не могу загрузить сертификаты в профили пользователей из командной строки!

27
задан 28 January 2013 в 00:12

8 ответов

Проблема здесь в том, что у Firefox нет «центрального» расположения, где он ищет сертификаты. Просто смотрит в текущий профиль. Вот почему изменение /usr/share/ca-certificates или других подобных каталогов не будет работать с Firefox. Это то, что запрашивалось годами; см. выпуски 620373 , 449498 и 454036 (и, вероятно, есть много других).

Таким образом, у вас есть только два вида решений: либо измените каждый профиль, либо измените поведение Firefox. Я знаю, что это не то, что вы ищете, но нет никаких путей, потому что Firefox просматривает только профили пользователей.

Сказав это, я бы выбрал решение с использованием жестких или символических ссылок, в частности, я бы использовал жесткие ссылки. Это решение, безусловно, самое простое и, вероятно, лучшее, хотя у меня недостаточно информации, чтобы судить.

Что вам нужно сделать, это в основном удалить все файлы cert8.db и key3.db для каждого профиля и заменить их ссылками на «наиболее полные» cert8.db и key3.db. Если вы используете жесткие ссылки, оригинальные cert8.db и key3.db будут неотличимы от новых.

Не забудьте настроить разрешения в соответствии с вашими потребностями. Скорее всего, вам понадобится chmod a+rw, чтобы каждый мог добавить / удалить сертификат. Если вы хотите, чтобы только определенные пользователи могли добавлять / удалять сертификаты, вы можете создать группу, назначить две базы данных этой группе и дать +w разрешение только для группы.

0
ответ дан 28 January 2013 в 00:12

Самый простой способ - импортировать сертификат в образец профиля firefox, а затем скопировать cert8.db пользователям, которым вы хотите предоставить сертификат.

Сначала импортируйте сертификат вручную в профиль firefox пользователя-образца. Затем скопируйте

/home/${USER}/.mozilla/firefox/${randomalphanum}.default/cert8.db

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

/etc/firefox-3.0/profile

Вот альтернативный способ, который не переопределяет существующие сертификаты: [фрагмент bash для систем Linux]

certificateFile="MyCa.cert.pem"
certificateName="MyCA Name" 
for certDB in $(find  ~/.mozilla* ~/.thunderbird -name "cert8.db")
do
  certDir=$(dirname ${certDB});
  #log "mozilla certificate" "install '${certificateName}' in ${certDir}"
 certutil -A -n "${certificateName}" -t "TCu,Cuw,Tuw" -i ${certificateFile} -d ${certDir}
done

Вы можете найти certutil в пакете libnss3-tools (debian / ubuntu).

См. Также: Программный импорт сертификата CA

Источник: Программно установить сертификат в Mozilla

0
ответ дан 28 January 2013 в 00:12

Вопреки распространенному мнению, вы можете заставить Firefox посмотреть на системные сертификаты вместо своего собственного жестко запрограммированного набора.

Для этого вам понадобится пакет под названием p11-kit . p11-kit предоставляет замену libnssckbi.so, разделяемой библиотеки, которая содержит жестко закодированный набор сертификатов. Версия p11-kit вместо этого считывает сертификаты из системного хранилища сертификатов.

Поскольку Firefox поставляется с собственной версией libnssckbi.so, вам нужно отследить ее и заменить вместо версии, представленной в libnss3:

sudo mv /usr/lib/firefox/libnssckbi.so /usr/lib/firefox/libnssckbi.so.bak
sudo ln -s /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so /usr/lib/firefox/libnssckbi.so

Далее удалите ~/.pki каталог, чтобы Firefox обновлял свою базу данных сертификатов (заставляя его извлекать системные сертификаты) после перезапуска Firefox. Примечание: при этом будут удалены все существующие сертификаты в хранилище, поэтому, если есть пользовательские сертификаты, которые вы добавили вручную, вы можете создать резервную копию этой папки и затем повторно импортировать их.

0
ответ дан 28 January 2013 в 00:12

Одной из особенностей дополнения Firefox мастера CCK является импорт сертификатов CA. Я использую это дополнение для создания пользовательского дополнения, в которое входит компания CA Cert. Затем я упаковываю пользовательский xpi в .deb во внутреннем репозитории, с которого все рабочие станции получают обновления.

CCK Wizard

РЕДАКТИРОВАТЬ: Чтобы упаковать xpi для Ubuntu, вам нужно создать пакет, который включает каталог / usr / lib / firefox-addons / extensions / [ addon-name @ servername] и разархивируйте все содержимое xpi в этот каталог. Например, если вы называете свой аддон foobarbaz и сервер, с которого он настроен для обновления (если вы должны были включить эту функцию), является intranet.example.com, то каталог будет foobarbaz@intranet.example.com. Я никогда не включаю автоматическое обновление, а вместо этого обновляю deb в репо.

0
ответ дан 28 January 2013 в 00:12

Я использую приложение «User Environment Virtualization» (UEV), которое делает это для моих пользователей, но вы можете сделать это с помощью сценариев входа в Windows-клиенты. Я не буду публиковать весь код для динамического поиска пути% APPDATA% \ Mozilla \ Firefox \% PROFILE%, но когда вы его найдете, вы можете импортировать сценарии с помощью некоторых основных команд. Я в основном читаю файл Firefox profiles.ini, чтобы определить путь к профилю Firefox / cert8.db.

Возможно, вы захотите посмотреть, используя приложение certutil.exe. https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/tools/NSS_Tools_certutil

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

Вот «ядро» моего скрипта импорта сертификата vb:

If Instr(strLine,"Path=Profiles/") Then
  arrLine = Split(strLine, "/")
  strProfile = strAppData & "\Mozilla\Firefox\Profiles\" & arrLine(1)
  strCertDB = strProfile & "\cert8.db"

  'Verify the DB exists, if not move to the next entry
  If objFSO.FileExists(strCertDB) Then
    'Run certutil command on this database
    strCertCommand1 = "\\SERVERNAME\SHARENAME$\certs\certutil\certutil.exe -A " &_
    "-n MYCA -t ""CT,C,C"" -d " & strProfile & " -i \\SERVERNAME\SHARENAME$\certs\MYCA_Root.cer"

    strCertCommand2 = "\\SERVERNAME\SHARENAME$\certs\certutil\certutil.exe -A " &_
    "-n MYSECONDCA -t ""CT,C,C"" -d " & strProfile & " -i \\SERVERNAME\SHARENAME$\certs\SecondCA_Root.cer"

    strCertCommand3 = "\\SERVERNAME\SHARENAME$\certs\certutil\certutil.exe -A " &_
    "-n MYTHIRDCA -t ""CT,C,C"" -d " & strProfile & " -i \\SERVERNAME\SHARENAME$\certs\ThirdCA_Root.cer"

    'Run the import commands for this Firefox profile
    objShell.Run("%comspec% /c " & strCertCommand1),0,TRUE
    objShell.Run("%comspec% /c " & strCertCommand2),0,TRUE
    objShell.Run("%comspec% /c " & strCertCommand3),0,TRUE
0
ответ дан 28 January 2013 в 00:12

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

Исходный код Firefox показывает , что встроенные сертификаты CA фактически жестко запрограммированы в исполняемый файл firefox. Они находятся в security / nss / lib / ckfw / builtins / certdata.txt

, поэтому нет способа установить сертификат для всей системы. Помните, что исправление исходного кода может вызвать проблемы с правами интеллектуальной собственности.

0
ответ дан 28 January 2013 в 00:12

Я обнаружил, что большую часть времени и по умолчанию, если не настроен иначе, Firefox использует устаревшие базы данных безопасности (cert8.db, key3.db и secmod.db), что означает, что вам нужно будет использовать другую командную строку для ввода сертификат в правильную базу данных, которую использует Firefox. (см. больше от man of certutil)

, поэтому, если ваша система использует базу данных по умолчанию, команда должна выглядеть следующим образом: (dbm)

certutil -A -n "Description Name" -t "CT,C,C" -d dbm:/home/<username>/.mozilla/firefox/<default folder>/ -i certificate.crt

в противном случае это должно быть так: (sql)

certutil -A -n "Description Name" -t "CT,C,C" -d sql:/home/<username>/.mozilla/firefox/<default folder>/ -i certificate.crt

от man certutil:

-d [prefix]directory
Specify the database directory containing the certificate and key
database files.

certutil supports two types of databases: the legacy security databases
(cert8.db, key3.db, and secmod.db) and new SQLite databases (cert9.db,
key4.db, and pkcs11.txt).

NSS recognizes the following prefixes:

·   sql: requests the newer database

·   dbm: requests the legacy database

If no prefix is specified the default type is retrieved from
NSS_DEFAUL
0
ответ дан 28 January 2013 в 00:12

Нашел это решение для добавления сертификатов в firefox на ubuntu:

https://github.com/mozilla/policy-templates/#proxy

Просто нужно добавить этот файл в :

/usr/lib/firefox/distribution/

touch policies.json

В policy.json добавьте:

{
"policies": {
"Certificates": {
    "ImportEnterpriseRoots": true,
    "Install": [
               "somecert1.crt",
               "usr/local/share/ca-certificates/somecert1.crt"
               ]
         }
    }
}

Часть установки - это сначала имя сертификата, а затем путь. И перезапустите firefox. Если что-то не работает, попробуйте сбросить firefox, как если бы вы что-то установили, прежде чем он может это застрять.

Этот метод хорошо работает без certutil.

3
ответ дан 25 February 2020 в 13:12

Другие вопросы по тегам:

Похожие вопросы: