Confie em um certificado PEM autoassinado

23
  1. Eu configurei um servidor proxy com SSL usando um certificado PEM. Agora, existem algumas máquinas minhas nas quais gostaria de confiar neste certificado automaticamente (sem que o navegador da web se queixe). Como posso instalar um certificado PEM em cada máquina?

  2. Além disso, o que é mais recomendado: gerar um certificado autoassinado ou concatenar o certificado de óleo de cobra?

Teresa e Junior
fonte

Respostas:

10

Os navegadores têm uma lista de certificados confiáveis ​​de "autoridade de certificação" (CA). Se o certificado de um servidor for assinado por um desses certificados da CA e formado corretamente, você não receberá o aviso SSL.

Muitos navegadores são fornecidos com muitos certificados de CA comuns, como Verisign, Thawte, etc. A maioria dos navegadores permite importar uma nova CA para esta lista de CAs confiáveis.

Como criar seu próprio certificado de servidor autoassinado, você pode criar seu próprio certificado de CA autoassinado. Você pode usá-lo para assinar o certificado do servidor. Se a sua autoridade de certificação não for fornecida por uma empresa conhecida, o que não seria uma empresa que você fez, ela deverá ser explicitamente importada no servidor.

Eu já xcafiz isso antes. Possui modelos para CAs e servidores HTTP. O procedimento é este:

  • Crie uma chave privada para sua CA
  • Crie uma autoridade de certificação autoassinada usando esta chave usando o modelo "CA"
  • Crie uma chave privada para o seu servidor proxy
  • Crie uma "solicitação de assinatura de certificado" (CSR) usando a segunda chave, referenciando a CA que você acabou de criar.
  • "Assine" o CSR e você terá o certificado do servidor proxy, que faz referência à sua própria CA.

Você precisará exportar (como um arquivo, se estiver usando xca) o certificado da CA (mas não inclua a chave privada, é claro). A .pemserá gerado, mas você pode alterar a extensão para .crt. Quando um usuário clica nisso, ele será oferecido para instalação no Firefox e no Internet Explorer, e possivelmente em outros navegadores principais. Quanto à instalação automática deste .crt, você pode:

  • use a política de grupo no IE
  • direcione os usuários a uma página de introdução solicitando que eles baixem / instalem o .crt se quiserem evitar avisos.

Você pode usar as funções de exportação no certificado do servidor HTTP (exportar a chave privada e o certificado para o lado do servidor) para colocar no servidor proxy.

LawrenceC
fonte
17
  1. Copie seu /etc/ssl/certscertificado no sistema de destino. Em seguida, crie um link simbólico usando o hash gerado pelo comando openssl x509 -noout -hash -in ca-certificate-filesubstituindo ca-certificate-filepelo nome do seu certificado. Seu certificado deve ser aceito por todos os programas sem seu próprio armazenamento de certificados.

    Para programas com seu próprio armazenamento de certificados (navegadores, Java e outros), você precisará importar o certificado.

  2. É melhor gerar seu próprio certificado autoassinado ou assinado.

    Você pode instalar tinyca2e gerar sua própria autoridade de certificação. Você pode importar o certificado da autoridade de certificação, conforme detalhado nas etapas acima. Gere e implante certificados assinados para seus aplicativos.

    Distribua seu certificado de CA para os usuários que precisam confiar em seu certificado. Pode ser necessário fornecer informações sobre como importar o certificado para eles. AVISO: Se eles fizerem isso, você se tornará outra CA confiável para eles, então proteja-a de acordo.

    Muitas ferramentas também podem ser configuradas para confiar em certificados autoassinados ou certificados com CAs não confiáveis. Isso geralmente é uma ação única. Isso pode ser mais seguro que, ao aceitar um certificado CA de uma autoridade insegura, apenas o certificado aceito é confiável.

BillThor
fonte
Isso pode ser mais específico? Por exemplo: o host A envia email para o host B e reclama de não poder verificar a identidade de B. No host B, criamos um certificado autoassinado: /etc/ssl/certs/ssl-cert-snakeoil.pem(é isso que o pacote Debian ssl-certcria para você). Nós o copiamos para o host A e o chamamos /etc/ssl/certs/host-B.pem(já que esse host já pode ter um ssl-cert-snakeoil.pem). Então nós corremos ln -s /etc/ssl/certs/host-B.pem $(openssl x509 -noout -hash -in /etc/ssl/certs/host-B.pem).
Alex Schröder
1
@ AlexSchröder Eu editei acima. Eles não devem importar seu certificado de óleo de cobra, mas se você configurou sua própria CA, é razoável importá-la. Ainda não identifiquei problemas de confiança entre servidores SMTP. A maioria dos clientes pode ser instruída a confiar em certificados individuais.
BillThor
Obrigado. Encontrei essa pergunta quando estava procurando uma explicação para uma entrada de log que estou recebendo. A explicação que eu encontrei foi que, onde como uma vontade enviar email para B, A irá informar que não foi possível verificar a identidade do B.
Alex Schröder
Era exatamente isso que eu estava procurando! -- obrigado! Agora eu posso usar davfs para montar meu webDAV seguro sem tanta irritação.
Wyatt8740
13

No Debian e Ubuntu, você deve copiar o arquivo certificate.pempara /usr/local/share/ca-certificates/certificate.crte depois executar dpkg-reconfigure ca-certificates. /etc/ssl/certsé gerenciado por esse comando.

Thom Wiggers
fonte