Configurar SSL en XAMPP con certificados autofirmados

Cargar el módulo SSL en el servidor Apache de XAMPP

Lo primero que vamos a hacer es modificar el archivo \xampp\apache\conf\httpd.conf eliminando el # de la línea «LoadModule ssl_module modules/mod_ssl.so» y en el archivo \xampp\apache\php\php.ini eliminar el ; de la línea extension=php_openssl.dll.

Generar un certificado de seguridad firmarlo e instalarlo en el servidor Apache de XAMPP

A continuación tenemos que generar un certificado de seguridad, firmarlo e instalarlo en el servidor Apache de XAMPP.
Para generar un certificado que podamos instalar en el servidor Apache de XAMPP podemos utilizar Open SSL. Una vez instalado en la carpeta c:\OpenSSL-Win32 (default), abrimos una ventana de comando, os colocáis en la carpeta «apache/conf» con «cd \xampp\apache\conf» y ejecutamos las siguientes líneas.

REM Definimos las variables de entorno
SET OPENSSL_HOME = C:\OpenSSL-Win32
SET OPENSSL_CONF=C:\OpenSSL-Win32\bin\openssl.cfg
SET PATH=%PATH%;C:\OpenSSL-Win32\bin

REM Creamos un CA, clave de servidor y lo firmamos:
openssl genrsa -out ca_server.key 1024
openssl req -new -newkey rsa:1024 -nodes -out ca_server.csr -keyout ca_server.key -subj "/C=US/ST=NY/L=New York/O=CA Server Certificate/OU=IT/CN=www.CAServer.org"
openssl x509 -req -days 365 -in ca_server.csr -signkey ca_server.key -out ca_server.crt
openssl req -new -newkey rsa:1024 -nodes -out server.csr -keyout server.key -subj "/C=US/ST=Texas/L=Austin/O=Server /OU=IT/CN=192.168.0.101
openssl x509 -req -days 365 -CA ca_server.crt -CAkey ca_server.key -CAcreateserial -in server.csr -out server.crt

REM creamos otro CA, clave de cliente y lo firmamos:
openssl genrsa -out ca_client.key 1024
openssl req -new -newkey rsa:1024 -nodes -out ca_client.csr -keyout ca_client.key -subj "/C=US/ST=TX/L=Austin/O=CA for Client Cert/OU=IT/CN=www.CAforClient.org"
openssl x509 -req -days 365 -in ca_client.csr -signkey ca_client.key -out ca_client.crt
openssl genrsa -out client.key 1024
openssl req -new -key client.key -out client.csr -subj "/C=US/ST=Texas/L=Austin/O=Client Iqbal/OU=IT/CN=ClientIqbal"
openssl x509 -req -days 365 -CA ca_client.crt -CAkey ca_client.key -CAcreateserial -in client.csr -out client_signedby_ca_client.crt
openssl pkcs12 -export -clcerts -in client_signedby_ca_client.crt -inkey client.key -out client_signedby_ca_client.p12

En la carpeta /xampp/apache/conf habrán aparecido todos los archios crt que necesitamos para configurar Apache.

Configurar un virtualhosts para la aplicación que va a utilizar el certificado con https.

Una vez creados los archivos de los certificados, tendremos que configurar la forma en que Apache tratará las peticiones al puerto 443 que es el del protocolo https.

Supongamos que tenemos una aplicación web en la carpeta C:/Desarrollo/miapp, y a esa aplicación web queremos acceder con https. Abrimos el archivo /xampp/apache/conf/extra/httpd-vhosts.conf y añadimos las siguientes líneas:

<VirtualHost *:443>
    DocumentRoot "C:/Desarrollo/miapp"
    ServerName www.miapp.com
    ErrorLog "logs/miapp-error.log"
    CustomLog "logs/miapp-access.log" common
	SSLEngine On
    SSLCertificateFile "C:/xampp/apache/conf/ssl.crt/server.crt"
    SSLCertificateKeyFile "C:/xampp/apache/conf/ssl.key/server.key"
	SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
	<Directory "C:/Desarrollo/miapp">
        Options All
		AllowOverride All
		Require all granted
    </Directory>	
</VirtualHost>

En el archivo hosts de Windows añadiremos la entrada 127.0.0.1 www.miapp.com y ya podemos acceder con el navegador a https://www.miapp.com

Fuente: http://www.hjgode.de/wp/2015/10/21/setup-xampp-windows-as-ssltls-server/

Comments