Instalación de Let's encrypt en Amazon Linux + NGINX

Let's encrypt tiene soporte experimental para Amazon Linux y por eso puede dar algunos problemas, he escrito esta guía para quien quiera intentarlo.

Está guía está basada en la escrita en coderwall.com.

Asunciones

  • Ya tiene una instancia de amazon con Amazon Linux
  • Tiene acceso a la máquina via ssh
  • Ya tiene instalado nginx

Instalación de cerbot

$ curl -O https://dl.eff.org/certbot-auto

$ chmod +x certbot-auto

$ sudo mv certbot-auto /usr/local/bin/certbot-auto

Ejecute cerbot

Antes de ejecutarlo debemos hacer un cambio en el archivo /usr/local/bin/certbot-auto ya que un par de líneas generan incompatibilidad con la versión de pip que tiene amazon linux.

Cambie su usuario a root con 

$ sudo su -

Abra el archivo /usr/local/bin/certbot-auto y en las líneas 1001 y 1003 asegúrese de agregar el parámetro --no-download, de la siguiente forma

     virtualenv --no-site-packages --no-download --python "$LE_PYTHON" "$VENV_PATH"

      else

    virtualenv --no-site-packages --no-download --python "$LE_PYTHON" "$VENV_PATH" > /dev/null

 

Una vez hecho, siguiendo como root ya puede ejecutar el siguiente comando 

$ certbot-auto --debug

 

En el proceso le hará una serie de preguntas como

  • Correo a registrar
  • Acepta los términos y condiciones
  • Quiere que su correo se comparta 

Responda las preguntas y avance, después identificará los dominios en nginx y preguntará que si quiere generar los certificados, si así, acepte y espere a que se generen, por último intentará modificar el archivo de nginz para agregar los certificados, si no lo lográ lo sabrá y deberá hacerlo manualmente.

Si debe hacerlo manualmente, agregue las líneas de la siguiente forma

        listen       443 ssl;

        listen       [::]:443 ssl;

        server_name example.com;

        ssl_certificate "/etc/letsencrypt/live/example.com/fullchain.pem";

        ssl_certificate_key "/etc/letsencrypt/live/example.com/privkey.pem";

        # It is *strongly* recommended to generate unique DH parameters

        # Generate them with: openssl dhparam -out /etc/pki/nginx/dhparams.pem 2048

        #ssl_dhparam "/etc/pki/nginx/dhparams.pem";

        ssl_session_cache shared:SSL:1m;

        ssl_session_timeout  10m;

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;>

        ssl_ciphers HIGH:SEED:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!RSAPSK:!aDH:!aECDH:!EDH-DSS-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA:!SRP;

        ssl_prefer_server_ciphers on;

 

Reinicie nginx y pruebe el nuevo certificado desde el navegador

$ /etc/init.d/nginx restart