Como Obtener un Certificado SSL Gratis (letsencrypt) Y Configurarlo para Nginx

Asi mismo como dice el titulo, un certificado ssl gratis, ya no tenemos que pagar para que nuestra pagina aparesca como segura sino que podemos obtenerlo gratis gracias al proyecto letsencrypt.

El proyecto letsencrypt es una iniciativa para contrarrestar este sistema / monopolio de los ssl ofreciendo una alternativa gratis, hasta el momento se encuentra en una etapa beta y queda a nuestro criterio usarlo o no. Los certificados generados por este proyecto duran solo 90 dias luego de eso tenemos que generar otro con ellos mismo, pensaran que es poco tiempo pero por que preocuparse «esto es gratis» podemos actualizar sin costo alguno la vigencia de nuestros certificados sin problemas.

Manos a la obra

Debemos tener acceso root a nuestro servidor para poder generar estos certificados

Instalar letsencrypt

Para instalarlo es solo clonar el projecto en Github y este instalara las dependencias que necesite.

$ git clone https://github.com/letsencrypt/letsencrypt
$ cd letsencrypt
$ ./letsencrypt-auto --help

Generar el certificado

Basta solo con ejecutar este comando con los dominios que queremos incluir en nuestro certificado.

Nuestro servidor web debe de estar detenido para poder realizar esto, asi que apague por el momento nginx

./letsencrypt-auto certonly --standalone -d 52.201.240.170 -d www.example.com

Una vez ejecutado esto ya tendremos a mano nuestro certificado en una carpeta llamada /etc/letsencrypt/live/ el cual referenciaremos desde nginx hacia alli.

Instalar el certificado en nginx

Para instalar el certificado que ya generamos solo necesitamos configurar nuestro archivo host .conf de nginx.

    server{
        listen 0.0.0.0:80;
        listen 443 ssl;

        ssl_certificate /etc/letsencrypt/live/52.201.240.170/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/52.201.240.170/privkey.pem;

Una vez realizado esto y obligar todas las peticiones https sean https tenemos que agregar esto a nuestra configuracion de nuestro host

server {
    listen 80;
    server_name hostname;
    return 301 https://$server_name$request_uri;
}

Utilizamos el archivo cert.pem como certificado y en la llave privada privatekey.pem. Reiniciar subir el servicio de nginx y probar. http://54.196.254.224 y a disfrutar del candadito verde.

Recordar que estos certificados vencen cada 90 dias y tenemos que renovarlos, para renovarlos simplemente ejecutar el comando letsencrypt y este creara un nuevo certificado, no tendran que re-configurar nginx por que estos archivos en realidad seran enlaces simbolicos a los archivos de los certificados que se encontraran en /etc/letsencrypt/archive

#Renovar sera solo cuestión de ejecutar este comando 
letsencrypt renew
letsencrypt-auto renew

Referencia

letsencrypt