Módulo SSL en Apache 2.4
Sumario
Introdución
Podemos usar o 'protocolo HTTPS (HyperText Transfer Protocol Secure) para aumentar a seguridade; basesase nunha capa de software protexida, SSL (Secure Socket Layer) ou TLS (Transport Layer Secure, sucesor de SSL), para a comunicación entre o cliente e o servidor Apache.
O protocolo de seguridade toma en conta a autenticación dos participantes a través dos certificados, o cifrado e o control da integridade dos datos intercambiados.
Emprega o well-known port 443, a diferencia de http que emprega o 80.
Habilitar módulo SSL
sudo a2enmod ssl sudo a2enmod headers
O módulo que xestiona o protocolo SSL é mod_ssl. Ten que estar configurado para ser cargado no ficheiro de configuración do servidor HTTP Apache.
NOTA. Comprobar que o módulo está instalado (3 posibilidades): ls /lib/apache2/modules/*ssl* /lib/apache2/modules/mod_ssl.so find /etc/apache2 -name '*ssl*' /etc/apache2/mods-available/ssl.load /etc/apache2/mods-available/ssl.conf /etc/apache2/sites-available/default-ssl.conf
cat /etc/apache2/mods-available/ssl.load # Depends: setenvif mime socache_shmcb LoadModule ssl_module /usr/lib/apache2/modules/mod_ssl.so
Generar certificado autofirmado
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt
Configurar virtual host para acceso seguro
/etc/apache2/sites-available/default-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin your_email@example.com
ServerName server_domain_or_IP
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
Desactivar SSLv2 e SSLv3 (opcional)
Podemos desactivar as versións 2 e 3 de SSL por estar obsoletas:
SSLProtocol all -SSLv2 -SSLv3
Reiniciar servicio
sudo systemctl restart apache2
Uso
Acceder por https: https://server_domain_or_IP