Para encriptar tu sitio web con SSL, necesitas un certificado SSL. Dado que los certificados validados son relativamente costosos, también existe una versión gratuita que funciona igual de bien y funciona para todos los visitantes.
Para instalar Certbot, necesitas Git y, por supuesto, Certbot.
Primero debes actualizar tu servidor:
sudo apt-get update && sudo apt-get upgrade
Instalación de Git:
sudo apt-get install git
Instalación de Certbot:
sudo git clone https://github.com/certbot/certbot.git
Habilita el módulo SSL de Apache 2:
sudo a2enmod ssl
Para trabajar con Cerbot, el servidor web debe estar detenido.
Servidor Web (NGINX):
sudo /etc/init.d/nginx stop
Servidor Web (Apache 2):
sudo /etc/init.d/apache2 stop
Nota: El siguiente paso solo funciona si un dominio válido (example.de, example.com) redirige a la IP del servidor. Se recomienda un Wildcard A-record para la IP del servidor.
Cuando se detiene el servidor web, debes navegar a la carpeta Certbot descargada. Para solicitar un certificado.
cd ~/certbot
Si estás en el directorio de Certbot, ahora puedes solicitar un certificado.
./certbot-auto certonly --standalone -d example.tld
Certbot ahora debería solicitar automáticamente los paquetes requeridos. En caso contrario, la instalación de los paquetes debe confirmarse con “Y”.
Certbot envía una notificación al correo electrónico especificado cuando caduca un certificado. Dado que cada certificado solo es válido por 3 meses, se enviará un correo electrónico 20 días antes de la fecha de vencimiento.
Después de ingresar una dirección de correo electrónico válida, ahora debes leer y aceptar los términos de uso de Certbot.
Cuando se haya verificado la solicitud de certificado, debería aparecer un mensaje que comience con Congratulations! .
El certificado ya está creado y tiene una validez de 3 meses.
El certificado debe ingresarse en el vHost del sitio web antes de su uso. La instalación varía según el servidor web.
Primero navega hasta el directorio root de los archivos vHost. Ingresa el siguiente comando:
cd /etc/nginx/sites-enabled/
Importante: Se requiere PHP-CGI para los siguientes pasos. Puede encontrar un tutorial para instalar CGI aquí: <LINK TO CGI TUT>
Para crear un vHost debes seguir estos pasos.
sudo nano example_tld.conf
Se inserta lo siguiente en el archivo:
server { listen <IP DEL SERVIDOR>:443 ssl; server_name <domain.tld> *.<domain.tld>; # SSL ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE$ ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:50m; ssl_session_timeout 1h; ssl_stapling on; ssl_stapling_verify on; ssl_certificate /etc/letsencrypt/live/<domain.tld OR subdomain.domain.tld>/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/<domain.tld OR subdomain.domain.tld>/privkey.pem; ssl_client_certificate /etc/letsencrypt/live/<domain.tld OR subdomain.domain.tld>/chain.pem; # CONFIG access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; root <DIRECTORIO>; index index.php; location / { try_files $uri $uri/ @rewrites; } location @rewrites { rewrite ^ /index.php last; } location ~ .php$ { include /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:8888; fastcgi_index index.php; fastcgi_param HTTPS on; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }
Importante: Todos los lugares con < > deben ser reemplazados por datos correctos sin los <>!
Luego, el archivo se guarda y se cierra con CTRL+X Y y Enter.
Primero navega hasta el directorio root de los archivos vHost. Ingresa el siguiente comando:
cd /etc/apache2/sites-available/
Primero se debe crear un archivo vHost.
sudo nano example_tld.conf
Se inserta lo siguiente en el archivo:
<VirtualHost *:443> SSLEngine on SSLCertificateFile /etc/letsencrypt/live/<domain.tld>/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/<domain.tld>/privkey.pem ServerAdmin [email protected] ServerName localhost DocumentRoot /var/www/domain-name/ </VirtualHost>
Importante: Parámetros como ServerName, IP, DocumentRoot y <domain.tld> así como SSLCertificateFile y SSLCertificateKeyFile debe ser reemplazados por registros válidos.
Luego, el archivo se guarda y se cierra con CTRL+X Y y Enter.
Para activar el vHost se debe ejecutar el siguiente comando:
sudo ln -s /etc/apache2/sites-available/<name_vhost.conf /etc/apache2/sites-enabled/
A menudo se desea que solo se pueda acceder a determinadas páginas a través de https://.
Abra el archivo vHost deseado::
sudo nano /etc/nginx/sites-enabled/<vhost>.conf
Inserta la siguiente línea dentro de server { block:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
Todas las conexiones ahora se ejecutan a través de https://.
sudo a2enmod headers
Abra el archivo vHost deseado:
sudo nano /etc/apache2/sites-available/<vhost>.conf
Inserta la siguiente línea dentro del ‘ <VirtualHost *:443> block:
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains;"
Todas las conexiones ahora se ejecutan a través de https://.
El servidor web ahora se puede iniciar de nuevo.
Servidor web (NGINX):
sudo /etc/init.d/nginx start
Servidor web (Apache 2):
sudo /etc/init.d/apache2 start
Ahora se puede acceder al dominio deseado en https://domain.tld/ .
Sumario
Instalación y configuración
Solicitar certificado
- Detén el servidor web
- Solicita un certificado para un subdominio:
- Entrada de correo electrónico para notificaciones de Certbot
= Confirmación de las condiciones de uso
- Se creó el certificado
Implementación del certificado
Implementación con un servidor web NGINX
- Crea un vHost SSL para NGINX
Implementación para un servidor web Apache 2
- Crea un vHost SSL para Apache 2
- Activar el vHost creado
SSL force
Activar HSTS en NGINX
Habilitar HSTS en Apache 2
- Activar módulo de encabezados
- Editando el vHost
Inicie el servidor web