Habilitación de SSL (protocolo https) con xampp en un proyecto PHP local

Existen muchas ventajas (y desventajas) sobre el uso de https en nuestros sitios web. Algunas API del navegador solo son accesibles si la conexión es segura (webkitSpeechRecognition, getUserMedia, etc.), no puede cargar recursos inseguros ( http ) desde sitios web seguros ( https ) y muchos otros puntos.

Probablemente haya intentado simplemente cambiar la URL en el navegador con en httpslugar de httpal principio , sin embargo , lo único que encontrará si intenta acceder en el navegador será ¡  Objeto no encontrado! .

El problema habla por sí solo y debemos resolverlo, nuestro host virtual no proporciona soporte SSL para nuestro proyecto, por lo tanto, no podemos usar una conexión segura.

Habilitar SSL para una URL de host local

De forma predeterminada, el dominio localhost le permite acceder a cualquier archivo dentro de la xampp/htdocscarpeta. Por ejemplo, si tiene un archivo HTML file.htmlubicado en C:/xampp/htdocs/file.html, entonces puede acceder a él en el navegador http://localhost/file.html con el protocolo HTTP fácilmente. De la misma forma puedes acceder al documento con el protocolo HTTPS en https://localhost/file.html.

Si accede a sus archivos o proyectos mediante un host virtual, puede seguir el siguiente paso.

Habilite SSL para un vhost en un solo proyecto

Suponemos que ya ha montado un host virtual normal en el puerto * 80 y puede parecer similar a:

<VirtualHost 127.0.0.2:80>
  DocumentRoot "C:/xampp/htdocs/myproject/web"
  DirectoryIndex index.php

  <Directory "C:/xampp/htdocs/myproject/web">
	Options All
	AllowOverride All
	Require all granted
  </Directory>
</VirtualHost>

Un vhost normal que apunta al puerto 80 en un proyecto simple de Symfony 3, nada especial y no soporta https por sí mismo.

Para habilitar la conexión SSL, debe agregar las siguientes líneas dentro de otra VirtualHostetiqueta, básicamente con la misma estructura que la etiqueta principal de VirtualHost pero con la siguiente información:

Nota

El puerto ahora debe ser 443 en lugar del 80.

SSLEngine on
SSLCertificateFile "conf/ssl.crt/server.crt"
SSLCertificateKeyFile "conf/ssl.key/server.key"

Las líneas anteriores habilitarán el SSL en su proyecto. Tenga en cuenta que las rutas son relativas, con una distribución xampp instalada normal debería funcionar, si no funciona, intente cambiarla a la ruta absoluta. Normalmente se encuentran dentro de xampp/apache/conf/ssl.key/server.keyxampp/apache/conf/ssl.crt/server.crt.

<VirtualHost 127.0.0.2:443>
    DocumentRoot "C:/xampp/htdocs/myproject/web"
    ServerName myproject
    SSLEngine on
    SSLCertificateFile "conf/ssl.crt/server.crt"
    SSLCertificateKeyFile "conf/ssl.key/server.key"
    <Directory "C:/xampp/htdocs/myproject/web">
        Options All
	AllowOverride All
	Require all granted
    </Directory>
</VirtualHost>

Recuerde que el punto importante para que el SSL son las propiedades SSLEngineSSLCertificateFile SSLCertificateKeyFile y el puerto correcto ( 443 ).

Ahora agregue ambos VirtualHost en su archivo httpd-vhosts.conf:

# http
<VirtualHost 127.0.0.2:80>
    DocumentRoot "C:/xampp/htdocs/myproject/web"
    DirectoryIndex index.php

    <Directory "C:/xampp/htdocs/myproject/web">
        Options All
    	AllowOverride All
    	Require all granted
    </Directory>
</VirtualHost>

# https
<VirtualHost 127.0.0.2:443>
    DocumentRoot "C:/xampp/htdocs/myproject/web"
    ServerName myproject
    SSLEngine on
    SSLCertificateFile "conf/ssl.crt/server.crt"
    SSLCertificateKeyFile "conf/ssl.key/server.key"
    <Directory "C:/xampp/htdocs/myproject/web">
        Options All
    	AllowOverride All
    	Require all granted
    </Directory>
</VirtualHost>

Guarde el archivo httpd-vhosts.conf y reinicie el servicio apache e intente conectarse usando el protocolo https.

Nota

En algunos navegadores, recibirá una advertencia debido a un certificado que no es de confianza, solo debe omitir esta advertencia.

Que te diviertas ❤️!

Esto podria interesarte

Conviertete en un programador más sociable