HTTPs en dokku con Let's Encrypt

Mediante dokku podemos poner aplicaciones en producción con mucha comodidad, sin embargo, es deseable servir nuestras aplicaciones mediante "https" en lugar "http" como hace dokku por omisión.

La razón principal para utilizar https es que realiza un cifrado de datos entre cliente y servidor, e incorpora un mecanismo de autenticación de identidad de nuestra aplicación. Sin embargo también existe una razón mucho mas visible para nuestros usuarios: los navegadores web están desalentando el uso de http en favor de https, con mensajes que pueden alarmar a más de un usuario.

Por ejemplo, las versiones modernas de Chrome y Firefox comenzaron a mostrar el texto "No seguro" junto a dirección de cualquier sitio sobre http:

Let's Encrypt y dokku

Para conseguir que nuestra aplicación se pueda acceder por "https" necesitamos un certificado SSL de una autoridad de certificados (CA).

Naturalmente existen varias formas de proceder aquí, pero me gustaría mencionar la manera mas sencilla y automatizada de implementarlo.

Existe una CA llamada https://letsencrypt.org/, que es gratuita, abierta e incluso muy fácil de implementar desde dokku.

El primer paso es instalar este complemento de dokku directamente sobre tu VPS:

dokku plugin:install https://github.com/dokku/dokku-letsencrypt.git  

Luego, tenemos que definir una variable de entorno en la configuración de tu aplicación llamada DOKKU_LETSENCRYPT_EMAIL con tu dirección de correo electrónico:

dokku config:set --no-restart mi_aplicacion DOKKU_LETSENCRYPT_EMAIL=mi_correo@gmail.com  

y por último, activar el certificado en tu aplicación y automatizar la renovación (que de otra manera tendrías que hacerla cada 90 días):

dokku letsencrypt mi_aplicacion  
dokku letsencrypt:cron-job --add  

Con ejecutar estos comandos el complemento de dokku realiza varias tareas, podes ver un detalle completo de su funcionamiento en la documentación de esta web: https://letsencrypt.org/how-it-works/

Y por último, quienes ingresen a tu sitio con una dirección "http" serán dirigidos automáticamente a la versión "https", certificada por Let's Encrypt:

¡Y eso es todo!