Gerador de certificados autoassinados

Um certificado e a sua chave privada para um serviço interno, sem memorizar uma invocação do openssl: introduza o nome comum, enumere cada nome e IP que o certificado deve cobrir, escolha a validade e o tamanho da chave e descarregue ambos os ficheiros PEM. As chaves são geradas localmente no seu navegador e nunca são enviadas: esta página não faz nenhum pedido de rede, e a chave só existe no seu separador até a guardar.

As chaves maiores demoram mais a gerar: 4096 bits pode demorar algum tempo numa máquina modesta. O trabalho acontece na sua máquina, neste separador: deixe-o aberto e deixe-o terminar.

Para que serve um certificado autoassinado

Um certificado autoassinado é um certificado cujo emissor e cujo titular são o mesmo: garante-se a si próprio. Soa a defeito, e para a web pública é: o navegador de um visitante não tem razão para acreditar na palavra de um desconhecido. Mas grande parte do TLS nunca enfrenta o público: painéis internos, ambientes de laboratório e de teste, serviços de laboratório doméstico, interfaces de administração de equipamento de rede e a conversa entre serviços dentro de uma organização. Para isso, o público são máquinas que você controla, e a questão da confiança tem outra resposta: instala o certificado (ou a sua própria CA pequena) nos arquivos de confiança que gere, uma vez, deliberadamente. Em troca, obtém encriptação e identidade dentro das suas próprias paredes sem que uma CA pública alguma vez conheça os seus nomes de anfitrião internos — nomes que são, eles próprios, um mapa da sua infraestrutura.

O ritual de geração costumava ser um comando openssl que ninguém recordava e toda a gente copiava e colava, com os SAN aparafusados através de um ficheiro de configuração porque o parâmetro para eles não existia nas versões antigas. Esta página existe para que a forma do certificado seja visível: os nomes são uma lista que pode ler, a validade é um número de dias que escolhe sabendo que vai expirar, e o tamanho da chave é uma decisão em vez de um valor predefinido que nunca notou. O que deliberadamente não faz é fingir ser uma CA: não há cadeia, nem intermediário, nem nada para revogar. Um serviço, um certificado, uma data de expiração para acompanhar.

Fazer com que os clientes o aceitem

Gerar o certificado é a metade fácil; a confiança é a implementação. Num punhado das suas máquinas, adicionar o certificado ao arquivo de confiança do sistema operativo (ou do navegador) acaba com os avisos de vez, e ferramentas como o curl e o git aceitam um apontador --cacert por comando em vez do hábito perigoso de desativar a verificação: a opção -k treina toda a gente para ignorar exatamente o aviso que detetaria um ataque real. Quando o público cresce para lá de um punhado de máquinas, passe dos certificados autoassinados isolados para uma pequena CA privada: assine com ela os certificados de serviço, distribua apenas o certificado da CA e a rotação deixa de ser uma digressão por cada cliente. E quando um serviço afinal enfrenta o público, substitua o certificado por um de confiança pública: o verificador SSL verifica o que um servidor apresenta realmente depois de estar no ar, que é o momento em que o autoassinado deixa de ser uma escolha.

Ferramentas relacionadas: volte a ler qualquer certificado com o analisador de certificados SSL, ou verifique o que um servidor ativo apresenta com o verificador SSL.

Leitura adicional: uma rotina de fiabilidade — por que os certificados internos e as suas datas de expiração pertencem à mesma página de planeamento que as rotações e as cópias de segurança.

A geração de certificados usa node-forge, ao abrigo da licença BSD-3-Clause, carregado apenas quando prime Gerar. Nenhuma parte desta ferramenta faz um pedido de rede.

Perguntas frequentes

Onde devo usar um certificado autoassinado?

Em coisas com as quais só você e os seus próprios sistemas falam: painéis internos, ambientes de laboratório e de teste, serviços de laboratório doméstico, páginas de administração de dispositivos e como marcador que permite a um servidor arrancar antes de um certificado real ser emitido. A regra é o alcance: se o navegador de um desconhecido alguma vez o vir, precisa antes de um certificado de confiança pública — esses são gratuitos na Let’s Encrypt.

Porque é que os navegadores avisam sobre certificados autoassinados?

Porque «autoassinado» significa que o único a garantir o certificado é ele próprio. A encriptação funciona — a ligação é privada —, mas nada prova que o servidor é quem afirma ser, que é a metade do TLS que uma autoridade de certificação normalmente fornece. Por isso os navegadores avisam até o certificado (ou uma CA que você controla) ser adicionado ao arquivo de confiança das máquinas que o usam.

Porque aparece o nome comum também na lista de SAN?

Os navegadores modernos ignoram por completo o campo do nome comum e verificam antes a lista de Nomes Alternativos do Titular. Um certificado cujo nome principal não está na sua própria lista de SAN falha no próprio nome para o qual foi feito — o erro de autoassinatura mais comum —, por isso esta página adiciona sempre o nome comum aos SAN.

RSA de 2048 bits chega, ou devo escolher 4096?

RSA de 2048 bits é a base atual e chega para serviços internos; é o que a maioria dos certificados públicos ainda usa. 4096 bits compra margem contra criptoanálise futura ao custo de uma geração mais lenta e handshakes ligeiramente mais lentos. Faz sentido para uma CA interna de longa duração ou um serviço que não possa reemitir facilmente. A geração acontece na sua própria máquina em qualquer caso — 4096 bits pode demorar algum tempo, e o separador está a trabalhar, não bloqueado.

É seguro gerar uma chave privada numa página web?

Nesta página, sim, pela forma como está construída: o par de chaves é gerado localmente no seu navegador com a biblioteca node-forge, a página não faz nenhum pedido de rede e nada do que gera é enviado, registado ou armazenado. Ainda assim, o hábito geral vale a pena manter: gere chaves apenas em páginas (e máquinas) em que confia, e trate o ficheiro da chave privada como um segredo desde o momento em que existe.