Usando Permite criptografar SSL para vários servidores Apache com tráfego distribuído

2

Estou tendo alguns problemas para configurar o Vamos criptografar para alguns sites que são configurados em dois servidores diferentes e ter o tráfego distribuído para eles via HAProxy.

Os servidores têm um número VHosts / domains neles, e todos precisarão de certificados SSL. Por causa deste post, digamos que eles são:

  1. foo.some-site.com
  2. bar.some-site.com

Ambos os registros A são configurados com dois endereços IP. Posso verificar com nwtools.com ou apenas nslookup que ambos os registros A foo.some-site.com e bar.some-site.com resolvem os mesmos dois IP endereços. E eu sei que Let's Encrypt requer que o vhost tenha um registro válido usado para que ele possa fazer uma pesquisa.

Eu planejei executar a configuração Lets Encrypt em ambos os servidores para todos os vhosts, e funcionou bem para um deles, mas quando mudei para o segundo, recebi um erro:

[root@server httpd]# /opt/letsencrypt/letsencrypt-auto --apache -d foo.some-site.com
Checking for new version...
Requesting root privileges to run letsencrypt...
   /root/.local/share/letsencrypt/bin/letsencrypt --apache -d foo.some-site.com
Failed authorization procedure. foo.some-site.com (tls-sni-01): urn:acme:error:connection :: The server could not connect to the client to verify the domain :: Failed to connect to host for DVSNI challenge

IMPORTANT NOTES:
 - The following errors were reported by the server:

   Domain: foo.some-site.com
   Type:   connection
   Detail: Failed to connect to host for DVSNI challenge

   To fix these errors, please make sure that your domain name was
   entered correctly and the DNS A record(s) for that domain
   contain(s) the right IP address. Additionally, please check that
   your computer has a publicly routable IP address and that no
   firewalls are preventing the server from communicating with the
   client. If you're using the webroot plugin, you should also verify
   that you are serving files from the webroot path you provided.

Poderia isso ser possível porque está fazendo uma pesquisa ou tentando enrolar foo.some-site.com e pode estar sendo direcionado para o outro servidor? Eu não tenho certeza de como isso realmente importaria, já que ambos têm o mesmo VHost sobre eles, a menos que o LetsEncrypt esteja realmente escutando a conexão que ele mesmo está fazendo ...

O que está me jogando fora é que funcionou para um deles muito bem (digamos bar.some-site.com ), então por que funcionaria para um site, mas falharia em outro com o site? exatamente a mesma configuração?

Se alguém souber de uma maneira de obter a configuração Vamos criptografar para os mesmos vhosts em dois servidores diferentes, a ajuda será muito apreciada!

    
por Justin 25.04.2016 / 23:44

2 respostas

5

Could this possibly be because it's doing a lookup or trying to curl foo.some-site.com, and it may be getting directed to the other server?

Sim, definitivamente.

O LE precisa se conectar ao servidor no qual você está executando o cliente LE, como parte do processo de desafio-resposta de verificação de domínio. Sem entrar em detalhes, o cliente LE disponibiliza temporariamente um determinado arquivo em seu servidor da Web que o servidor LE precisa ser capaz de consumir para verificar a propriedade do domínio.

A execução deste comando em todos os servidores de backend é desnecessária e incômoda. Execute-o uma vez e copie a cadeia de chaves e certificados para o restante dos servidores de backend.

Whats throwing me off is it worked for one of them just fine (say bar.some-site.com), so why would it work for one site, but fail for another one with the exact same setup?

Porque você teve sorte? :) É possível que, por acaso, o seu balanceador de carga tenha direcionado as solicitações LE para o local correto uma vez, mas não o fez na segunda vez.

    
por 25.04.2016 / 23:51
1

Existem várias abordagens para cenários que envolvem vários servidores da Web / de aplicativos / balanceadores de carga. Você pode ler sobre alguns deles no Guia oficial para criptografia de integração para ambientes maiores.

Existem algumas maneiras legais de fazer isso, como:

  • redirecionando todas as solicitações de validação para um único host de validação / conjunto de hosts
  • fazendo todo o gerenciamento de certificados off-line (ou seja, solicitando, renovando e distribuindo chaves de seu host de gerenciamento em vez de em seus servidores da web)

O que faz sentido para você dependerá de suas preferências e de vários requisitos específicos do ambiente.

    
por 15.06.2016 / 02:55