Configuración de LetsEncrypt SSL para dominios / subdominios en dos servidores

6

Los certificados LetsEncrypt se han creado para example.com y www.example.com . Este es un servidor Linux en IP 123.123.123.1 .

Me gustaría agregar foo.example.com y bar.example.com , pero estos subdominios están configurados a 123.123.123.2 (servidor MS2012, IP configuradas en los registros DNS).

Necesito los certificados SSL para poder transferir datos sin lanzar errores de navegador. Aparentemente, los certificados creados en el servidor 123.123.123.1 solo deben copiarse a 123.123.123.2 .

El problema es que usando

sudo certbot --apache --cert-name example.com -d example.com,www.example.com,foo.example.com,bar.example.com

para agregar los subdominios, recibo un error no autorizado y 404.

¿Cómo puedo agregar subdominios al certificado, siempre que estén en otro servidor (al que tengo acceso)?

    
pregunta Fid 11.06.2018 - 15:49
fuente

3 respuestas

1

Suponiendo que tenga ssh aacess para el servidor donde se alojan foo.example.com y bar.example.com, simplemente ejecute el comando certbot solo con los dos dominios anteriores, y debería funcionar sin errores y advertencias del navegador. Para que certbot pueda generar certificados, debe ejecutarse en el mismo servidor donde se alojan los dominios.

    
respondido por el 1lastBr3ath 11.06.2018 - 16:58
fuente
0

Terminé usando

certbot certonly --manual --cert-name example.com --preferred-challenge dns -d example.com,www.example.com,x.example.com,y.example.com,z.example.com --agree-tos --manual-public-ip-logging-ok --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory

También es importante esperar hasta que los registros de DNS se propaguen en la web o, en mi caso (estar en la misma red), esperar 5 minutos hasta que la configuración de DNS tenga efecto.

    
respondido por el Fid 12.06.2018 - 16:43
fuente
0

He estado haciendo esto durante más de un año con algunos scripts de una caja de Linux a otra. Permítame describir qué estoy haciendo, ya que no podré compartir los scripts. Además, está utilizando Windows en un extremo, por lo que algunos scripts de shell serían bastante inútiles.

El cliente certbot usa un URI conocido denominado /.well-known para colocar el archivo de token utilizado para la validación del dominio automatizado a través de HTTP (mediante el uso de webroot authenticator / plugin).

Ahora, lo que hice para esos pocos dominios ubicados en su caso 123.123.123.2, fue habilitar HTTP (es decir, el puerto 80) en 123.123.123.1 y configurar los hosts virtuales para foo.example.com y bar.example.com respectivamente.

Ese host virtual se configuró (en Nginx) para apuntar a una ubicación física para URI /.well-known para que certbot pudiera colocar el archivo de token en esa ruta:

location /.well-known/ {
    alias /your/path/.well-known/;
    autoindex on;
    try_files $uri $uri/ =404;
    limit_except GET {
        deny  all;
    }
}

De esta manera puedo usar el autenticador webroot de certbot y apuntar a la raíz web de dicho "dominio falso" (es falso porque es un host virtual en 123.123.123.1 mientras que las entradas de DNS para ese dominio apuntan a 123.123.123.2).

Ahora no es donde termina, pero es el primer paso.

En la otra máquina donde el DNS en realidad apunta a que instalé rinetd para que apunte a 123.123.123.1 (la máquina que ejecuta certbot) en el puerto 80. En /etc/rinetd.conf , esto se ve así:

127.0.0.1       8080      123.123.123.1  80

Al mismo tiempo, todas las solicitudes a /.well-known para los sitios foo.example.com y bar.example.com en 123.123.123.2 se procesan de forma silenciosa en el puerto 80.0.0.1, mientras se dejan los parámetros HTTP (el nombre de host y el URI están intactos). / p>

Al utilizar estos métodos, certbot (ejecutándose en .1), por ejemplo, creará un archivo de token /your/path/.well-known/foobar y Letsencrypt intentará acceder a http://foo.example.com/.well-known/foobar . Dicha solicitud terminará, como es habitual, en la máquina a la que apuntan los registros DNS. Entonces termina en .2 donde el servidor HTTP está configurado para reenviar silenciosamente las solicitudes de elementos debajo del URI /.well-known al puerto 8080.0.0.1 8080, que rinetd usa para reenviar los paquetes al puerto 80.123.123.1. De este modo, cierre el círculo y certbot podrá realizar su rutina de validación de dominio.

Desafortunadamente, estoy ejecutando esto en Linux, por lo que con su configuración aparentemente siendo un servidor de Windows, tendrá que encontrar (o crear) algo como rinetd para Windows. Aunque esto no ayude directamente, quizás ayude a otra persona que tenga un problema similar con dos cajas de Linux.

La rutina rinetd está dirigida a mantener intactos los encabezados HTTP de 123.123.123.1, de modo que el host virtual para ese dominio tenga efecto en 123.123.123.1.

Al utilizar esta rutina, uno de mis servidores realiza la renovación de una serie de otras máquinas que en realidad albergan subdominios individuales.

Ah y en otra nota. Tu escenario es solo muy explícito. Si desea ejecutar XMPP o un MTA y la búsqueda del servicio no está estrictamente vinculada solo a la búsqueda de DNS de los registros A / AAAA o CNAME, terminará en una situación que técnicamente es lo mismo que el tuyo.

Si alguien tiene una idea más inteligente sobre cómo resolver esto, envíeme un grito en los comentarios a esta respuesta.

    
respondido por el 0xC0000022L 11.08.2018 - 22:52
fuente

Lea otras preguntas en las etiquetas