Como você adiciona uma autoridade de certificação (CA) ao Ubuntu?

137

Meu trabalho decidiu criar sua própria autoridade de certificação (CA) para lidar com diferentes aspectos do nosso trabalho com segurança, sem pagar para certificados.

Eles me enviaram um arquivo .pem , e não tenho certeza de como adicioná-lo à minha instalação do Ubuntu. As instruções enviadas foram: "Clique duas vezes em um Mac para instalá-lo."

Como procedo? Preciso fazer algo com OpenSSL para criar um arquivo .key , .csr ou .crt ?

    
por Xeoncross 15.06.2012 / 18:14

8 respostas

186

Instalando uma CA

Copie seu certificado no formato PEM (o formato que tem ----BEGIN CERTIFICATE---- nele) em /usr/local/share/ca-certificates e nomeie-o com uma extensão de arquivo .crt .

Em seguida, execute sudo update-ca-certificates .

Advertências: Esta instalação afeta apenas os produtos que usam este armazenamento de certificados. Alguns produtos podem usar outros armazenamentos de certificados; Se você usar esses produtos, precisará adicionar esse certificado de autoridade de certificação também a esses outros armazenamentos de certificados. ( Instruções do Firefox , instruções do Chrome , Instruções Java )

Testando o CA

Você pode verificar se isso funcionou procurando pelo certificado que você acabou de adicionar em /etc/ssl/certs/ca-certificates.crt (que é apenas uma longa lista de todas as suas CAs confiáveis concatenadas juntas).

Você também pode usar o s_client do OpenSSL tentando conectar-se a um servidor que está usando um certificado assinado pela CA que acabou de instalar.

$ openssl s_client -connect foo.whatever.com:443 -CApath /etc/ssl/certs

CONNECTED(00000003)
depth=1 C = US, ST = Virginia, O = "Whatever, Inc.", CN = whatever.com, emailAddress = [email protected]
verify return:1
depth=0 C = US, ST = Virginia, L = Arlington, O = "Whatever, Inc.", CN = foo.whatever.com
verify return:1
---
Certificate chain
 0 s:/C=US/ST=Virginia/L=Arlington/O=Whatever, Inc./CN=foo.whatever.com
   i:/C=US/ST=Virginia/O=Whatever, Inc./CN=whatever.com/[email protected]

... snip lots of output ...

    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1392837700
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)

A primeira coisa a procurar é a cadeia de certificados perto do topo da saída. Isso deve mostrar a autoridade de certificação como o emissor (ao lado de i: ). Isso informa que o servidor está apresentando um certificado assinado pela CA que você está instalando.

Em segundo lugar, procure o verify return code no final para ser definido como 0 (ok) .

    
por 19.02.2014 / 20:13
56
man update-ca-certificates :

update-ca-certificates  is  a  program  that  updates   the   directory
/etc/ssl/certs to hold SSL certificates and generates certificates.crt,
a concatenated single-file list of certificates.

It reads the file /etc/ca-certificates.conf. Each line gives a pathname
of  a  CA  certificate  under /usr/share/ca-certificates that should be
trusted.  Lines that begin with "#" are comment lines and thus ignored.
Lines  that  begin with "!" are deselected, causing the deactivation of
the CA certificate in question.

Furthermore   all   certificates   found   below   /usr/local/share/ca-
certificates are also included as implicitly trusted.

Do acima, eu diria que a maneira preferida de obter arquivos de certificado local no armazenamento confiável é colocá-los em /usr/local/share/ca-certificates e, em seguida, executar update-ca-certificates . Você não precisa tocar em /etc/ssl/certs diretamente.

    
por 15.06.2012 / 20:07
15

Eu tive o mesmo problema e tive que copiar o arquivo .pem para /usr/local/share/ca-certificates , renomeando-o como .crt . O arquivo .cer pode ser facilmente convertido em .pem , com o openssl, por exemplo, se você não tiver o .pem .

Depois de copiar o arquivo, você deve executar sudo update-ca-certificates .

    
por 30.04.2014 / 15:39
12

As outras respostas referentes a update-ca-certificates estão corretas para aplicativos que leem no armazenamento de certificados do sistema. Para o Chrome e o Firefox, e provavelmente alguns outros, o certificado deve ser colocado no nssdb, o back-end da biblioteca NSS do Mozilla.

