SSL (Secure Socket Layer) cifra las transacciones de datos entre un navegador y un servidor, lo que mejora la seguridad de tu sitio web. Si bien usar HTTP para localhost suele ser suficiente para el desarrollo, a veces necesitas probarlo en HTTPS. Por ejemplo, es posible que debas probar un service worker, establecer cookies seguras que necesitan que el sitio se cargue a través de HTTPS o probar una API de terceros que generalmente requiere HTTPS, como una API de tipo de autenticación o pago.
Probar tu sitio con SSL durante el desarrollo garantiza que todos los elementos, incluidas las URL y los recursos como CSS y JavaScript, funcionen correctamente con HTTPS. Esto ayuda a reflejar el entorno de producción con mayor precisión, lo que ayuda a que las transiciones sean más fluidas al momento de la publicación.
En este artículo, te guiaremos a través del proceso de habilitar HTTPS en tu localhost, lo que garantiza que estés preparado para cualquier necesidad de prueba segura.
¿Listo para empezar? ¡Vamos!
Empezando con mkcert
mkcert simplifica el proceso de instalación de certificados SSL para localhost. A diferencia de los métodos tradicionales que a menudo son complejos, mkcert ofrece un enfoque sencillo. Configura un certificado de desarrollo confiable localmente al instalar y confiar automáticamente en una Autoridad de certificación (CA) local en tu sistema. Esta herramienta es compatible con macOS, Linux y Windows, y cubre una amplia gama de entornos de desarrollo.
Si estás en macOS o Linux, primero deberás instalar Homebrew. Los usuarios de Windows deben instalar Chocolatey. Con estas herramientas en su lugar, puedes instalar fácilmente mkcert ejecutando los siguientes comandos:
// Para macOS o Linux
brew install mkcert && brew install nss
# "nss" es necesario para la compatibilidad con Firefox
// Para Windows
choco install mkcert
Instalación de Certificados SSL
Comienza ejecutando el siguiente comando para crear una Autoridad de certificación/Certificate Authority (CA) que firmará tus certificados:
mkcert -install
Es importante mantener seguro el archivo rootCA-key.pem y nunca compartirlo. Si se ve comprometido, un atacante podría potencialmente interceptar tus conexiones seguras a cualquier sitio. ¡Maneja este archivo con precaución!
Después de la creación de la CA, genera un certificado para el nombre de host localhost usando este comando:
mkcert localhost
Esta herramienta también es lo suficientemente versátil como para producir certificados para otros nombres de host o incluso direcciones IP locales, como 127.0.0.1.
Por ejemplo:
mkcert esgeeks.local www.esgeeks.local 127.0.0.1
Ejecutando un Servidor HTTP
Con tus certificados SSL listos, ahora puedes iniciar tu servidor local usando HTTPS. Para aquellos que utilizan Node.js, el paquete http-server ofrece un método sencillo para iniciar un servidor. Debes especificar las rutas a tus archivos de certificado y clave.
Por ejemplo, así es como se ejecuta un servidor localhost en el puerto 8080:
http-server -S -C localhost.pem -K localhost-key.pem -p 8080
Una vez que se esté ejecutando, se puede acceder a tu localhost a través de HTTPS en https://localhost:8080.
Ejecutando con Docker y Nginx
Si Docker y Nginx forman parte de tu configuración, la siguiente configuración del servidor te permite ejecutar HTTPS:
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /path/to/localhost.pem;
ssl_certificate_key /path/to/localhost-key.pem;
location / {
root /var/www/html;
}
}
Vincula los certificados y los archivos de configuración necesarios a tu contenedor Docker a través de un archivo de configuración de Docker Compose, como se muestra a continuación:
services:
nginx:
image: nginx:latest
ports:
- "8081:443"
volumes:
- ./localhost-key.pem:/etc/nginx/certs/localhost-key.pem
- ./localhost.pem:/etc/nginx/certs/localhost.pem
- ./nginx.conf:/etc/nginx/conf.d/default.conf
- ./index.html:/var/www/html/index.html
Desinstalar mkcert
Si decides dejar de usar HTTPS para el desarrollo local o si vas a cambiar a otro método para manejar los certificados SSL, es posible que desees desinstalar mkcert.
Para eliminar mkcert de tu sistema, ejecuta el siguiente comando:
mkcert -uninstall
Este comando elimina la CA raíz tanto de tu sistema como del navegador. También debes eliminar el archivo de certificado raíz y cualquier par de certificados que hayas generado:
rm -r "$(mkcert -CAROOT)"
Conclusión
Implementar HTTPS en tu servidor local es crucial para probar correctamente características como service workers, cookies seguras y API de terceros que requieren una conexión segura. mkcert
proporciona una forma eficiente de generar y administrar certificados SSL en varias plataformas y navegadores, lo que agiliza el proceso para los desarrolladores.