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