

Primero de todo , como de costumbre actualizaremos repostorios ( entrando a SSH ) escribimos el comando:
Código: Seleccionar todo
sudo apt-get update

Instalamos previamente los paquetes GIT ( por si no los tenemos instalados):
Código: Seleccionar todo
sudo apt-get install git

Una vez instalado Git, Ahora vamos a hacer una copia del programa ya previamente configurado con:
Código: Seleccionar todo
git clone https://github.com/letsencrypt/letsencrypt
Código: Seleccionar todo
cd letsencrypt

MUY IMPORTANTE, QUE ESTEMOS EN LA MISMA MÁQUINA QUE HOSPEDA NUESTRA WEB, YA QUE SINO NO TENDREMOS PRIVILEGIOS SUFICIENTES PARA CREAR EL CERTIFICADO.
Debemos parar el servidor primero, para ello pondremos:
Código: Seleccionar todo
sudo service nginx stop
Código: Seleccionar todo
./letsencrypt-auto certonly --standalone --agree-tos --redirect --duplicate --text --email email@fororaspberry.com -d www.fororaspberry.es -d fororaspberry.es --rsa-key-size 4096
Con este comando crearemos un certificado SSL a 4096 bits.
Cuando pongas el comando correspondiente, se actualizara o instalará Pyton:

Cuando este todo instalado, nos saldra lo siguiente, obviamente seleccionamos la opcion
Replace Files in Webroot Directory :
Aceptamos Terminos y servicios de Let's Encrypt pulsando "<Agree >"

En este paso es muy importante que tengamos el servicio Apache DESACTIVADO, si todo está
correcto nos dará el siguiente mensaje:

En la ruta /etc/letsencrypt/live/ tendremos guardado nuestro certificado en otra carpeta "ej: miweb.com"
que luego mas adelante daremos uso, en nuestro caso: /etc/letsencrypt/live/www.fororaspberry.es/
Ahora vamos a configurar el algoritmo Diffie-Hellman para el intercambio de claves, pondremos lo siguiente:
Código: Seleccionar todo
cd /etc/ssl/certs
sudo openssl dhparam -out dhparam.pem 4096

Este proceso puede durar varias horas,asi que mucha paciencia...

Una vez haya finalizado, tendremos el archivo dhparam.pem en la ruta /etc/ssl/certs.
Lo utilizaremos ahora mismo para la configuración de NGINX
-CONFIGURANDO NGINX
Ahora vamos a editar nuestra configuración en /etc/nginx/sites-available/ , tal y como vimos en ESTE TUTORIAL .
Por defecto en:
Código: Seleccionar todo
sudo nano /etc/nginx/sites-available/default
Añadimos los siguientes parámetros:
Código: Seleccionar todo
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
ssl_certificate /etc/letsencrypt/live/www.fororaspberry.es/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.fororaspberry.es/privkey.pem;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA256:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EDH+aRSA+AESGCM:EDH+aRSA+SHA256:EDH+aRSA:EECDH:!aNULL:!eNULL:!MEDIUM:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4:!SEED";
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_session_cache shared:SSL:20m;
ssl_session_timeout 180m;
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}

add_header Strict-Transport-Security = Habilitamos HSTS (HTTP Strict Transport Security)
ssl_certificate = Ruta certificado anteriormente creado,debemos modificar la ruta hacia el archivo correspondiente
ssl_certificate_key = Ruta certificado anteriormente creado,debemos modificar la ruta hacia el archivo correspondiente
ssl_dhparam = Archivo creado a través del algoritmo Diffie-Hellman (ruta defecto /etc/ssl/certs/dhparam.pem )
ssl_prefer_server_ciphers = damos la posibilidad al cliente de cojer otros "Ciphers" compatibles
ssl_ciphers = Ciphers específicos (podemos utilizar otros para compatibilizar con Navegadores Web antiguos)
ssl_protocols = Especificamos las versiones del protocolo SSL (Transport Layer Security)
ssl_session_cache shared:SSL:20m; = Duración de la sesion SSL en cache compartida , recomendado por seguridad.
ssl_session_timeout 180m; = Duración de la sesion SSL (modificable) , recomendado por seguridad.
return 301 https://$server_name$request_uri = Forzamos que se conecte por conexión cifrada HTTPS
Para finalizar la configuracion, abajo de
Código: Seleccionar todo
listen 80;
Código: Seleccionar todo
listen 80;
listen 443 ssl;
Ahora ya hemos terminado de configurar, guardamos los cambios pulsando estas teclas, en este caso (putty ssh)
Control + X
tecleamos Y
ENTER
Y vamos a probar la configuración y aplicarla a Nginx con:
Código: Seleccionar todo
sudo nginx -s reload
Configurar en servidor APACHE

