Certificados SSL válidos para localhost con mkcert
Te has preguntado si existe la posibilidad de crear certificados SSL/TLS en un ambiente local de desarrollo, el llamado localhost y tener un https://localhost
mkcert es una herramienta que nos puede ayudar con esto, tan solo con unos cuantos comandos
Instalación y configuración
1. Instalar
De acuerdo a tu distribución o Sistema Operativo ocupar el gestor o instalador correspondiente. En mi caso uso un Archlinux
sudo pacman -S mkcert
2. Generar certificado local CA
mkcert -install
Con esto se generara los CA rootCA-key.pem y rootCA.pem
en la carpeta share
del HOME, $HOME/.local/share/mkcert/
3. Generear certificado para el localhost
Puedes optar por generalos en el HOME de tu sistema o en la carpeta de tus desarrollos, en mi caso escogeré la segunda opción
# Navegar a la carpeta de desarrollos
cd /srv/http
# Generar certificado
mkcert localhost
# La salida será algo parecido a esto
Created a new certificate valid for the following names 📜
- "localhost"
The certificate is at "./localhost.pem" and the key at "./localhost-key.pem" ✅
It will expire on 6 September 2025 🗓
4. Configurar apache
Editar el archivo de configuración de apachehttpd.conf
y descomentar las líneas
LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
Include conf/extra/httpd-ssl.conf
Editar conf/extra/httpd-ssl.conf
y modificar las líneas con los valores de los certificados creados en el paso 3
, seguido reiniciar apache
SSLCertificateFile "/srv/http/localhost.pem"
SSLCertificateKeyFile "/srv/http/localhost-key.pem"
5. Crear htaccess
Básicamente con el punto 4 ya estaría configurado el HTTPS en localhost. Pero tendríamos que poner el https://localhost
manualmente. Para mitigar esto, crear un .htaccess en la raíz de tus desarrollos con el contenido
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
Ahora ya podemos navegar de manera segura en localhost