Adicionar autoridades de certificação em todo o sistema no Firefox

21

Eu quero adicionar algumas CAs de raiz que não vêm com o firefox padrão no Ubuntu, mas não sei como.

Eu tentei adicioná-los aos certificados locais com certutil , mas não funcionou. Isso estragou meu banco de dados de certificados.

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

e depois

$ 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                       ,,

O certificado não será exibido no Firefox. Eu tentei isso várias vezes, até mesmo excluindo o perfil, e ele apareceu uma vez na interface do Firefox, mas completamente vazio.

De qualquer forma, isso é apenas para um usuário e quero adicioná-lo em todo o sistema. Existe um banco de dados de todo o sistema que eu possa modificar? Como?

Se não houver nenhum banco de dados do sistema que eu possa modificar, posso confiar em um script de início do X (como /etc/X11/Xsession.d/ ones ou um script chamado pelo sistema xdg autostart em /etc/xdg/autostart/ ) para modificar o perfil do usuário em início da sessão, mas preciso de uma solução que funcione. Eu não posso nem carregar certificados nos perfis de usuário a partir da linha de comando agora!

    
por Jorge Suárez de Lis 18.01.2013 / 11:29

7 respostas

15

O problema aqui é que o Firefox não tem um local 'central' onde procura por certificados. Apenas olha para o perfil atual. É por isso que modificar o /usr/share/ca-certificates ou outros diretórios semelhantes não funcionará com o Firefox. Isso é algo que foi solicitado há anos; ver problemas 620373 , 449498 e 454036 (e provavelmente há muitos outros).

Então você fica com apenas dois tipos de soluções: modifique cada perfil ou modifique o comportamento do Firefox. Eu sei que isso não é o que você está procurando, mas não há maneiras, porque o Firefox só olha para os perfis dos usuários.

Dito isto, a solução que eu escolheria é usar links duros ou simbólicos, especificamente eu iria com hardlinks. Essa solução é certamente a mais fácil e provavelmente a melhor, embora eu não tenha informações suficientes para julgar.

O que você precisa fazer é basicamente remover cada arquivo cert8.db e key3.db de cada perfil e substituí-los por links para os "mais completos" cert8.db e key3.db . Se você usar hardlinks, os originais cert8.db e key3.db serão indistinguíveis dos novos.

Lembre-se de ajustar as permissões para atender às suas necessidades. Provavelmente, você precisará de chmod a+rw para que todos possam adicionar / remover um certificado. Se quiser que apenas determinados usuários possam adicionar / remover certificados, você poderá criar um grupo, atribuir os dois bancos de dados a esse grupo e conceder a +w permissão apenas ao grupo.

    
por Andrea Corbellini 27.01.2013 / 18:59
14

A maneira mais fácil é importar o certificado para uma amostra do firefox-profile e, em seguida, copiar o cert8.db para os usuários que você quer equipar com o certificado.

Primeiro, importe o certificado manualmente para o perfil do firefox do usuário de amostra. Então copie

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

nos usuários firefox-profiles. É isso aí. Se você quiser garantir que os novos usuários obtenham o certificado automaticamente, copie cert8.db para:

/etc/firefox-3.0/profile

Aqui está uma maneira alternativa que não substitui os certificados existentes: [fragmento bash para sistemas 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

Você pode encontrar o certutil no pacote libnss3-tools (debian / ubuntu).

Veja também: Importação programática do certificado de CA

Fonte: Instalar programaticamente o certificado no Mozilla

    
por TomKat 02.11.2013 / 08:55
1

Um dos recursos do add-on Firefox do CCK Wizard é a importação de certificados da CA. Eu uso este complemento para criar um complemento personalizado que inclua uma CA Cert. Em seguida, empacotei o xpi personalizado em um .deb no repositório interno do qual todas as estações de trabalho obtêm atualizações.

Assistente do CCK

EDIT: Para empacotar o xpi para Ubuntu, você precisa criar um pacote que inclua o diretório / usr / lib / firefox-addons / extensions / [addon-name @ servername] e descompacte todo o conteúdo do xpi para este diretório. Por exemplo, se você nomear seu addon foobarbaz e o servidor para o qual você configurou para atualizar (se você fosse ativar essa função) for intranet.example.com, o diretório seria [email protected] Eu nunca habilito a atualização automática, mas atualizo o deb no repo.

    
por Benjamin Long 04.04.2014 / 17:10
1

Estou usando um aplicativo "User Environment Virtualization" (UEV) que faz isso para meus usuários, mas você pode fazer isso com scripts de logon em clientes Windows da mesma forma. Não postarei todo o código para encontrar dinamicamente o caminho% APPDATA% \ Mozilla \ Firefox \% PROFILE%, mas, quando você o encontrar, poderá importar os scripts usando alguns comandos básicos. Basicamente, estou lendo o arquivo profiles.ini do Firefox para determinar o caminho para o perfil / cert8.db do Firefox.

Você pode querer olhar usando o aplicativo certutil.exe. link

Você pode executar scripts de logon para usuários que importam automaticamente os certificados confiáveis de um local central para o Firefox de todos os usuários no sistema.

Aqui está o "núcleo" do script de importação de certificados:

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
    
por Tony Massa 10.03.2015 / 18:19
1

Descobri que na maioria das vezes e por padrão se não configurado, caso contrário o Firefox usa bancos de dados de segurança legados (cert8.db, key3.db e secmod.db) Isso significa que você precisará usar uma linha de comando diferente para injetar o certificado no banco de dados correto que o Firefox usa. (veja mais do homem do certutil)

então, se o seu sistema usa a base de dados padrão, o comando deve ser assim: (dbm)

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

caso contrário, deve ser assim: (sql)

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

do homem 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
    
por Asaf Magen 29.06.2016 / 17:49
1

Ao contrário da crença popular, você pode fazer com que o Firefox analise os certificados do sistema, em vez de seu próprio conjunto codificado.

Para fazer isso, você vai querer usar um pacote chamado p11-kit . O p11-kit fornece uma substituição imediata de libnssckbi.so , a biblioteca compartilhada que contém o conjunto de certificados codificados permanentemente. Em vez disso, a versão do p11-kit lê os certificados do armazenamento de certificados do sistema.

Como o Firefox vem com sua própria versão de libnssckbi.so , você precisará rastreá-lo e substituí-lo, em vez da versão fornecida em 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

Em seguida, exclua o diretório ~/.pki para que o Firefox atualize seu banco de dados de certificados (fazendo com que ele insira os certificados do sistema) ao reiniciar o Firefox. Observação: isso excluirá os certificados existentes no repositório, portanto, se você adicionar manualmente, convém fazer o backup dessa pasta e importá-los novamente.

    
por wheeler 15.05.2018 / 20:02
0

O Firefox funciona depois de uma instalação limpa. Se o banco de dados de certificados em cert8.db for excluído, ele será regenerado no próximo início do Firefox. Isso sugere strongmente que existe um armazenamento padrão de CA certs em todo o sistema.

O código-fonte do Firefox mostra que Certificados internos da CA são, na verdade, codificados em firefox executável. Eles residem em security / nss / lib / ckfw / builtins /certdata.txt

Portanto, não há como instalar um certificado em todo o sistema. Tenha em atenção que o código fonte de patches pode gerar problemas com os direitos de propriedade intelectual.

    
por yanychar 21.04.2014 / 16:49