Criando certificados locais (localhost) no servidor Apache
Precisei criar certificados locais para testar corretamente o HTTPS antes de subir o código para a produção. Eis o que fiz:
Etapa 1 - Criar autoridade local
Uma autoridade local é aquela que fornecerá uma identidade padrão para certificar endereços e, sem ela, não é possível criar certificados corretamente. No Linux, podemos usar o comando openssl para gerar certificados. Vamos ver como se faz.
Inicialmente usei dois comandos para criar a autoridade local. O primeiro foi...
sudo openssl genrsa -out /etc/ssl/private/rootCA.key 2048
... onde rootCA.key é o nome do arquivo que receberá os dados do certificado (você pode escolher qualquer nome, mas lembre-se do nome escolhido).
O segundo comando foi...
sudo openssl req -x509 -new -nodes -key /etc/ssl/private/rootCA.key -sha256 -days 3650 -out /etc/ssl/certs/rootCA.pem
... e, da mesma maneira, o nome rootCA.key pode ser alterado ao gosto do freguês.
Você precisa responder algumas perguntas sobre a localização e a empresa do certificado. Lembre-se que estamos gerando um certificado para o localhost, então não precisa usar dados reais.
A autoridade local foi criada. No seu navegador preferido, adicione o certificado .pem que acabou de criar.
Etapa 2 - O arquivo de configuração
Para facilitar, criei um arquivo de configuração, contendo os dados da chave que vou criar, e salvei como localhost.cnf. Esse é o conteúdo:
Etapa 3 - Criar o certificado
Com a autoridade local e o arquivo de configuração criados, agora é possível criar a chave privada e o certificado. Para criar a chave privada, acessei o diretório que guardará as minhas chaves e usei o comando...
openssl req -new -sha256 -nodes -newkey rsa:2048 -keyout localhost.key -out localhost.csr -config localhost.cnf
... e, em seguida...
openssl x509 -req -in localhost.csr -CA /etc/ssl/certs/rootCA.pem -CAkey /etc/ssl/private/rootCA.key -CAcreateserial -out localhost.crt -sha256 -days 3650 -extfile localhost.cnf -extensions v3_ca
Etapa final
Por último precisei alterar o meu virtual host tanto para responder na porta 443 quanto para carregar os arquivos criados. Ficou assim:
O teste
Para testar, reiniciei o apache usando...
sudo systemctl restart apache2
... e acessei o endereço https://localhost. O resultado: certificado criado e devidamente reconhecido, como a imagem demonstra:
Comentários
Postar um comentário