Configurar Let's Encrypt con múltiples dominios / redireccionamientos

Acabo de actualizar esto ya que la versión anterior ya no funcionaba. Lo probé en dos sitios, así que creo que debería estar bien.

3 Me gusta

EDITAR: Encontré una solución, ignora todo lo siguiente, pero lo dejo aquí para futuras personas. Dejo la solución al final.

Me acabo de encontrar con este hilo. Entonces, mi sitio es: forums.mysite.me. Tengo 3 dominios en mi configuración de NGINX y en mi proveedor de dominios que estoy usando DNS CNAME’s para que regresan como inseguros:

mysite.me
www.mysite.me
forum.mysite.me (sin la "s" si alguien escribe mal o adivina la URL)

¿Uso mi dominio base en la configuración que está en la publicación original? ¿O cómo lo configuro para los 3?

after_ssl:
   # dile a letsencrypt qué certificados adicionales obtener
    - replace:
        filename: "/etc/runit/1.d/letsencrypt"
        from: /--keylength/
        to: "-d forums.mysite.me --keylength"
    - replace:
        filename: "/etc/runit/1.d/letsencrypt"
        from: /--fullchainpath/
        to: "-d forums.mysite.me  --fullchainpath"

Estoy confundido porque la primera sección “replace” tiene un from: /--keylength/ y la que está debajo tiene from: /--fullchainpath/. Entonces, ¿hago 2 entradas como esa para cada una de esas 3 URL que listé o?.. ¿O sería esto?

after_ssl:
   # dile a letsencrypt qué certificados adicionales obtener
    - replace:
        filename: "/etc/runit/1.d/letsencrypt"
        from: /--keylength/
        to: "-d mysite.me -d www.mysite.me -d forum.mysite.me --keylength"
    - replace:
        filename: "/etc/runit/1.d/letsencrypt"
        from: /--fullchainpath/
        to: "-d mysite.me -d www.mysite.me -d forum.mysite.me  --fullchainpath"

^ Sí, el cuadro de arriba justo aquí fue la solución para múltiples sitios/LetsEncrypt. Muy emocionado.

1 me gusta

Sí. Hay dos reemplazos diferentes en el archivo que deben actualizarse con los nombres de host.

¿No es eso lo que te dio la publicación de arriba cuando ingresaste los nombres como se describe?

¿Cómo podemos editar el OP para que no sea confuso?

1 me gusta

Personalmente, diría que lo muevas encima del cuadro de entrada, para que lo veas mientras escribes.

La publicación dio eso, sí, pero no lo entendí porque

¿Por qué la sección “si necesita agregar varios dominios” que cito no responde a eso?

1 me gusta

OK. ¿Qué tal esto:

y luego después del código a copiar, continúa:

¿Tiene sentido?

1 me gusta

Creo que es más fácil poner el código real con varios sitios como el ejemplo que usé anteriormente:

after_ssl:
   # tell letsencrypt what additional certs to get
    - replace:
        filename: "/etc/runit/1.d/letsencrypt"
        from: /--keylength/
        to: "-d mysite.me -d www.mysite.me --keylength"
    - replace:
        filename: "/etc/runit/1.d/letsencrypt"
        from: /--fullchainpath/
        to: "-d mysite.me -d www.mysite.me --fullchainpath"

Creo que la mayoría de la gente querrá añadir solo un dominio extra, así que mi forma es más fácil y proporciona una manera sencilla de obtener el texto exacto que necesitas sin tener que hacerle ninguna edición.

¿Quizás todavía está claro que si tu sitio es discourse.y.com y quieres certificados para discourse.y.com y y.com, solo necesitas introducir y.com en el campo “domain2” y hacer clic en el icono de copiar?

En tu ejemplo, si has configurado tu Discourse como mysite.com, no necesitas la parte -d mysite.me en tu ejemplo (o si tu sitio es www.mysite.me, solo necesitas la parte -d mysite.me).

4 Me gusta