De link :

For example, to trust a root CA certificate for issuing SSL server certificates, use

certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n <certificate nickname> -i <certificate filename>

Onde <certificate nickname> é arbitrário e <certificate filename> é seu arquivo .pem ou .crt.

Outras referências úteis:

  • Descrição geral: link
  • Página certutil man, descrevendo os parâmetros usados acima: link
por 10.10.2013 / 20:46
8

Para compilações mais recentes baseadas no Debian, você pode precisar executar:

sudo dpkg-reconfigure ca-certificates

OBSERVAÇÃO: o sudo dpkg-reconfigure certificados ca chama atualização-ca-certificados internamente

Você, é claro, ainda precisará copiar o certificado (arquivo .crt) para / usr / share / ca-certificates antes de fazer algo assim:)

    
por 02.09.2015 / 08:19
1

Com base na resposta do dwmw2, é possível dizer aos aplicativos que usam o NSS para o gerenciamento de certificados a utilização do armazenamento confiável do sistema .

Por padrão, o

libnss3 é fornecido com um conjunto somente leitura de certificados de CA raiz ( libnssckbi.so ), portanto, na maioria das vezes, você precisa adicioná-los manualmente ao repositório de confiança do usuário local, localizado em $HOME/.pki/nssdb . p11-kit oferece uma substituição imediata de libnssckbi.so que atua como um adaptador para os certificados raiz de todo o sistema instalados em /etc/ssl/certs .

Editar:

Parece haver mais versões de libnssckbi.so do que apenas em libnss3 . O seguinte é um script para encontrá-los, fazer backup deles e substituí-los por links para p11-kit :

sudo apt-get update && sudo apt-get install -y p11-kit libnss3
find / -type f -name "libnssckbi.so" 2>/dev/null | while read line; do
    sudo mv $line ${line}.bak
    sudo ln -s /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so $line
done

Instruções originais:

Para fazer isso, instale p11-kit e libnss3 (se eles ainda não estiverem instalados):

sudo apt-get update && sudo apt-get install -y p11-kit libnss3

Em seguida, faça backup do libnssckbi.so existente fornecido por libnss3 :

sudo mv /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so.bak

Por fim, crie o link simbólico:

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

Para confirmar que funcionou, você pode executar ll /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so e mostrar o link:

lrwxrwxrwx 1 root root 49 Apr  9 20:28 /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so -> /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so

Agora, se você adicionar um certificado ao repositório da CA usando update-ca-certificates , esses certificados agora estarão disponíveis para aplicativos que usam o NSS ( libnss3 ), como o Chrome.

    
por 10.04.2018 / 03:00
1

Como observado, vários aplicativos que usam o NSS têm seu próprio armazenamento de certificados. Como as coisas estão no Ubuntu, você tem que usar manualmente certutil para adicionar suas ACs para cada aplicativo, para cada usuário.

Em outras distribuições como o Fedora, esse tipo de coisa Just Works ™ e você deve registrar um bug contra qualquer aplicativo que não confie automaticamente nas CAs instaladas com update-ca-trust .

Você pode consertar isso no Ubuntu instalando o pacote p11-kit-modules e depois substituindo o módulo NSS trust trust com p11-kit-trust.so , criando um link simbólico, por exemplo, de /usr/lib/firefox/libnssckbi.so para /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so

Então você irá obter as raízes de confiança configuradas do sistema, não algumas codificadas. Note que o Ubuntu envia várias cópias diferentes da biblioteca libnssckbi.so com as raízes de confiança codificadas, e você tem que substituir todas elas!

cf. link

    
por 12.12.2016 / 13:36
0

Resposta seriamente estúpida para adicionar aqui, mas eu tinha passado 2 horas indo e voltando com certutils no linux ... Eu tinha certeza de que tudo estava correto:

hutber@hutber-mint /var/www/asos-mvt-framework $ certutil -L -d sql:${HOME}/.pki/nssdb

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

anyproxy                                                     CT,, 
rootCA                                                       CT,, 
myasos                                                       CT,, 

Mas ainda assim, no Chrome, nada estava funcionando. Eu tentei de tudo, no final ....

Restarting Chrome

Foi a chave para o meu sucesso depois de seguir: O conselho de Steven Monday

    
por 02.01.2018 / 13:58