Consultor SEO

Experto en Wordpress y con conocimientos amplios sobre SEO y analítica web en general y Google analytics en particular

  • SEO
  • Analytics
  • Hosting
  • WordPress
  • Joomla
  • Blogger
  • Contacto
Home » Hosting » Como montar HTTPS con Varnish + Hitch y Lets Encrypt

Como montar HTTPS con Varnish + Hitch y Lets Encrypt

6 febrero, 2017 by Sirius Dejar un comentario

Bueno, después del post anterior sobre Digital Ocean, y contar algunas bondades de montar un servidor virtual, y la diferencia de coste y prestaciones en comparación a un servidor físico. Hoy voy a explicar un poco el proceso de usar HTTPS, teníendo un «pequeño» servidor cloud montado en Digital Ocean.

Prer-requisitos

  • Servidor con alguna distro de linux (Ubuntu o CentOS7). Para probar puedes montar uno en 5 minutos en Digital Ocean, yo para probar montaría el de menor precio (5$/mes).
  • por supuesto tener un dominio que vamos a mover de http a https

Qué es cada una de las cosas que forman esta solución

Varnish: es un sistema cache que sirve para acelerar el funcionamiento de aplicaciones web, también conocido como caché de proxy HTTP inversa.

Bueno no voy a mencionar lo que Google «aprecia» que tu web se abra rápido y proporcionar una buena experiencia al usuario ya sea en entorno de escritorio o móvil.

Hitch: es una librería/desarrollo de alto rendimiento de SSL/TLS proxy. En resumidas cuentas, es la pieza que le hace a Varnish dar soporte terminaciones SSL/TLS (manejar peticiones HTTPS)

Lets Encrypt: Es una iniciativa «sin ánimo de lucro» para permitir la obtención de certificados sin coste. Según sus propias palabras son «una nueva autoridad de certificación: es gratuita, automatizada y abierta»

Acemtool: herramienta amigable, para facilitar el proceso de adquisición/renovación de certificados

Manos a la obra

Tabla de contenidos

    • 0.1 Manos a la obra
  • 1 #1 – Instalar Hitch y Varnish
  • 2 #2 – Configurar Varnish
  • 3 #3 – Instalar Acmetool
    • 3.1 Ubuntu Xenial
    • 3.2 CentOS7 / Red Hat EL7
  • 4 #4 – Adquirir/generar el certificado
  • 5 #5 – Configurar Hitch
  • 6 Conclusión

#1 – Instalar Hitch y Varnish

sudo apt-get update
sudo apt-get install hitch varnish

sudo yum install epel-release
sudo rpm –nosignature -i https://repo.varnish-cache.org/redhat/varnish-4.1.el7.rpm
sudo yum install hitch varnish

#2 – Configurar Varnish

Creamos el ficheroinclude «/etc/varnish/acmetool.vcl»;

En él vamos a meter el siguiente código que luego lo incluiríamos en el VCL principal de Varnish

# Reenviar peticiones a acmetool, que está a la escucha en el puerto 402
# esto sirve para servir las peticiones de lets encrypt
backend acmetool {
.host = «127.0.0.1»;
.port = «402»;
}
sub vcl_recv {
if (req.url ~ «^/.well-known/acme-challenge/») {
set req.backend_hint = acmetool;
return(pass);
}
}

Tenemos que añadir esto último en nuestro fichero de configuración (VCL) de Varnish /etc/varnish/default.vcl

include «/etc/varnish/acmetool.vcl»;

Usando Ubuntu abrir el fichero /lib/systemd/system/varnish.service y añadir en la línea de ExecStart lo siguiente:

-a ‘[::1]:6086,PROXY’

Ahora nesitamos actualizar el systemd ejecutando

sudo systemctl daemon-reload

#3 – Instalar Acmetool

vamos a ver la forma de instalarlo bajo Ubuntu Xenial y CentOS7

Ubuntu Xenial

Bajo Ubuntu el paquete de Acmetool está publicado en PPA, así que tendremos que añadir ese paquete y luego instalar:

sudo add-apt-repository ppa:hlandau/rhea
sudo apt-get update
sudo apt-get install acmetool

CentOS7 / Red Hat EL7

Primero hay que añadir el repositorio y luego instalar:

sudo wget –quiet -O /etc/yum.repos.d/hlandau-acmetool-epel-7.repo ‘https://copr.fedorainfracloud.org/coprs/hlandau/acmetool/repo/epel-7/hlandau-acmetool-epel-7.repo’
sudo yum install acmetool

