Uso de Let's Encrypt Certbot para obtener HTTPS en su caja Amazon EC2 NGINX

Let's Encrypt es una nueva autoridad de certificación que proporciona certificados SSL gratuitos (hasta un cierto límite por semana). Salió de la versión beta hace aproximadamente un mes y es compatible con una amplia gama de navegadores.

Certbot es el cliente oficial de Let's Encrypt, desarrollado por Electronic Frontier Foundation. Hace que la obtención e implementación automática de certificados SSL / TLS para su servidor web sea un proceso relativamente sencillo.

Empecemos.

Paso 1

Asegúrese de haber abierto los puertos 80 (HTTP) y 443 (HTTPS) en el grupo de seguridad de su instancia al público. Certbot usará esto para establecer conexiones mientras genera sus certificados.

Tenga en cuenta que dediqué demasiado tiempo a averiguar por qué no podía generar un certificado, mientras que el único problema era que no había abierto el puerto 443 en el grupo de seguridad de mi instancia EC2.

Paso 2

Configure el registro CNAME de su dominio para que apunte al DNS público de su instancia EC2.

Paso 3

Instale Certbot en su instancia. Según su sistema operativo y servidor, puede averiguar cómo instalarlo en la página de inicio de Certbot. Para NGINX en Ubuntu 14.04 , use esto.

wget //dl.eff.org/certbot-auto chmod a+x certbot-auto

Ejecute este comando en su directorio de inicio:

/home/ubtuntu

Etapa 4

Detenga los servidores existentes que se ejecutan en el puerto 80 y 443, ya que Certbot los utiliza para verificar su dominio y generar certificados.

Puede reiniciar esos servidores una vez que haya terminado de generar los certificados.

Paso # 5

Ejecute el siguiente comando para generar certificados para su dominio:

./certbot-auto certonly --standalone -d xyz.yourdomain.com

Puede generar certificados para varios dominios utilizando este enfoque.

Paso # 6

Cambie su configuración de NGINX en /etc/nginx/nginx.conf para habilitar SSL:

http { ## # Logging Settings ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; server { listen 80; server_name xyz.yourdomain.com; location / { # Redirect any http requests to https return 301 //$server_name$request_uri; } } server { listen 443 ssl; server_name xyz.yourdomain.com; ssl_certificate /etc/letsencrypt/live/xyz.yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/xyz.yourdomain.com/privkey.pem; add_header Strict-Transport-Security “max-age=31536000”; location / { proxy_pass //127.0.0.1:3000; } } }

El encabezado Strict-Transport-Security (HSTS) garantiza que cualquier enlace interno que no sea HTTPS se enrutará automáticamente a la versión HTTPS durante una sesión HTTPS.

Paso # 7

Por último, vuelva a cargar su configuración de NGINX:

sudo service nginx reload

¡Felicidades! Su sitio xyz.example.com ahora se ejecuta correctamente en HTTPS.

NOTA : Los certificados Let's Encrypt solo son válidos durante 3 meses después de su emisión. Entonces, cada 3 meses, se requiere una renovación. A continuación, le mostramos cómo puede automatizar esto usando un trabajo cron.

Si esta publicación te ayudó, presiona el botón del corazón a continuación. ? Y si no fue así, por favor deje un comentario para decirme cómo puedo mejorarlo.

PD: Gracias a Narendra N Shetty por corregir y dar sugerencias.

Karan Thakkar es el líder de frontend en Crowdfire, su compañero de marketing súper inteligente . Su artículo ha aparecido anteriormente en The Huffington Post. Le gusta probar nuevas tecnologías en su tiempo libre y ha creado Tweetify (usando React Native) y Show My PR's (usando Golang).

Otros artículos escritos por él:

Cómo crecí de 300 a 5000 seguidores en solo 3 semanas

#GrowthHacking mi cuenta de Twitter para @Crowdfire Twitter Premier League blog.markgrowth.com Una guía ilustrada para configurar su sitio web usando Github y Cloudflare

Fácil de configurar, implementación instantánea, HTTPS gratuito, soporte HTTP2 / SPDY, redireccionamiento personalizado, caducidad de la caché del navegador, HTTP seguro ... medium.freecodecamp.org