Debemos parar el servidor primero, para ello pondremos:
Código: Seleccionar todo
sudo service apache2 stop
Código: Seleccionar todo
./letsencrypt-auto --apache --agree-tos --redirect --duplicate --text --email email@fororaspberry.com -d www.fororaspberry.es -d fororaspberry.es --rsa-key-size 4096
Con este comando crearemos un certificado SSL a 4096 bits.
Cuando pongas el comando correspondiente, se actualizara o instalará Pyton:

Aceptamos Terminos y servicios de Let's Encrypt pulsando "<Agree >"

En este paso es muy importante que tengamos el servicio Apache DESACTIVADO, si todo está
correcto nos dará el siguiente mensaje:

En la ruta /etc/letsencrypt/live/ tendremos guardado nuestro certificado en otra carpeta "ej: miweb.com"
que luego mas adelante daremos uso, en nuestro caso: /etc/letsencrypt/live/www.fororaspberry.es/
Ahora vamos a configurar el algoritmo Diffie-Hellman para el intercambio de claves, pondremos lo siguiente:
Código: Seleccionar todo
cd /etc/ssl/certs
openssl dhparam -out dhparam.pem 4096

Este proceso puede durar varias horas,asi que mucha paciencia...

Una vez haya finalizado, tendremos el archivo dhparam.pem en la ruta /etc/ssl/certs.
Lo utilizaremos ahora mismo para la configuración de Apache
Para ello vamos a editar el siguiente archivo:
Código: Seleccionar todo
sudo nano /etc/apache2/mods-available/ssl.conf
Código: Seleccionar todo
<IfModule mod_ssl.c>
Código: Seleccionar todo
<IfModule mod_ssl.c>
SSLOpenSSLConfCmd DHParameters "/etc/ssl/certs/dhparam.pem"
Control + X
tecleamos Y
ENTER
Y por último vamos a editar el siguiente archivo con el comando:
Código: Seleccionar todo
sudo nano /etc/apache2/sites-available/default-ssl.conf
¿Que tengo que poner en cada ruta?<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerName fororaspberry.es
ServerAlias http://www.fororaspberry.es
ServerAdmin email@fororaspberry.es
DocumentRoot /var/www/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/www.fororaspberry.es/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.fororaspberry.es/privkey.pem
<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>
Lo que hemos modificado es lo siguiente:
En ServerName , pondremos nuestra web certificada SIN www. y en ServerAlias pondremos nuestra web certificada con las www.
En DocumentRoot , pondemos la ruta por defecto de nuestra Web (ver configuración Apache) por defecto:
Nuestro correo electrónico registrado cuando hemos creado el certificado anteriormenteDocumentRoot /var/www/
Poner la ruta del certificado donde se ha creado nuestro certificado ( siempre esta ubicado en /etc/letsencrypt/live/ )ServerAdmin email@fororaspberry.es
Una vez modificado todos los cambios , Guardamos los cambios pulsando estas teclas, en este caso (putty ssh)SSLCertificateFile /etc/letsencrypt/live/www.fororaspberry.es/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.fororaspberry.es/privkey.pem
Control + X
tecleamos Y
ENTER
Y por último, activamos la configuración SSL con el comando:
Código: Seleccionar todo
sudo a2ensite default-ssl.conf
Código: Seleccionar todo
sudo service apache2 restart

Renovación Automática del Certificado
Simplemente debemos insertar estos dos comandos:
Código: Seleccionar todo
cd letsencrypt
./letsencrypt-auto renew
Espero que os haya ayudado mucho, por favor si os ha gustado y os ha ido bien , escribirme algo no seais vagos!! :P