Post actualizado el día octubre 29, 2026 by DeiviSanzPlay
Cuando alguien intenta XAMPP instalar certificado SSL local, la receta que circula en foros suele ser siempre la misma: generar un certificado autofirmado con OpenSSL, apuntarlo en httpd-ssl.conf y añadirlo al almacén de confianza del sistema. Funciona. Hasta que deja de hacerlo. Y deja de hacerlo justo en el escenario donde más lo necesitas: cuando trabajas con un dominio .dev o activas HSTS en un proyecto local.
Ahí la opción obvia (autofirmado + excepción en el navegador) se rompe. Chrome fuerza HTTPS en todos los .dev por política de la lista HSTS precargada, y una excepción manual no basta porque el navegador ni siquiera te deja continuar. El botón «Avanzado» desaparece. No hay forma de saltarse el aviso. Ese es el límite real del enfoque clásico y por eso muchos tutoriales fallan sin explicar el motivo.
Por qué el autofirmado no cubre todos los XAMPP certificado SSL local
Un certificado autofirmado en XAMPP sirve para desarrollo interno, pero arrastra dos problemas que se acumulan: el navegador lo marca como no confiable hasta que lo importas en el almacén del sistema, y algunos frameworks (Laravel con Vite, por ejemplo) bloquean peticiones mixtas o websockets WSS si el certificado no coincide con el hostname exacto. Si tu vhosts.conf declara proyecto.local pero el certificado se emitió para localhost, el handshake falla aunque hayas importado la CA.
La solución que sí funciona en ese escenario límite pasa por emitir el certificado con una CA local propia (mkcert es la herramienta más práctica) en lugar de autofirmar directamente. mkcert instala una CA raíz en el sistema y firma certificados para los dominios que le indiques, incluidos los .dev y .test. Chrome confía en ellos sin excepciones manuales. En mi experiencia, este cambio reduce a la mitad el tiempo perdido con errores ERR_CERT_AUTHORITY_INVALID que reaparecen cada vez que se actualiza el navegador.
Aun así, conviene matizar: mkcert no arregla todo. Si trabajas en un equipo donde varias personas comparten el mismo XAMPP, cada una debe instalar la CA raíz en su máquina. Y si el proyecto se despliega en un servidor con Docker, el certificado local no viaja con el código salvo que lo montes como volumen. Esto no funciona para entornos de staging reales; solo para desarrollo local.
El detalle de Apache que casi nadie menciona
Al configurar XAMPP instalar certificado SSL local con mkcert, el error más habitual es no activar el módulo mod_ssl y el bloque Listen 443 en httpd.conf. XAMPP los trae comentados por defecto. Si solo editas httpd-ssl.conf sin descomentar esas líneas, Apache arranca sin errores visibles pero el puerto 443 no escucha. Lo compruebas con netstat y ves que no hay nada. Es un fallo silencioso que descoloca.
Otro punto: las rutas de los certificados en httpd-ssl.conf deben ser absolutas o relativas a la carpeta de Apache, no a la raíz de XAMPP. Un SSLCertificateFile «cert.pem» sin ruta completa hará que Apache falle al reiniciar con un mensaje genérico sobre configuración. La documentación oficial de Apache explica el formato, pero no siempre queda claro que XAMPP usa su propio httpd.conf fragmentado.
Para verificar que el certificado quedó bien emitido, la referencia práctica es el propio comando openssl x509 -in cert.pem -text, que muestra el Subject Alternative Name. Si tu dominio no aparece ahí, el navegador seguirá rechazándolo aunque la CA esté instalada. La documentación de mkcert en su repositorio oficial cubre este punto con ejemplos, y la guía de Mozilla sobre certificados locales también es útil como fuente genérica de consulta.
Cuándo conviene replantear el enfoque
Hay un caso donde ni siquiera mkcert resuelve el problema: cuando el navegador tiene HSTS con includeSubDomains y preload activado para un dominio concreto que estás replicando en local. En ese supuesto, la única salida razonable es usar un dominio alternativo (.localhost o .test) y dejar el .dev para producción. Forzar el .dev local es una batalla perdida contra la política del navegador.
Mi recomendación tras varios proyectos: si el equipo es pequeño y los dominios son variados, mkcert con una CA compartida es el mejor equilibrio. Si el proyecto es individual y el dominio es localhost puro, el autofirmado clásico sigue sirviendo. La línea divisoria está en si el navegador te obliga a interactuar con la advertencia de seguridad. Cuando eso ocurre, ya no estás en terreno de XAMPP instalar certificado SSL local convencional y necesitas cambiar de estrategia.
Ninguna de estas rutas garantiza que el navegador no cambie sus políticas en el futuro. Las listas HSTS se actualizan y lo que hoy funciona puede romperse mañana. Verificar el estado del certificado tras cada actualización mayor de Chrome o Firefox es una costumbre sana, no una pérdida de tiempo.
Perfiles verificables: Sitio web
Publicado el 29 de October de 2026. Última revisión: 29 de October de 2026.