¿En qué archivo se está agregando este código?

1 me gusta

El código debe agregarse casi al final de su archivo app.yml, en la sección hooks:

3 Me gusta

18 publicaciones se dividieron en un nuevo tema: Let’s Encrypt con múltiples dominios no funcionaba para certificados ECC

¿Todavía necesito los otros dos reemplazos de fragmentos de código o este nuevo fragmento de código es todo lo que necesito?

Lo agregué y recompilé, pero todavía obtengo un error de privacidad SSL al ir a uno de los dominios https que quiero redirigir.

Al mirar el certificado, su nombre común es forum.domain.com, y O y OU no forman parte del certificado.
Estoy intentando redirigir https://domain.com y https://www.domain.com a https://forum.domain.com.

Cuando uso http://domain.com y http://www.domain.com, se redirige correctamente a https://forum.domain.com.

¿Qué insertaste? ¿Cómo se ve tu stanza after_ssl?

Parece esto (cambié el nombre de dominio real)

  after_ssl:
    - replace:
        filename: /etc/runit/1.d/letsencrypt
        from: /-d forum.mydomain.com /
        to: -d forum.mydomain.com -d www.mydomain.com -d mydomain.com
        global: true

También añadí esto

LETSENCRYPT_ALTERNATE_NAMES: mydomain.com,www.mydomain.com

El error del navegador es
net::ERR_CERT_COMMON_NAME_INVALID

¿Se resuelven todos los nombres? ¿No tienen Cloudflare delante de ellos? ¿Has alcanzado los límites de velocidad? Puedes mirar en el contenedor y ejecutar /etc/runit/1.d/letsencrypt y ver qué sucede

Todos los nombres se resuelven, no hay Cloudflare, los índices de aciertos deberían estar bien.

Aquí está el resultado de ejecutar letsencrypt;

(Nombre de dominio reemplazado)

/var/www/discourse# /etc/runit/1.d/letsencrypt
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
[Tue Apr 29 04:02:13 PM UTC 2025] Unknown parameter : 4096
[Tue Apr 29 04:02:13 PM UTC 2025] Installing key to: /shared/ssl/forum.domain.com.key
[Tue Apr 29 04:02:13 PM UTC 2025] Installing full chain to: /shared/ssl/forum.domain.com.cer
[Tue Apr 29 04:02:13 PM UTC 2025] Run reload cmd: sv reload nginx
ok: run: nginx: (pid 429) 10662s
[Tue Apr 29 04:02:13 PM UTC 2025] Reload success
[Tue Apr 29 04:02:13 PM UTC 2025] Unknown parameter : ec-256
[Tue Apr 29 04:02:14 PM UTC 2025] Installing key to: /shared/ssl/forum.domain.com_ecc.key
[Tue Apr 29 04:02:14 PM UTC 2025] Installing full chain to: /shared/ssl/forum.domain.com_ecc.cer
[Tue Apr 29 04:02:14 PM UTC 2025] Run reload cmd: sv reload nginx
ok: run: nginx: (pid 429) 10663s
[Tue Apr 29 04:02:14 PM UTC 2025] Reload success

Miré dentro del archivo, aquí hay uno interesante

issue_cert() {
  LE_WORKING_DIR="${LETSENCRYPT_DIR}" /shared/letsencrypt/acme.sh --issue $2 -d forum.domain.com -d www.domain.com -d domain.com--keylength $1 -w /var/www/discourse/public
}

¿Parece que falta un espacio entre el último dominio y --keylength?

domain.com--keylength

Solucionar eso resolvió el problema, gracias por la ayuda.

¿Supongo que la solución debería ser agregar también / al campo to?

  after_ssl:
    - replace:
        filename: /etc/runit/1.d/letsencrypt
        from: /-d forum.domain.com /
        to: "-d forum.domain.com -d www.domain.com "
        global: true

Deberían ser comillas, no barras. He editado tu publicación y la del OP. Lo que tienes ahora debería funcionar.