Atualmente, o uso de HTTPS está se tornando obrigatório para todos os sites e aplicativos da web. Mas no processo de desenvolvimento, há um problema de teste correto. Naturalmente, o Let's Encrypt e outras autoridades de certificação não emitem certificados para o host local.
Tradicionalmente, existem duas soluções.
- Certificados autoassinados gerados via openssl ou outros.Aqui está a maneira mais fácil de gerar uma chave privada e um certificado autoassinado para o localhost:
openssl req -x509 -out localhost.crt -keyout localhost.key \ -newkey rsa:2048 -nodes -sha256 \ -subj '/CN=localhost' -extensions EXT -config <( \ printf "[dn]\nCN=localhost\n[req]\ndistinguished_name = dn\n[EXT]\nsubjectAltName=DNS:localhost\nkeyUsage=digitalSignature\nextendedKeyUsage=serverAuth")
Mas esse certificado causará erros de confiança nos navegadores porque não há autoridade de certificação correspondente no armazenamento confiável. - O truque é registrar um novo domínio como localhost.example.com, que é resolvido localmente para 127.0.0.1 (em / etc / hosts), para obter o certificado usual para esse domínio. Mas essa fraude é questionável do ponto de vista da segurança - pelo menos para serviços públicos, essa resolução não é recomendada por causa de um possível ataque MiTM com uma alteração em um endereço IP hostil. Se nos restringirmos apenas à máquina local, essa poderá ser uma opção adequada, embora também haja algumas dúvidas. Além disso, esse certificado pode ser revogado. De qualquer forma, existe uma opção mais simples e segura (veja abaixo).
Este é o
mkcert , um utilitário simples para gerar certificados confiáveis localmente com
sua própria autoridade de certificação . Ele funciona em todos os sistemas operacionais e não requer nenhuma configuração.
Versão Linux
Primeiro você precisa instalar o
certutil
.
sudo apt install libnss3-tools -- sudo yum install nss-tools -- sudo pacman -S nss
então
brew install mkcert
ou compilar a partir da fonte:
go get -u github.com/FiloSottile/mkcert $(go env GOPATH)/bin/mkcert
Versão MacOS
brew install mkcert brew install nss
Versão do Windows
No Windows, você pode baixar os
binários coletados ou usar um dos gerenciadores de pacotes: Chocolatey ou Scoop.
choco install mkcert -- scoop install mkcert
A presença de uma autoridade de certificação local é a diferença fundamental mais importante entre mkcert e openssl e certificados autoassinados, porque quando você executa uma CA, nenhum erro de confiança ocorre localmente.
Em princípio, você pode iniciar e configurar sua própria CA usando outros meios, mas isso requer conhecimentos e habilidades não triviais. Tudo é feito aqui por si só, sem chaves e configurações adicionais. Basta instalar o programa - e ele cria automaticamente uma autoridade de certificação local e o insere no armazenamento confiável do sistema e no armazenamento confiável do Firefox.
$ mkcert -install Created a new local CA at "/Users/filippo/Library/Application Support/mkcert" The local CA is now installed in the system trust store! ️ The local CA is now installed in the Firefox trust store (requires restart)!