Adicionando um certificado autoassinado à "lista confiável"

88

Eu criei um certificado autoassinado para o meu servidor de compilação e gostaria de confiar globalmente no certificado em minha máquina, pois criei a chave sozinho e estou cansado de receber avisos.

Estou no Ubuntu 12.04. Como posso obter o certificado e confiar globalmente nele, para que navegadores (Google Chrome), utilitários CLI (wget, curl) e linguagens de programação (Python, Java etc.) confiem na conexão com https://mysite.com sem perguntar questões?

Naftuli Kay
fonte
Todo o TLS deve ser vetorizado através do OpenSSL, então esse é o lugar para procurar documentação. Nesse caso: gagravarr.org/writing/openssl-certs/… parece útil.
msw

Respostas:

88

A resposta simples para isso é que praticamente todos os aplicativos lidam 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 de maneira diferente no tratamento de certificados, o que também complica o problema. Os sistemas operacionais também utilizam mecanismos diferentes para utilizar a "CA raiz" usada pela maioria dos sites.

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

apt-get install ca-certificates

Em seguida, você copia a metade pública do seu certificado de CA não confiável (aquele usado para assinar seu CSR) no diretório de certificados da CA (como raiz):

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

E faça com que ele reconstrua o diretório com seu certificado incluído, execute como root:

dpkg-reconfigure ca-certificates

e selecione a askopção, 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 autoridade de certificação e, portanto, ferramentas como certutilessas devem ser usadas para modificar seu conteúdo (no Debian, fornecido pelo libnss3-toolspacote). Por exemplo, com o Chrome, você executa algo como:

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 no disco, reconheça um arquivo de certificado e depois importe-o para a lista de CA raiz.

A maioria dos outros comandos, como as curlopções de linha de comando, você pode usar para apontar para sua CA,

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

ou abandone a validação SSL completamente

 curl --insecure https://...

O restante precisará de investigação individual se o ca-certificatestruque semelhante não o classificar para essa aplicação específica.

Drav Sloan
fonte
Além disso, como observado aqui , a adição de certificados de CA para Java também é uma questão separada.
Naftuli Kay
2
Depois de copiar o certificado para / usr / share / ca-certificates, não consigo vê-lo na dpkg-reconfigure ca-certificateslista. O que estou fazendo errado?
Georges Dupéron
19
@ GeorgesDupéron Isso aconteceu comigo. Eu o resolvi renomeando o certificado de whatever.pempara whatever.crt.
Hello World
2
Para sua informação, eu tinha um arquivo cert nomeado .cere isso não funcionou. Eu tive que mudar o nome .crtpara que fosse reconhecido.
Tri Nguyen
54

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 e no Ubuntu 14.04.
  • Para mais informações, veja man update-ca-certificates

Esse método é preferível ao método de @ Drav, pois /usr/share/normalmente é reservado para arquivos adicionados pelo OS / apt-get.

oDDsKooL
fonte
4
É melhor copiar os arquivos /usr/local/share/ca-certificates/conforme mencionado nas páginas de
manual
3
FYI o A deve ser um .crt, encontrei .certalegou que foi adicionado mas não ajudou
KCD
6

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

Veja man update-ca-trustpara detalhes, por exemplo, se deseja usar / etc ou / usr.

user7610
fonte
4

Em centos:

cp *.pem /etc/pki/ca-trust/source/anchors/
update-ca-trust extract
libélula
fonte
Quando eu openssl connectdevo especificar esta pasta / anchors? Ainda estou recebendo um erro "self signed certs
Janac Meena
2

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

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 deva admitir que muitos pacotes ainda estão errados)
Isso pode ficar confuso quando você configura um pacote que considera /etc/ca-certificate.confe simplesmente se recusa a usar seu certificado, embora tenha foi adicionado sem erro. Você precisa informar update-ca-certificatesexplicitamente para (não apenas copiar, mas) ativar o certificado adicionando-o a /etc/ca-certificate.confou /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;
3ronco
fonte