Configuración
Entonces las direcciones IP han cambiado desde la última vez, ya que estoy haciendo esta configuración nuevamente. Aquí están los nuevos IP y nombres de host.
VM/nombre de host | IP público | IP privada | Papel/función |
Proxietre | 68.183.214.151 | 10.135.127.136 | Punto de terminación TLS y servidor proxy inverso |
Web1 | N / A | 10.135.126.102 | Hosting WW1.ranvirslog.comunicarse Sitio web a través del puerto 80 http |
Web2 | N / A | 10.135.126.187 | Alojamiento Segunda Guerra Mundial.ranvirslog.comunicarse Sitio web a través del puerto 80 http |
Los registros DNS se configuran como tales, ambos sitios web (diferentes subdominios) apuntan a la misma IP pública estática. Esta es la dirección IP de nuestro proxy inversa de Nginx:
Un expediente | Valor |
WW1.ranvirslog.comunicarse | 68.183.214.151 |
Segunda Guerra Mundial.ranvirslog.comunicarse | 68.183.214.151 |
Para que nuestro DNS inverso funcione a través de HTTP sin cifrar, creamos dos archivos en /etc /conf.d/ llamado WW1.conf y ww2.Conf cada uno con la siguiente configuración:
/etc/conf.D/WW1.confusión
servidor
Escucha 80;
escuchar [::]: 80;
server_name ww1.ranvirslog.com;
ubicación /
proxy_pass http: // 10.135.126.102/;
proxy_buffering off;
proxy_set_header X-Real-IP $ Remote_addr;
/etc/conf.d/ww2.confusión
servidor
Escucha 80;
escuchar [::]: 80;
server_name ww2.ranvirslog.com;
ubicación /
proxy_pass http: // 10.135.126.187/;
proxy_buffering off;
proxy_set_header X-Real-IP $ Remote_addr;
El sistema operativo que estamos utilizando es Ubuntu 18.04 LTS y tenemos remoto el archivo/etc/nginx/sites-habilitado/predeterminado para que NGINX pueda actuar exclusivamente como un DNS inverso utilizando las configuraciones que se muestran arriba.
Objetivo
Con el DNS inverso (y los sitios web de backend) que ya están en funcionamiento, nuestro objetivo es instalar un solo certificado TLS para ambos FQDNS (eso es WW1.ranvirslog.com y ww2.ranvirslog.com) en nuestro proxy inverso nginx.
El tráfico entre cualquier cliente y el proxy inverso se va a encriptar, pero el tráfico entre el proxy inverso y los servidores de backend no está encriptado. Sin embargo, esta sigue siendo una opción infinitamente más segura que no tener https en absoluto. Para los casos en que el proxy inverso y los diversos servidores web estén en el mismo host, digamos que si está utilizando contenedores Docker para alojar todos en el mismo VPS, incluso este tráfico no entrelazado está contenido en un solo host.
Instalación de CertBot
CERTBOT es un programa de cliente que se ejecutará en nuestro servidor proxy inverso y negociará un certificado TLS con LetsenCrypt. Demostrará a Letsencrypt que el servidor de hecho tiene control de los FQDN que afirma tener control sobre. No nos preocuparemos por cómo lo hace Certbot.
Tradicionalmente, puede usar CERTBOT como un software independiente que solo obtendrá los certificados (que básicamente son solo llaves criptográficas largas) y guardarlo en el servidor. Pero afortunadamente, para la mayoría de los sistemas operativos hay complementos personalizados para NGINX, Apache y otros softwares. Instalaremos el CertBot con el complemento Nginx. Esto configurará automáticamente a Nginx para usar las claves recién obtenidas y deshacerse de reglas inseguras como escuchar HTTP en el puerto 80.
Si está utilizando sistemas basados en Debian, como en mi caso estoy usando Ubuntu 18.04 lts, entonces la instalación es una brisa.
$ sudo apt actualización
$ sudo apt instalación software-propiedades comunes
$ sudo add-apt-repositorio universo
$ sudo add-apt-repository PPA: certbot/certbot
$ sudo apt actualización
$ sudo apto install python-certbot-nginx
Otros sistemas operativos, su Redhat, Gentoo, Fedora pueden seguir las instrucciones oficiales como se enumeran aquí.
Una vez que haya instalado certbot con complemento Nginx Para su combinación de sistema operativo podemos llegar a los negocios.
Obtener certificados TLS
Para obtener el certificado TLS por primera vez, ejecute el siguiente comando:
$ sudo certbot -nginx
Esto se ejecutará a través de una serie de preguntas interactivas, como se muestra a continuación:
Guardar registro de depuración para /var/log/letsencrypt/Letsencrypt.registro
Complementos seleccionados: autenticador nginx, instalador nginx
Ingrese la dirección de correo electrónico (utilizada para avisos de renovación y seguridad de urgencia) (ingrese 'C' para cancelar): [email protected]
Lea los términos de servicio en https: // Letsencrypt.org/Documents/LE-SA-V1.2 de noviembre-15-2017.pdf. Debe acordar para registrarse con el servidor ACME en https: // acme-v02.API.Letsencrypt.org/directorio
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A) Gree/(c) Ancel: A
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
¿Estaría dispuesto a compartir su dirección de correo electrónico con Electronic Frontier Foundation, un socio fundador del Proyecto Let’s Let Cintpt y la organización sin fines de lucro que desarrolla CERTBOT? Nos gustaría enviarle un correo electrónico sobre nuestro trabajo en cifrado de la web, noticias de ef, campañas y formas de apoyar la libertad digital.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y) es/(n) o: y
¿Qué nombres le gustaría activar HTTPS para?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: WW1.ranvirslog.comunicarse
2: WW2.ranvirslog.comunicarse
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Seleccione los números apropiados separados por comas y/o espacios, o deje la entrada en blanco para seleccionar todas las opciones que se muestran (ingrese 'C' para cancelar):
Elija si redirige o no el tráfico HTTP a HTTPS, eliminando el acceso HTTP.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Sin redirección: no realice más cambios en la configuración del servidor web.
2: Redirección: haga que todas las solicitudes redirigan para asegurar el acceso HTTPS. Elija esto para nuevos sitios, o si está seguro de que su sitio funciona en HTTPS. Puede deshacer este cambio editando la configuración de su servidor web.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Seleccione el número apropiado [1-2] y luego [Enter] (presione 'C' para cancelar): 2
Si todo salió bien, le mostrará este mensaje, solo para sus nombres de dominio.
Felicidades! Ha habilitado con éxito https: // ww1.ranvirslog.com y https: // ww2.ranvirslog.com puede visitar los fqdns y notar que los sitios web ahora tienen el letrero del candado que sugiere que todo está encriptado.
Mira los archivos de configuración
Si ve los archivos de configuración que creamos anteriormente, a saber /etc /conf.D/WW1.conf y /etc /conf.d/ww2.Conf, notará que todas las reglas de "escuchar 80" han desaparecido y se han agregado algunas líneas nuevas que le dice al servidor que la comunicación debe estar encriptada y la ubicación de los certificaciones y claves para realizar dicho cifrado.
Recomiendo encarecidamente mirar a través de los archivos de configuración, ya que eso también puede enseñarle cómo instalar correctamente los certs y escribir archivos de configuración.
Renovación de certificación
Los certificados típicos de LetsEnsencrypt son válidos por 90 días y antes de que expiren, necesite renovarlos. Puede usar CertBot para ejecutar primero la renovación, ejecutando el comando:
$ sudo certbot renovar-secado
Si la operación tiene éxito, verá el siguiente mensaje:
Felicitaciones, todas las renovaciones tuvieron éxito. Se han renovado los siguientes certificados:
/etc/letsencrypt/live/ww1.ranvirslog.com/fullchain.PEM (éxito)
** Run en seco: simulando 'certbot renovar' cerca de la cadena de certificación
** (Los certificados de prueba anteriores no se han guardado.)
Ahora puede agregar un trabajo cron que intentará renovar cada semana más o menos. CertBot no renovará los certificados a menos que realmente se encuentren con eso, por lo que no tiene que preocuparse. El comando para la renovación real es:
$ certbot renovar
Agréguelo al trabajo cron de Root usando:
$ sudo crontab -e
En el siguiente mensaje, seleccione su editor favorito (elija Nano si no está seguro) y agregue las siguientes líneas al final del archivo ahora abierto:
…
# Por ejemplo, puede ejecutar una copia de seguridad de todas sus cuentas de usuario
# a las 5 a.M todas las semanas con:
# 0 5 * * 1 tar -zcf/var/backups/home.TGZ /Inicio /
#
# Para obtener más información, consulte las páginas manuales de Crontab (5) y Cron (8)
#
# M H Dom Mon Dow Command
* 2 * * 2 certbot renovar
Esto ejecutará el comando CertBot Renew a las 2 de la mañana en cualquier minuto aleatorio, el segundo día de cada semana.
Si es nuevo en los certificados TLS, experimentar con cosas como HSTS puede ser arriesgado. Dado que estos cambios son irreversibles. Sin embargo, si desea bajar por la madriguera del conejo de la seguridad, puedo recomendar encarecidamente el blog de Troy Hunt, que es una de las principales inspiraciones detrás de este artículo.