Добавление сертификатов в систему в Firefox

21

Я хочу добавить некоторые корневые ЦС, которые не поставляются с по умолчанию 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/ или скрипт, вызванный системой autostart xdg на /etc/xdg/autostart/ ), чтобы изменить профиль пользователя в но мне нужно решение, которое работает. Я даже не могу загрузить сертификаты в профилях пользователей из командной строки сейчас!

    
задан Jorge Suárez de Lis 18.01.2013 в 11:29
источник

6 ответов

15

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

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

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

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

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

    
ответ дан Andrea Corbellini 27.01.2013 в 18:59
13

Самый простой способ - импортировать сертификат в образец 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

    
ответ дан TomKat 02.11.2013 в 08:55
1

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

Мастер CCK

EDIT: для упаковки xpi для Ubuntu вам необходимо создать пакет, включающий каталог / usr / lib / firefox-addons / extensions / [addon-name @ servername] и разархивировать все содержимое xpi в этот каталог. Например, если вы назовете ваш addon foobarbaz и сервер, на котором он настроен для обновления (если вы должны включить эту функцию), это intranet.example.com, то в каталоге будет [email protected] Я никогда не включаю автоматическое обновление, но вместо этого обновляю deb в репо.     

ответ дан Benjamin Long 04.04.2014 в 17:10
1

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

Возможно, вы захотите ознакомиться с приложением certutil.exe. Ссылка

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

Вот «ядро» моего скрипта импорта import 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
    
ответ дан Tony Massa 10.03.2015 в 18:19
1

Я узнал, что большую часть времени и по умолчанию, если не настроен иначе, Firefox использует устаревшие базы данных безопасности (cert8.db, key3.db и secmod.db) это означает, что вам нужно будет использовать другую командную строку для ввода сертификата в правильную базу данных, которую использует Firefox. (см. больше от человека 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

от человека 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
    
ответ дан Asaf Magen 29.06.2016 в 17:49
0

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

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

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

    
ответ дан yanychar 21.04.2014 в 16:49