Mkcert: certificados HTTPS válidos para localhost


Hoy en día, el uso de HTTPS se está volviendo obligatorio para todos los sitios y aplicaciones web. Pero en el proceso de desarrollo hay un problema de prueba correcta. Naturalmente, Let's Encrypt y otras CA no emiten certificados para localhost.

Tradicionalmente, hay dos soluciones.

  1. Certificados autofirmados generados a través de openssl u otros. Esta es la forma más fácil de generar una clave privada y un certificado autofirmado para 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") 

    Pero dicho certificado causará errores de confianza en los navegadores porque no hay una autoridad de certificación correspondiente en la tienda de confianza.
  2. El truco consiste en registrar un nuevo dominio como localhost.example.com, que se resuelve localmente en 127.0.0.1 (en / etc / hosts), para obtener el certificado habitual para este dominio. Pero tal fraude es cuestionable desde el punto de vista de la seguridad: al menos para los servicios públicos, tal resolución no es muy recomendable debido a un posible ataque de MiTM con un cambio a una dirección IP hostil. Si nos limitamos solo a la máquina local, entonces esta puede ser una opción adecuada, aunque también hay algunas dudas. Además, dicho certificado puede ser revocado. En cualquier caso, hay una opción más simple y segura (ver más abajo).

Esto es mkcert , una sencilla utilidad para generar certificados confiables localmente con su propia autoridad de certificación . Funciona en todos los sistemas operativos y no requiere ninguna configuración.

Versión de Linux


Primero necesitas instalar certutil .

 sudo apt install libnss3-tools -- sudo yum install nss-tools -- sudo pacman -S nss 

entonces

 brew install mkcert 

o compilar desde la fuente:

 go get -u github.com/FiloSottile/mkcert $(go env GOPATH)/bin/mkcert 

Versión de MacOS


 brew install mkcert brew install nss # if you use Firefox 

Versión de Windows


En Windows, puede descargar los archivos binarios recopilados o utilizar uno de los gestores de paquetes: Chocolatey o Scoop.

 choco install mkcert -- scoop install mkcert 

La presencia de una autoridad de certificación local es la diferencia fundamental más importante entre mkcert y openssl y los certificados autofirmados, porque cuando ejecuta dicha CA, no se producen errores de confianza a nivel local.

En principio, puede iniciar y configurar su propia CA utilizando otros medios, pero esto requiere conocimientos y habilidades no triviales. Todo se hace aquí solo, sin teclas ni configuraciones adicionales. Simplemente instale el programa, y ​​automáticamente crea una autoridad de certificación local y lo ingresa en el almacenamiento confiable del sistema y el almacenamiento confiable de 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/es435476/


All Articles