El tutorial de hoy detalla paso a paso 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.
Se recomienda consultar la documentación oficial de OpenSSL para entender bien cómo se crean los certificados SSL autofirmados.
openssl genrsa -des3 -out mitienda.pem 2048
openssl req -new -key mitienda.pem -out mitienda.csr
openssl x509 -req -days 365 -in mitienda.csr -signkey mitienda.pem -out mitienda.crt
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/
.
Para ver si tenemos cargado el módulo mod_ssl de Apache podemos hacer:
apache2ctl -M
Si no ves el ssl_module
, entonces hay que cargarlo (y justo después reiniciar Apache, recuerda):
a2enmod ssl
Ahora hay que preparar nuestro host virtual para que funcione con SSL.
Archivo /etc/apache2/sites-available/mitienda-ssl.conf
:
<IfModule mod_ssl.c>
<VirtualHost *: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:
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:
a2ensite mitienda-ssl
Y reiniciar Apache.