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