Configurar Let's Encrypt com vários domínios / redirecionamentos

Acabei de atualizar isto, pois a versão antiga já não funcionava. Testei em dois sites, por isso acho que deve estar bom.

3 curtidas

EDIT: Encontrei uma solução, ignore tudo abaixo, mas deixarei aqui para futuras referências. Deixarei a solução no final.

Acabei de encontrar este tópico. Então, meu site é: forums.mysite.me. Tenho 3 domínios na minha configuração NGINX e no meu provedor de domínio que estou usando DNS CNAME’s para que estão retornando como inseguros:

mysite.me
www.mysite.me
forum.mysite.me (sem o "s" se alguém errar a digitação ou adivinhar o URL)

Eu uso meu domínio base na configuração que está na postagem original? Ou como eu configuro para os 3?

after_ssl:
   # diga ao letsencrypt quais certificados adicionais obter
    - 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"

Estou confuso porque a primeira seção “replace” tem um from: /--keylength/ e a de baixo tem from: /--fullchainpath/. Então, eu crio 2 entradas como essas para cada um desses 3 URLs que listei ou?.. Ou seria isso?

after_ssl:
   # diga ao letsencrypt quais certificados adicionais obter
    - 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"

^ Sim, a caixa acima aqui foi a solução para múltiplos sites/LetsEncrypt. Tão animado.

1 curtida

Sim. Existem duas substituições diferentes no arquivo que precisam ser atualizadas com os nomes de host.

Não foi isso que a postagem no topo lhe deu quando você inseriu os nomes conforme descrito?

Como podemos editar o OP para que não seja confuso?

1 curtida

Pessoalmente, eu diria para mover isso para cima da caixa de entrada, para que você veja enquanto digita.

A postagem deu isso, sim, mas eu não entendi porque

Por que a seção “se você precisar adicionar vários domínios” que citei não responde a isso?

1 curtida

OK. Que tal isto:

e depois do código a ser copiado, continua:

Isso faz sentido?

1 curtida

Acho que é mais fácil colocar o código real com vários sites como o exemplo que usei acima:

after_ssl:
   # diga ao letsencrypt quais certificados adicionais obter
    - 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"

Eu acho que a maioria das pessoas vai querer adicionar apenas um domínio extra, então meu método é mais fácil e fornece uma maneira simples de obter o texto exato que você precisa sem ter que fazer nenhuma edição.

Talvez ainda esteja claro que, se o seu site for discourse.y.com e você quiser certificados para discourse.y.com e y.com, você só precisa inserir y.com no campo “domain2” e clicar no ícone de cópia?

No seu exemplo, se você configurou seu Discourse para ser mysite.com, você não precisa da parte -d mysite.me no seu exemplo (ou se o seu site for www.mysite.me, você só precisa da parte -d mysite.me).

4 curtidas

em qual arquivo este código está sendo adicionado, por favor?

1 curtida

O código deve ser adicionado perto do final do seu arquivo app.yml, na seção hooks:

3 curtidas

18 posts foram divididos em um novo tópico: Let’s Encrypte com múltiplos domínios não estava funcionando para certificados ECC

Preciso ainda das outras duas substituições de trecho de código ou este novo trecho de código é tudo que preciso?

Adicionei e recompiliei, mas ainda recebo um erro de privacidade SSL ao acessar um dos domínios https que desejo redirecionar.

Ao olhar o certificado, seu nome comum é forum.domain.com, com O e OU não fazendo parte do certificado.
Estou tentando redirecionar https://domain.com e https://www.domain.com para https://forum.domain.com.

Ao usar http://domain.com e http://www.domain.com, ele redireciona corretamente para https://forum.domain.com.

O que você inseriu? Como fica sua seção after_ssl?

Parece com isto (Alterado o nome de domínio 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

Também adicionei isto

LETSENCRYPT_ALTERNATE_NAMES: mydomain.com,www.mydomain.com

O erro do navegador é
net::ERR_CERT_COMMON_NAME_INVALID

Todos os nomes resolvem? Eles não têm Cloudflare na frente deles? Você atingiu limites de taxa? Você pode olhar no container e executar /etc/runit/1.d/letsencrypt para ver o que acontece

Todos os nomes são resolvidos, sem Cloudflare, as taxas de acerto devem ficar boas.

Aqui está o resultado da execução do letsencrypt;

(Nome de domínio substituído)

/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

Eu olhei dentro do arquivo, aqui está um interessante

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 um espaço entre o último domínio e --keylength?

domain.com--keylength

Corrigir isso resolveu o problema, obrigado pela ajuda

Presumo que a correção deva ser adicionar / ao campo to: também?

  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

Deveriam ser aspas, não barras. Editei sua postagem e a do OP. O que você tem agora deve funcionar.