2012-06-15 16:14:17 +0000 2012-06-15 16:14:17 +0000
186
186

Como adicionar uma autoridade certificadora (AC) ao Ubuntu?

O meu trabalho decidiu emitir a sua própria autoridade certificadora (AC) para tratar de diferentes aspectos do nosso trabalho com segurança, sem pagar por certificados.

  • Assinar criptograficamente e-mails
  • Criptografar conteúdo de e-mails
  • Fazer acesso a coisas como a empresa IRC baseada no certificado de cliente.
  • Revogar as chaves de antigos funcionários automaticamente

Eles me enviaram um arquivo .pem, e eu não tenho certeza de como adicioná-lo à minha instalação do Ubuntu. As instruções enviadas foram: “Clicar duas vezes no ficheiro num Mac deve instalá-lo.” 

Como devo proceder? Preciso de fazer algo com OpenSSL para criar um ficheiro .key, .csr, ou .crt?

Respostas (8)

253
253
253
2014-02-19 19:13:09 +0000

Instalar uma CA

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

Depois execute sudo update-ca-certificates.

Cavernas: Esta instalação afecta apenas os produtos que utilizam esta loja de certificados. Alguns produtos podem utilizar outras lojas de certificados; se utilizar esses produtos, terá de adicionar este certificado da CA também a essas outras lojas de certificados. Instruções para Firefox ](http://www.cyberciti.biz/faq/firefox-adding-trusted-ca/), Instruções para Chrome , Instruções para Java )

Testing The CA

Pode verificar se isto funcionou procurando o certificado que acabou de adicionar no /etc/ssl/certs/ca-certificates.crt (que é apenas uma longa lista de todas as suas CA de confiança concatenadas em conjunto).

Também pode usar a OpenSSL s_client tentando ligar-se a um servidor que sabe que está a usar 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 = admin@whatever.com
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/emailAddress=admin@whatever.com

... 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. Esta deve mostrar a AC como o emissor (ao lado de i:). Isto diz-lhe que o servidor apresenta um certificado assinado pela AC que está a instalar.

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

69
69
69
2012-06-15 18:07:40 +0000

man update-ca-certificates :

update-ca-certificates is a program that updates the directory /etc/ssl/certs to hold SSL
certificates and generates ca-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. Certificates must have a .crt
extension in order to be included by update-ca-certificates.

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

Pelo acima exposto, inferiria que a forma preferida de obter ficheiros de certificados locais na loja de confiança é colocá-los no /usr/local/share/ca-certificates, e depois correr o update-ca-certificates. Não precisa de tocar directamente no /etc/ssl/certs.

15
15
15
2013-10-10 18:46:49 +0000

As outras respostas relativas ao update-ca-certificates estão correctas para as aplicações que lêem a partir do armazém de certificados do sistema. Para Chrome e Firefox, e provavelmente alguns outros, o certificado deve ser colocado no nssdb, o backend da biblioteca NSS da Mozilla.

De https://code.google.com/p/chromium/wiki/LinuxCertManagement :

Por exemplo, para confiar num certificado CA raiz para emissão de certificados de servidor SSL, use

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

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

Outras referências úteis:

15
15
15
2014-04-30 13:39:09 +0000

Tive o mesmo problema, e tive de copiar o ficheiro .pem para /usr/local/share/ca-certificates, dando-lhe o nome de .crt. O ficheiro .cer pode ser facilmente convertido para .pem, com openssl, por exemplo, se não tiver o .pem.

Depois de copiar o ficheiro tem de executar o sudo update-ca-certificates.

11
11
11
2015-09-02 06:19:09 +0000

Para novas construções baseadas em Debian, poderá ter de correr:

sudo dpkg-reconfigure ca-certificates

NOTE: sudo dpkg-reconfigure ca-certificates calls update-ca-certificates internally

É claro que ainda terá de copiar o certificado (ficheiro.crt) para /usr/share/ca-certificates antes de fazer qualquer uma destas :)

6
6
6
2018-04-10 01:00:50 +0000

Com base na resposta da dwmw2, pode efectivamente dizer às aplicações que utilizam o NSS para a sua gestão de certificados para utilizar a loja de confiança do sistema.

libnss3 por omissão envia com um conjunto de certificados CA de raiz apenas leitura (libnssckbi.so), por isso a maior parte do tempo é necessário adicioná-los manualmente à loja de confiança do utilizador local localizada em $HOME/.pki/nssdb. O p11-kit oferece um substituto para o libnssckbi.so que funciona como um adaptador para os certificados raiz de todo o sistema instalados no /etc/ssl/certs.

Edit:

Parece haver mais versões do libnssckbi.so lá fora do que apenas no libnss3. O seguinte é um script para os encontrar, fazer cópias de segurança 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

Original instructions:

Para tal, instale os p11-kit e libnss3 (se ainda não tiverem sido instalados):

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

Depois faça cópias de segurança dos libnssckbi.so existentes fornecidos por libnss3:

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

Finalmente, crie a ligação simbólica:

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, pode executar o ll /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so e este deve mostrar a ligação:

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 adicionar um certificado à loja CA utilizando o update-ca-certificates, esses certificados estarão agora disponíveis para aplicações que utilizem NSS (libnss3) como o Chrome.

3
3
3
2016-12-12 12:36:34 +0000

Como referido, várias aplicações que utilizam NSS têm o seu próprio armazém de certificados. Como as coisas estão no Ubuntu, você tem que usar manualmente certutil para adicionar as suas CAs para cada aplicação, para cada utilizador.

Em outras distribuições como o Fedora, este tipo de coisas Apenas Works™ e você deve arquivar um bug contra qualquer aplicação que não confie automaticamente as CAs que você instalar com update-ca-trust.

Também pode corrigir isto no Ubuntu instalando o pacote p11-kit-modules e depois substituindo o módulo NSS built-in trust roots pelo p11-kit-trust.so, fazendo uma ligação simbólica 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 hard-coded. Note que o Ubuntu envia múltiplas cópias diferentes dessa biblioteca libnssckbi.so com as raízes de confiança hard-coded, e você tem que substituir todas elas!

cf. https://bugs.launchpad.net/ubuntu/+source/nss/+bug/1647285

1
1
1
2018-01-02 12:58:09 +0000

Resposta muito estúpida para acrescentar aqui, mas eu tinha passado 2 horas a andar para trás e para a frente com certuchos em linux… Tinha a certeza que tudo estava correcto:

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 mesmo assim, no cromado nada estava a funcionar. Tentei tudo, no final….

Restarting Chrome

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