Mkcert: certificados HTTPS válidos para localhost


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.

  1. 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.
  2. 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 # if you use Firefox 

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)! 

Source: https://habr.com/ru/post/pt435476/


All Articles