meta data de esta página
Implementación de Cetificados SSL en Apache
Generar certificados autofirmados
Por ejemplo para generar unos certificados autofirmados para nextcloud
Si no tenemos el módulo ssl lo instalamos
yum install mod_ssl
Creamos un directorio específico para almacenar la clave privada
sudo mkdir /etc/ssl/private sudo chmod 700 /etc/ssl/private/
sudo openssl req -x509 -days 365 -nodes -newkey rsa:2048 -keyout /etc/ssl/private/nextcloud.key -out /etc/ssl/certs/nextcloud.crtcontestamos a las preguntas del asistente y se generaran nuestros certificados privados.
Para tener una negociación de certificados fuerte Perfect Forward Secrecy necesitamos crear un grupo DH (Diffie-Hellman group) y añadirlo a nuestro certificado. Para ello ejecutamos
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048y procedemos a añadirlo a nuestro certificado autofirmado
cat /etc/ssl/certs/dhparam.pem | sudo tee -a /etc/ssl/certs/nextcloud.crt
Configurar Apache para SSL
Editamos el fichero de configuración SSL de nuestro servidor
Tendrás que editar/crear el fichero de configuración /etc/httpd/conf.d/ssl.conf o bien editar el fichero de configuración de tu Virtual Host.
##Fichero ejemplo de https://www.sugeek.co/instalar-certificado-ssl-en-centos-7/ Listen 443 NameVirtualHost *:443 SSLPassPhraseDialog builtin SSLSessionCacheTimeout 300 SSLRandomSeed startup file:/dev/urandom 256 SSLRandomSeed connect builtin SSLCryptoDevice builtin SSLStrictSNIVHostCheck off <VirtualHost *:443> DocumentRoot /var/www/html/misitio ServerName www.misitio.com ServerAlias misitio.com SSLEngine on SSLProtocol all -SSLv2 -SSLv3 SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW SSLCertificateFile /etc/letsencrypt/live/www.misitio.com/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/www.misitio.com/privkey.pem ErrorLog logs/ssl_error_log TransferLog logs/ssl_access_log LogLevel warn <Files ~ “\.(cgi|shtml|phtml|php3?)$”> SSLOptions +StdEnvVars </Files> SetEnvIf User-Agent “.*MSIE.*” \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 CustomLog logs/ssl_request_log \ “%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \”%r\” %b” </VirtualHost>
Reiniciamos Apache para que se apliquen los cambios.
systemctl restart httpd
Redireccionar el tráfico http a https
Podrías redirigir todo el tráfico de http (normal) a https (seguro) mediante una configuración en el virtual host para el puerto 80. Para ello creamos un fichero de configuración
sudo vi /etc/httpd/conf.d/non-ssl.confAñadimos las siguientes línas al fichero que hemos creado para redireccionar el tráfico
<VirtualHost *:80> ServerName www.example.com Redirect "/" "https://www.example.com/" </VirtualHost>