Adicionando um certificado autoassinado à “lista confiável”

72

Gerei um certificado auto-assinado para o meu servidor de compilação e gostaria de confiar globalmente no certificado da minha máquina, pois criei a chave e estou farto de ver avisos.

Estou no Ubuntu 12.04. Como posso obter o certificado e confiar nele globalmente para que os navegadores (Google Chrome), os utilitários CLI (wget, curl) e as linguagens de programação (Python, Java, etc.) confiem na conexão para link sem fazer perguntas?

    
por Naftuli Kay 13.09.2013 / 00:49

5 respostas

74

A resposta simples para isso é que praticamente cada aplicativo lidará com isso de maneira diferente.

O OpenSSL e o GNUTLS (as bibliotecas de processamento de certificados mais usadas para lidar com certificados assinados) se comportam diferentemente no tratamento de certificados que também complicam o problema. Além disso, os sistemas operacionais utilizam mecanismos diferentes para utilizar a "CA raiz" usada pela maioria dos sites.

Isso de lado, dando Debian como um exemplo. Instale o pacote ca-certificates :

apt-get install ca-certificates

Você copia a metade pública de seu certificado de CA não confiável (aquele que você usa para assinar seu CSR) no diretório de certificado de CA (como root):

cp cacert.pem /usr/share/ca-certificates

E consiga reconstruir o diretório com seu certificado incluído, como root:

dpkg-reconfigure ca-certificates

e selecione a opção ask , vá até o seu certificado, marque-o para inclusão e selecione ok.

A maioria dos navegadores usa seu próprio banco de dados de CA, e assim ferramentas como certutil devem ser usadas para modificar seu conteúdo (no Debian que é fornecido pelo pacote libnss3-tools ). Por exemplo, com o Chrome, você executa algo nos seguintes termos:

certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n "My Homemade CA" -i /path/to/CA/cert.file

O Firefox permitirá que você navegue até o certificado em disco, reconheça um arquivo de certificado e permita que você o importe para a lista da CA raiz.

A maioria dos outros comandos, como curl , usa as opções de linha de comando que você pode usar para apontar para sua autoridade de certificação,

 curl --cacert  /path/to/CA/cert.file https://...

ou elimine completamente a validação SSL

 curl --insecure https://...

O restante precisará de uma investigação individual se o truque ca-certificates like não o classificar para esse aplicativo em particular.

    
por 14.09.2013 / 07:42
38

Abordagem não interativa

Para uso em um contexto não interativo (por exemplo, uma receita de chef), você pode usar a seguinte sequência.

sudo cp my.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
  • Testado e funciona no debian 5/6 & Ubuntu 14.04.
  • Para mais informações, consulte man update-ca-certificates

Este método é preferido ao método @ Drav, já que /usr/share/ é normalmente reservado para arquivos adicionados pelo OS / apt-get .

    
por 27.05.2014 / 11:07
6

No Fedora 23, adicione o arquivo .pem ou .der em /etc/pki/ca-trust/source/anchors/ e execute sudo update-ca-trust extract .

Veja man update-ca-trust para detalhes, por ex. se usar / etc ou / usr.

    
por 20.03.2016 / 17:43
1

Em centos:

cp *.pem /etc/pki/ca-trust/source/anchors/
update-ca-trust extract
    
por 19.04.2018 / 12:58
0

Abordagem não interativa (outubro de 18)
para sistemas baseados em debian recentes

Há uma distinção entre adicionar um certificado à loja do host e ativá-lo para que os aplicativos realmente os utilizem. Um certificado existente na loja não é necessariamente usado (embora eu tenha que admitir que ainda muitos pacotes estão errando de qualquer maneira)
Isso pode ficar confuso quando você configura um pacote que considera /etc/ca-certificate.conf e simplesmente se recusa a usar seu certificado, embora tenha sido adicionado sem erros. Você precisa informar update-ca-certificates explicitamente para (não apenas copiar, mas) ativar o certificado adicionando-o a /etc/ca-certificate.conf ou /etc/ca-certificate/update.d .

CERT=mycert.crt
cp /mypath/to/$CERT /usr/share/ca-certificates/$CERT
    # notice the + sign which tells to activate the cert!!!
echo "+$CERT" >/etc/ca-certificates/update.d/activate_my_cert
dpkg-reconfigure ca-certificates;

Agora, aqui fica confuso, pois há uma maneira de confiar implicitamente em um certificado usando um caminho diferente:

CERT=mycert.crt
cp /mypath/to/$CERT /usr/local/share/ca-certificates/$CERT
update-ca-certificates;
    
por 07.10.2018 / 16:46

Tags