Skip to content

Instantly share code, notes, and snippets.

@gbLw1
Last active April 30, 2024 18:40
Show Gist options
  • Save gbLw1/be468550c1dec527c516445438f3924f to your computer and use it in GitHub Desktop.
Save gbLw1/be468550c1dec527c516445438f3924f to your computer and use it in GitHub Desktop.
Geração de certificados SSL para localhost

https-localhost

Tutorial simplificado para geração de certificados SSL para localhost manualmente.

Referências


Gerar certificado SSL para localhost

1. criar diretório para armazenar certificados

md -p "${XDG_DATA_HOME}/.aspnet/https"
cd "${XDG_DATA_HOME}/.aspnet/https"

2. Autoridade de certificação (Certificate authority)

Isso vai gerar os arquivos: RootCA.pem, RootCA.key & RootCA.crt

openssl req -x509 -nodes -new -sha256 -days 1024 -newkey rsa:2048 -keyout RootCA.key -out RootCA.pem -subj "/C=US/CN=Example-Root-CA"
openssl x509 -outform pem -in RootCA.pem -out RootCA.crt

3. Certificado de nome de domínio (Domain name certificate)

3.1. Crie o arquivo para listar todos os domínios locais

Esse arquivo irá conter todos os domínios hospedados localmente para desenvolvimento.

md domains.ext

3.2. Adicione os domínios locais ao arquivo domains.ext

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = localhost
DNS.2 = fake1.local
DNS.3 = fake2.local

3.3. Gere o certificado SSL para os domínios locais

Isso vai gerar os arquivos: localhost.key, localhost.csr & localhost.crt

openssl req -new -nodes -newkey rsa:2048 -keyout localhost.key -out localhost.csr -subj "/C=US/ST=YourState/L=YourCity/O=Example-Certificates/CN=localhost.local"
openssl x509 -req -sha256 -days 1024 -in localhost.csr -CA RootCA.pem -CAkey RootCA.key -CAcreateserial -extfile domains.ext -out localhost.crt

4. Converter certificados para formato PFX

Isso irá converter os arquivos localhost.crt & localhost.key para o formato localhost.pfx

openssl pkcs12 -in localhost.crt -inkey localhost.key -export -out localhost.pfx

Obs.: O comando acima irá solicitar uma senha para o arquivo localhost.pfx mas não é necessário informar uma senha.

5. Configurar o terminal para usar o certificado SSL

Adicione as variáveis de ambiente para o ASP.NET Core no arquivo .zshenv se estiver usando o Zsh. ou adicione as variáveis de ambiente no arquivo .bashrc se estiver usando o Bash.

export ASPNETCORE_Kestrel__Certificates__Default__Password="" # No password
export ASPNETCORE_Kestrel__Certificates__Default__Path="${XDG_DATA_HOME}/.aspnet/https/localhost.pfx"

6. Permitir a confiança do certificado da autoridade de certificação

Será necessário reiniar o sistema para que o certificado da autoridade de certificação seja confiável.

sudo trust anchor RootCA.crt

Obs.: O comando acima é para sistemas baseados em arch, para outros sistemas operacionais consulte a documentação.

archlinux btw

7. Reiniciar o sistema

Se você não sabe fazer isso a essa altura, você está no sistema operacional errado.

8. Rodando uma aplicação ASP.NET Core

dotnet run

Você também pode deixar explícito que deseja rodar a aplicação em HTTPS.

dotnet run -lp https

O parâmetro -lp é um atalho para --launch-profile. O valor https é o nome do perfil de lançamento que foi configurado no arquivo Properties/launchSettings.json.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment