HTTPS con hosts virtuales en XAMPP

HTTPS con hosts virtuales en XAMPP

Hasta ahora, nunca he usado HTTPS para dominios de desarrollo local. Ahora tenía que usarlo para un proyecto, y aquí se explica cómo hacerlo funcionar en XAMPP con hosts virtuales.

Actualización del 31 de mayo de 2018: Antes de la actualización, describí la creación de un certificado SSL como un primer paso necesario antes de configurar el host virtual. Pero tu mostrará una advertencia independientemente de si hay o no un certificado creado por ti, así que eliminé esta parte. Debes agregar tu sitio local como una excepción para no recibir la advertencia cada vez.

Actualización desde el 1 de junio de 2020: Parece que necesitas el archivo cert; de lo contrario, apache no se iniciará, así que agregué esta parte a la publicación.

Se requieren dos pasos para la solución:

  1. Crear un certificado SSL.
  2. Configurar el host virtual.

El requisito es (obviamente) XAMPP.

Creando un certificado SSL

Un buen tutorial sobre cómo crear un certificado se encuentra en robsnotebook.com. Es de 2007, pero funciona. Para crear un certificado, puedes seguir estos pasos en la línea de comando:

  1. Vete al directorio de Apache C:/xampp/apache.
  2. Corre makecert.
  3. Escribe una frase como contraseña para PEM y otra información requerida que irá apareciendo con cada paso en pantalla. Para Nombre común, debes escribir el dominio que deseas usar para el host virtual, de modo que el certificado esté firmado para ese dominio en concreto.
  4. Después de procesar todos los pasos, es posible que quieras importar el certificado al navegador (se encuentra en C:/xampp/apache/conf/ssl.crt/server.crt). Sin embargo, después de cargar tu sitio web, recibirás una advertencia sobre el certificado autofirmado inseguro, para que se haga efectivo deberás agregarlo como una excepción desde el mismo mensaje.

Configurar el host virtual con HTTPS

Entrada en el archivo hosts de Windows

Para que Windows sepa, por ejemplo, que el tupaginasuperguay.test debe apuntar a la dirección IP 127.0.0.1 (localhost), necesitamos registrarla en el archivo hosts en Windows. El archivo se puede encontrar en C:/Windows/System32/drivers/etc. Para editarlo, necesitas privilegios de administrador (ábrelo con el editor de Windows. Haz clic derecho sobre él y elije Ejecutar como administrador).

Al final del archivo hosts, agrega una nueva línea con el siguiente contenido:

127.0.0.1 tupaginasuperguay.test

Obviamente, tendrás que reemplazar tupaginasuperguay.test por el dominio que te interesa crear. Una vez hecho esto ya puedes guardar y cerrar el archivo.

Creando el host virtual en Apache

Los hosts virtuales en Apache se pueden encontrar en el archivo C:/xampp/apache/conf/extra/httpd-vhosts.conf. Abre el archivo y agrega todos los datos del nuevo dominio de la siguiente manera (una respuesta de stackoverflow.com fue muy útil; la pregunta relacionada también me llevó al artículo sobre la configuración del certificado SSL):

<VirtualHost tupaginasuperguay.test:80>
DocumentRoot "C:/xampp/htdocs/tupaginasuperguay.test"
ServerName tupaginasuperguay.test
<Directory "C:/xampp/htdocs/tupaginasuperguay.test">
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost tupaginasuperguay.test:443>
DocumentRoot "C:/xampp/htdocs/tupaginasuperguay.test"
ServerName tupaginasuperguay.test
SSLEngine On
SSLCertificateFile "C:/xampp/apache/conf/ssl.crt/server.crt"
SSLCertificateKeyFile "C:/xampp/apache/conf/ssl.key/server.key"
<Directory "xampp/htdocs/tupaginasuperguay.test">
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

Aquí tienes que ajustar la configuración para DocumentRoot, ServerName, Directoryy el dominio en el elemento VirtualHost.

El primer VirtualHost es para conexiones HTTP, el segundo es para conexiones HTTPS.

Tal vez necesites descomentar la siguiente línea en el archivo C:/xampp/apache/conf/httpd.conf:

LoadModule ssl_module modules/mod_ssl.so

Ahora puede reiniciar Apache y abrir su sitio con HTTPS (incluida la advertencia del navegador …).

A mi entender, con esto ya podrás crear una SSL en local con el dominio que necesites. Por lo general, esto es algo imperativo para poder desarrollar, por ejemplo, un Woocommerce con ciertos plugins que te requieren de manera inevitable, una conexión https para funcionar correctamente. Siguiendo los pasos en orden podrás lograrlo. Si aún así no lo logras o te queda algún tipo de duda, coméntalo aquí abajo. Será un placer ayudarte.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *