Dev Wiki | Johnny Salazar Reidel

Este guia detalha o processo de criação de uma Autoridade Certificadora (CA) raiz local e a geração de um certificado SSL para localhost. Isso permite que seus projetos em Docker sejam acessados via https:// sem os avisos de segurança do navegador, simulando um ambiente de produção de forma mais fiel.

Visão Geral do Processo

  1. Criar uma Autoridade Certificadora (CA) Raiz: Geraremos nossa própria "entidade" certificadora.

  2. Gerar o Certificado de Domínio: Usaremos nossa CA para assinar e validar um certificado para localhost.

  3. Tornar a CA Confiável: Ensinaremos o seu sistema operacional (Windows ou macOS) a confiar na nossa CA, o que, por consequência, o fará confiar no nosso certificado de localhost.

Passo 1: Preparação do Ambiente

Todos os comandos a seguir devem ser executados dentro do seu ambiente Linux (WSL ou terminal do macOS), no diretório onde estão as configurações do seu Docker.

# Navegue até a pasta de configuração do seu Docker
cd ~/docker

# Crie o diretório para os certificados, caso ainda não exista
mkdir -p ssl

# Entre no diretório
cd ssl

Passo 2: Geração da Autoridade Certificadora (CA) Raiz

A CA Raiz é a base da confiança. Uma vez que o sistema confia nela, ele confiará em todos os certificados que ela assinar.

a. Gerar a chave privada da CA: Este comando cria o arquivo da chave (rootCA.key). Será solicitada uma senha (passphrase) para proteger esta chave. Use uma senha simples como 123456, pois é apenas para ambiente local.

openssl genrsa -des3 -out rootCA.key 2048

b. Gerar o certificado da CA: Usando a chave criada, vamos gerar o certificado raiz (rootCA.pem), que terá validade de 1024 dias.

openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem

Você será solicitado a preencher algumas informações. Pode preencher com dados fictícios, mas dê um nome claro ao "Common Name" para identificá-lo facilmente mais tarde.

  • Country Name (2 letter code): BR

  • State or Province Name: RS

  • Locality Name: Sao Leopoldo

  • Organization Name: Dev Local

  • Organizational Unit Name: TI

  • Common Name (e.g. server FQDN or YOUR name): Minha CA Local

  • Email Address: Este endereço de email está sendo protegido de spambots. Você precisa do JavaScript ativado para vê-lo.

Ao final, você terá os arquivos rootCA.key e rootCA.pem. O arquivo .pem é o que importaremos no sistema operacional.

Passo 3: Geração do Certificado SSL para localhost

Agora, usaremos nossa CA para criar um certificado específico para localhost.

a. Criar os arquivos de configuração para o certificado: Para evitar digitar todas as informações na linha de comando, criaremos dois arquivos de configuração.

Crie o arquivo server.csr.cnf:

nano server.csr.cnf

Cole o seguinte conteúdo:

[req]
default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = dn

[dn]
C=BR
ST=RS
L=Sao Leopoldo
O=Dev Local
OU=TI
emailAddress=Este endereço de email está sendo protegido de spambots. Você precisa do JavaScript ativado para vê-lo.
CN = localhost

Crie o arquivo v3.ext:

nano v3.ext

Cole o seguinte conteúdo:

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = localhost

b. Gerar a chave privada para o certificado de localhost:

openssl req -new -sha256 -nodes -out server.csr -newkey rsa:2048 -keyout server.key -config <( cat server.csr.cnf )

c. Gerar o certificado server.crt assinado pela nossa CA:

openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 730 -sha256 -extfile v3.ext

Use a mesma senha da CA (123456) quando solicitado.

Passo 4: Instalando o Certificado Raiz no Sistema Operacional

Esta é a etapa crucial para que os navegadores parem de exibir o aviso de "não seguro".

4.1. Para Windows (com WSL)

  1. Abra o menu Iniciar, digite Executar e abra o aplicativo. Nele, digite certmgr.msc e pressione Enter.

  2. No Gerenciador de Certificados, navegue no painel esquerdo para Autoridades de Certificação Raiz Confiáveis > Certificados.

  3. Clique com o botão direito na pasta Certificados, vá para Todas as Tarefas > Importar....

  4. No assistente de importação, clique em "Avançar".

  5. Clique em "Procurar..." para localizar o arquivo do seu certificado. Para acessar os arquivos do WSL, digite o seguinte caminho na barra de endereço do explorador de arquivos: \\wsl$\Ubuntu\home\SEU_USUARIO\docker\ssl (substitua Ubuntu pelo nome da sua distribuição e SEU_USUARIO pelo seu nome de usuário no Linux).

  6. Mude o filtro de tipos de arquivo para "Todos os Arquivos (.)" e selecione o arquivo rootCA.pem.

  7. Clique em "Avançar", garantindo que o repositório de certificados seja "Autoridades de Certificação Raiz Confiáveis".

  8. Clique em "Avançar" e depois em "Concluir". Aceite o aviso de segurança para instalar o certificado.

4.2. Para macOS

  1. Abra o aplicativo Acesso às Chaves (Keychain Access). Você pode encontrá-lo via Spotlight (Cmd + Espaço).

  2. No painel "Chaves", selecione "Sistema".

  3. Arraste e solte o arquivo rootCA.pem da sua pasta ~/docker/ssl para a lista de certificados no Acesso às Chaves. Será solicitada sua senha de administrador.

  4. Encontre o certificado que você acabou de adicionar (pelo "Common Name", ex: Minha CA Local) e dê um duplo clique nele.

  5. Expanda a seção "Confiança".

  6. No item "Ao usar este certificado", mude de "Usar Padrões do Sistema" para "Confiar Sempre".

  7. Feche a janela. Será solicitada sua senha novamente para confirmar a alteração.

Passo 5: Verificação Final

Após instalar o certificado, reinicie completamente seu Docker e também seu navegador para garantir que as alterações sejam aplicadas. Ao acessar https://localhost, você deverá ver o cadeado de segurança sem nenhum aviso.