Variádico

Usar Let’s Encrypt con servidores Go

4 de junio de 2016

Este fin de semana, estuve investigando cómo habilitar HTTPS para mi sitio personal. Ya tengo rato que escuché sobre Let’s Encrypt, pero por fin tengo tiempo para jugar con eso. La arquitectura de mi sitio es muy sencilla: solo tengo un servidor Go y ya. No uso proxy inversa ni nada así. El servidor lo tengo en Ubuntu 16.04. ¡Pude habilitar HTTPS para mi sitio en menos de media hora! 😱 Quizá hasta más rápido si no hubiera escrito esta publicación.

Instalar herramienta letsencrypt

La instalación es facilísima.

sudo apt-get install letsencrypt

Puedes ver otras maneras de instalar letsencrypt en la página de certbot.

Generar certificados

Generar un certificado también es fácil. Simplemente usa este comando.

letsencrypt certonly

O, si no quieres usar un correo, usa esto.

letsencrypt certonly --register-unsafely-without-email

Aunque no se recomienda registrar sin correo… tú sabrás.

letsencrypt te indicará que introduzcas el nombre de dominio del sitio que quieras registrar. Y ya. Al final, la apli te dirá la fecha de caducidad y tus certificados deberían estar en /etc/letsencrypt/live/.

Renovar certificado

Al final de letsencrypt certonly, la apli mostró la fecha de caducidad. Los certificados nada más funcionan por 90 días. Después de ese tiempo, tendrás que renovar el certificado. Puedes usar este comando para hacer eso.

letsencrypt renew

Probablemente deberías de automatizar este paso… Si no, tu sitio se va a quebrar en 90 días.

Usar TLS en Go

Para usar los certificados en Go, simplemente crea un servidor de esta manera.

// Declara tus handlers como normal...
http.HandleFunc("/", inicio)
// ...

// ¡Arranca un servidor con TLS!
http.ListenAndServeTLS(
	":443",
	"/etc/letsencrypt/live/tusitio.com/fullchain.pem",
	"/etc/letsencrypt/live/tusitio.com/privkey.pem",
	nil,
)

Así de fácil tienes un servidor TLS. No tienes que cambiar más. Chido, wey. 😎

Muy largo; no leí

Instala letsencrypt para generar certificados TLS para tu sitio.

sudo apt-get install letsencrypt
letsencrypt certonly

Usa HTTPS en Go así.

http.ListenAndServeTLS(
    ":443",
    "/etc/letsencrypt/live/tusitio.com/fullchain.pem",
    "/etc/letsencrypt/live/tusitio.com/privkey.pem",
    nil,
)