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
-
Criar uma Autoridade Certificadora (CA) Raiz: Geraremos nossa própria "entidade" certificadora.
-
Gerar o Certificado de Domínio: Usaremos nossa CA para assinar e validar um certificado para
localhost. -
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)
-
Abra o menu Iniciar, digite
Executare abra o aplicativo. Nele, digitecertmgr.msce pressione Enter. -
No Gerenciador de Certificados, navegue no painel esquerdo para Autoridades de Certificação Raiz Confiáveis > Certificados.
-
Clique com o botão direito na pasta Certificados, vá para Todas as Tarefas > Importar....
-
No assistente de importação, clique em "Avançar".
-
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(substituaUbuntupelo nome da sua distribuição eSEU_USUARIOpelo seu nome de usuário no Linux). -
Mude o filtro de tipos de arquivo para "Todos os Arquivos (.)" e selecione o arquivo
rootCA.pem. -
Clique em "Avançar", garantindo que o repositório de certificados seja "Autoridades de Certificação Raiz Confiáveis".
-
Clique em "Avançar" e depois em "Concluir". Aceite o aviso de segurança para instalar o certificado.
4.2. Para macOS
-
Abra o aplicativo Acesso às Chaves (Keychain Access). Você pode encontrá-lo via Spotlight (Cmd + Espaço).
-
No painel "Chaves", selecione "Sistema".
-
Arraste e solte o arquivo
rootCA.pemda sua pasta~/docker/sslpara a lista de certificados no Acesso às Chaves. Será solicitada sua senha de administrador. -
Encontre o certificado que você acabou de adicionar (pelo "Common Name", ex:
Minha CA Local) e dê um duplo clique nele. -
Expanda a seção "Confiança".
-
No item "Ao usar este certificado", mude de "Usar Padrões do Sistema" para "Confiar Sempre".
-
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.