Configura un servidor SSL con Apache2 para simular en local tu sistema e-commerce, por ejemplo, un Magento o un Prestashop
El artículo de hoy explica cómo generar un certificado digital de servidor seguro con OpenSSL y cómo configurar Apache en nuestra máquina local para poder trabajar con dicho certificado.
El objetivo es simular en local el funcionamiento de un sistema de comercio electrónico que trabaje con certificados digitales en producción, por ejemplo, un Magento o un Prestashop.
Vamos a ver cómo se crean los certificados SSL autofirmados con OpenSSL. Si te interesa este tema puedes pinchar en este enlace y también consultar la documentación oficial de OpenSSL.
1. Creación del certificado autofirmado con OpenSSL
1.1. Creación de una clave privada de 2048 bits con el algoritmo 3DES
1 |
openssl genrsa -des3 -out mitienda.pem 2048 |
1.2. Creación del CSR correspondiente
1 |
openssl req -new -key mitienda.pem -out mitienda.csr |
1.3. Firma del CSR generado en el paso anterior
1 |
openssl x509 -req -days 365 -in mitienda.csr -signkey mitienda.pem -out mitienda.crt |
1.4. Para desencriptar la clave privada RSA
1 |
openssl rsa -in mitienda.pem -out mitienda.key |
Ya lo tenemos. Ahora pondremos nuestro certificado digital de servidor seguro SSL recién creado en la carpeta /etc/ssl/certs/
2. Configuración de Apache
2.1. Carga del módulo SSL de Apache
Para ver si tenemos cargado el módulo mod_ssl de Apache podemos hacer:
1 |
apache2ctl -M |
Si no ves el ssl_module, entonces hay que cargarlo (y justo después reiniciar Apache, recuerda):
1 |
a2enmod ssl |
2.2. Configuración de un host virtual
Ahora hay que preparar nuestro host virtual para que funcione con SSL.
Archivo /etc/apache2/sites-available/mitienda-ssl.conf:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<IfModule mod_ssl.c> <VirtualHost _default_:443> ServerAdmin info@programarivm.com DocumentRoot /var/www/vhosts/mitienda.local LogLevel warn ErrorLog ${APACHE_LOG_DIR}/error-mitienda-ssl.log CustomLog ${APACHE_LOG_DIR}/access-mitienda-ssl.log combined SSLEngine on SSLCertificateKeyFile /etc/ssl/certs/mitienda.key SSLCertificateFile /etc/ssl/certs/mitienda.crt <Directory "/var/www/vhosts/mitienda.local/"> Options -Indexes -Multiviews AllowOverride All Order deny,allow Deny from all Allow from 127.0.0.1 </Directory> <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory /usr/lib/cgi-bin> SSLOptions +StdEnvVars </Directory> BrowserMatch "MSIE [2-6]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown </VirtualHost> </IfModule> |
Como habrás observado, esta es la parte importante:
1 2 3 |
SSLEngine on SSLCertificateKeyFile /etc/ssl/certs/mitienda.key SSLCertificateFile /etc/ssl/certs/mitienda.crt |
Ya está. Ahora sólo falta activar el nuevo host virtual SSL:
1 |
a2ensite mitienda-ssl |
Y reiniciar Apache.
¿Me dejas un comentario? ¡Gracias!