#4 – Adquirir/generar el certificado

Usaremos Acmetool Para generar el certificado.

Usaremos el proceso de la configuración «express» o quickstart de Acmetool.

Acmetool detectará automáticamente que estamos usando Hitch, así que arrancará el proceso de generación de certificado en modo compatible con Hitch.

sudo acmetool quickstart

Hay que ir contestando las diferentes preguntas que van apareciendo en el wizard o proceso de certificación. Y el punto importante de meter el email donde te irán llegando las notificaciones por parte de Letsencrypt (por ejemplo si se va a caducar algún certificado).

————————- Select ACME Server ———————–
1) Let’s Encrypt (Live) – I want live certificates

—————– Select Challenge Conveyance Method —————
2) PROXY – I’ll proxy challenge requests to an HTTP server

Review and (hopefully) accept the letsencrypt.org Terms of Service, and enter your email address.

——————– Install HAProxy/Hitch hooks? ——————
Yes) Do you want to install the HAProxy/Hitch notification hook?

——————– Install auto-renewal cronjob? —————–
Yes) Would you like to install a cronjob to renew certificates automatically? This is recommended.

Bueno, aquí hay un punto importante. Antes de continuar, necesitamos generar el fichero de Diffie-Hellman group (aka dhparams). Y recalco, este punto es muy importante, ya que con ello, podemos evitar una de las vulnerabilidades que surgió hace algún tiempo con Openssl.

sudo openssl dhparam -out /var/lib/acme/conf/dhparams 2048

Ahora ya podemos obtener el certificado:

sudo acmetool want nuestra-web.com

#5 – Configurar Hitch

Llegados a este paso, ya deberíamos tener un certificado válido, y ya podemos configurarlo en en Hitch.

Antes habíamos configurado Varnish para escuchar en un puerto adicional (6086), este es el puerto que aceptará las peticiones que le van llegando utilizando el protocolo PROXY.

Vamos a editar el fichero /etc/hitch/hitch.conf y copiar en él el siguiente fragmento:

## Basic hitch config for use with Varnish and Acmetool
# Listening
frontend = «[*]:443»
ciphers  = «EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH»

# Send traffic to the Varnish backend using the PROXY protocol
backend        = «[::1]:6086»
write-proxy-v2 = on

# If you run Varnish 4.0 use this instead
#backend        = «[::1]:6081»
#write-proxy-v2 = off

# List of PEM files, each with key, certificates and dhparams
pem-file = «/var/lib/acme/live/nuestra-web.com/haproxy»

# Set uid/gid after binding a socket
# Descomentar estas 2 líneas si estamos en un CentOS/RHEL
#user = «hitch»
#group = «hitch»

Ahora iniciamos Hitch con la nueva configuración:

sudo service hitch start

Conclusión

Con esto ya tendremos configurado nuestro servidor con la stack TLS, y accesible desde el navegador vía https:// gracias al certificado gratuito obtenido de Let’s Encrypt.

A partir de este momento, ya quedaría afinar la configuración de Varnish, dependiendo de nuestra necesidad.

En la siguiente imagen se puede ver (a grandes rasgos) de forma gráfica cómo sería el funcionamiento de este montaje.

Repito, a grandes rasgos, ya que la configuración de los puertos puede dierir de un montaje a otro y dependiendo del número de doplets que intervienen en el montaje.

Varnish y Hitch para usar HTTPS

Bueno, cualquier duda o aporte estaré encantado de incluirlo.

Este artículo ha sido basado en https://info.varnish-software.com/blog/five-steps-to-secure-varnish-with-hitch-and-lets-encrypt

Valora el artículo
1 Star2 Stars3 Stars4 Stars5 Stars (2 votos, promedio: 4,50 de 5)
Cargando...

Archivado en:Hosting Etiquetado con:varnish

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Analítica Web

Presupuesto MKO

Hosting

  • Directadmin
  • Nginx
  • Varnish

Destacados

  • Arrays multidimensionales en PHP
  • Chuleta CSS
  • Biblia de la optimización de WordPress

Me puedes encontrar en

  • GitHub
  • LinkedIn
  • Twitter
Alojo la web en Digital Ocean
y uso
plantilla de Studiopress

Copyright © 2021 · News Pro Theme on Genesis Framework · WordPress · Iniciar sesión