Visão geral #
Let's Encrypt é uma autoridade de certificação aberta e automatizada que usa o ACME (Ambiente de Gerenciamento Automático de Certificados) protocolo para fornecer certificados TLS / SSL gratuitos para qualquer cliente compatível. Esses certificados podem ser usados para criptografar a comunicação entre os servidores da web e os usuários.
Este tutorial discutirá brevemente as autoridades de certificação e como RELIANOID a integração funciona com o Let's Encrypt e, em seguida, analise como RELIANOID utiliza o certbot (Cliente ACME) para fazer a comunicação com a infraestrutura Let's encrypt.
RELIANOID Load Balancer 6.0.3 ou versão superior inclui um pequeno wrapper certbot chamado letsencryptz Para usar a funcionalidade webroot do Certbot, as seguintes linhas explicam como esse wrapper funciona, leve tudo isso em consideração para que funcione em ambientes de produção.
Como a validação Vamos criptografar funciona? #
Como uma breve descrição da funcionalidade do webroot, o plugin webroot funciona criando um arquivo temporário para cada um dos domínios solicitados no RELIANOID caminho de arquivo /usr/local/relianoid/app/letsencryptz/webroot/.well-known/acme-challenge/. Em seguida, o servidor de validação Let's Encrypt faz solicitações HTTP para validar se o DNS de cada domínio solicitado é resolvido para o servidor que executa o wrapper letsencryptz e se o arquivo temporário para fins de validação está acessível. O diagrama a seguir descreve um exemplo real:
No diagrama anterior, RELIANOID O balanceador de carga está atrás de um roteador/firewall com um endereço IP público 185.79.20.147 (como um exemplo), o tráfego HTTP e HTTPS é direcionado ao balanceador de carga interno com VIP 192.168.101.31 (como um exemplo), em que o balanceador de carga é configurado com farms 2 diferentes:
Nome do Farm HTTPS WebHosting via 192.168.101.31:443. Esta fazenda é responsável por oferecer hospedagem na web, diferentes servidores web são publicados junto com isso na Internet. Por exemplo, teste1.relianoid.com, teste2.relianoid.com, teste3.relianoid.com estão testando páginas web publicadas neste serviço virtual entre outras.
Nome do Farm HTTP WebhostingRedirect via 192.168.101.31:80. Esse farm é usado apenas para fins de redirecionamento, ele força todo o tráfego de HTTP para HTTPS.
O diagrama anterior descreve uma solicitação SSL Let's Encrypt Certificate para o domínio teste1.relianoid.com como se segue:
1. Uma solicitação de certificado é enviada do próprio balanceador de carga para a infraestrutura Let's Encrypt.
2. Vamos criptografar detecta a nova solicitação de certificado SSL para teste1.relianoid.com
3. Vamos criptografar e executar uma resolução de IP DNS para o host solicitado: teste1.relianoid.com verificando se o resultado é o IP público, o mesmo IP de origem que iniciou a solicitação.
4. Neste ponto, vamos criptografar anúncios para letsencryptz script (webroot cerbot) que precisa para criar um arquivo com um JOGO DA VELHA no caminho público http://test1.relianoid.com/.well-know/acme-challenge/ (80 TCP Port), Diretório local /usr/local/relianoid/app/letsencryptz/webroot/.well-known/acme-challenge/. Então, letsencryptz configura um serviço temporal para tornar esse arquivo acessível a partir da Internet (o farm WebhostingRedirect vai ser modificado para este propósito. Se não houver farm já configurado letsencryptz irá criar um temporal neste VIP e Port).
6. Assim que letsencryptz confirma a criação do serviço temporário, permite que os servidores criptografados verifiquem se o arquivo de validação temporal foi criado e JOGO DA VELHA conteúdo está correto.
7. Finalmente, os servidores Let's Encrypt respondem à primeira solicitação com o certificado já criado para o Nome comum (CN) teste1.relianoid.com.
8. RELIANOID irá armazenar o certificado já criado no caminho local /usr/local/relianoid/config/ e está pronto para ser configurado na fazenda WebHosting.
Nesse estágio, o novo certificado Let's Encrypt seria usado para o serviço virtual HTTPS.
Vamos criptografar comandos de automação #
Como descrito, o letsencryptz O script automatizará as ações necessárias para gerenciar seus certificados SSL, como criar, renovar, destruir ou listar, entre outros. Encontre abaixo os comandos disponíveis.
root@zva6k:~# letsencryptz letsencryptz descrição: letsencryptz é um wrapper let's encrypt (certbot) com parâmetros mínimos pronto para gerenciar certificados Let's Encrypt para perfis https Relianoid. Leve em consideração que este wrapper usa o recurso certbot webroot, então a arquitetura pública Let's Encrypt requer conexão com um IP Virtual local e porta (TCP 80 por padrão) para fazer uma validação de solicitação para o domínio solicitado, então assim que o parâmetro "obtain" for usado, este script irá configurar um farm HTTP que será acessado pelo Let's Encrypt para fins de verificação, esta configuração é feita automaticamente pelo próprio script, apenas garanta que o IP Virtual usado e a porta HTTP 80 não sejam usados por nenhum outro farm com balanceamento de carga, e também garanta que a resolução DNS para o domínio solicitado seja acessível a partir do sistema Let's Encrypt.
uso: /usr/local/relianoid/bin/letsencryptz ação: --obter | --destroy | --renew | --list | --listconf | --help --obter: Solicitar novos certificados usando o módulo webroot cert-bot.
comandos: --vip --fazenda --domínio --domínio --domínio --test --vip: O IP virtual já configurado foi para publicar um servidor web temporal, que será conectado por servidores públicos do Let's Encrypt para verificar a solicitação de certificado. O IP virtual precisa estar livre na porta 80 para ser vinculado a um processo local. Se não estiver livre, use --farm.
--farm: O nome do farm que configura um serviço temporal chamado "letsencryptz". Se nenhum farm for usado, um farm temporal chamado "letsencryptRelianoid" será configurado no IP virtual selecionado.
--domain: O domínio para o qual o Certificado é solicitado, ou seja www.minhaempresa.com.
--test: Parâmetro opcional, se usado, o certificado é solicitado para fins de teste.
--destroy: revoga e exclui o nome do certificado indicado; a ação é rejeitada se o certificado fornecido estiver em uso por um farm.
comandos: --certname --certname: Nome do certificado, este valor pode ser obtido na ação --list.
--renew: Renova os certificados próximos da expiração, sem necessidade de comandos: --test --forcerestart --vip --fazenda --test: Parâmetro opcional, se usado, é executado um teste, a renovação dos certificados é simulada.
--forcerestart: Parâmetro opcional, se usado, os farms que estão usando os certificados renovados serão reiniciados para aplicar as alterações.
--vip: O IP virtual já foi configurado onde publicar um servidor web temporal, este será conectado por servidores públicos do Let's Encrypt para verificar a renovação do certificado. O IP virtual precisa estar livre na porta 80 para ser vinculado a um processo local. Se não estiver livre, use --farm.
--farm: O nome do farm que configura um serviço temporal chamado "letsencryptz". Se nenhum farm for usado, um farm temporal chamado "letsencryptRelainoid" será configurado no IP virtual selecionado.
--list: Lista todos os certificados locais gerenciados pelo let's encrypt e o status, sem necessidade de comandos.
--listconf: Listar osRELIANOID
Levará algum tempo na primeira vez que o letsencryptz for executado porque o sistema vai instalar dependências não resolvidas automaticamente, também uma revisão de configuração é feita antes de começar a usá-lo, Let's Encrypt solicita uma conta de e-mail ou contatos relacionados com os certificados, esta conta de email será usada ao longo de qualquer ação feita contra o sistema Let's Encrypt, este email pode ser configurado no arquivo de configuração principal /usr/local/relianoid/config/global.confdiretiva $ le_email.
Alguns exemplos de uso são mostrados abaixo.
RELIANOID Vamos criptografar a criação de certificados #
Este comando solicita um novo certificado para o domínio teste2.relianoid.com. Leve em consideração que o VIP fornecido será o interno, cujo tráfego deverá ser natted do IP público para o interno. Se Let's Encrypt não conseguir acessar este serviço, a solicitação será negada.
root@zva6k:~# letsencryptz --obtain --vip 192.168.101.31 --domain test2.relianoid.com AVISO: Nenhum nome de farm especificado, um farm temporal com o nome letsencryptRelianoid será criado na porta VIP 192.168.101.31 80. Configurando farm para let's encrypt Verificação do nome do certificado Obtendo certificado para domínios test2.relianoid.com... Salvando log de depuração em /var/log/letsencrypt/letsencrypt.log Plugins selecionados: Autenticador webroot, Instalador Nenhum Obtendo um novo certificado Caminho(s) não padrão, pode não funcionar com o crontab instalado pelo gerenciador de pacotes do seu sistema operacional Solicitação de certificado para o(s) domínio(s) test2.relianoid.com OK Criado Nome do certificado test2.relianoid.com no formato PEM pronto para perfil HTTPS Destruindo configuração webroot para o farm letsencryptRelianoid Excluindo configuração já existente para letsencryptRelianoid, serviço letsencryptz Reiniciando farms usando certificados renovados:
RELIANOID Vamos criptografar a listagem de certificados #
A execução deste comando mostrará os certificados atuais gerenciados por RELIANOID Vamos criptografar o sistema.
root@zva6k:~# letsencryptz --list Listando todos os certificados disponíveis para a configuração atual no diretório de configuração /usr/local/relianoid/config/letsencrypt/ Salvando o log de depuração em /var/log/letsencrypt/letsencrypt.log Nome do certificado: test1.relianoid.com Domínio(s): test1.relianoid.com Data de expiração: 2019-09-19 10:48:02+00:00 (VÁLIDO: 77 dias) Arquivo de certificado PEM: /usr/local/relianoid/config/test1_relianoid_es.pem Nome do certificado: test3.relianoid.com Domínio(s): test3.relianoid.com Data de expiração: 2019-09-26 06:32:52+00:00 (VÁLIDO: 83 dias) Arquivo de certificado PEM: /usr/local/relianoid/config/test3_relianoid_es.pem
Levar em consideração o campo nome válido, este campo será reconhecido pelo wrapper letsencryptz como –Certname.
RELIANOID Vamos criptografar a renovação do certificado #
O comando anterior verifica se algum certificado já gerado requer uma renovação e, nesse caso, a renovação será feita automaticamente. Tenha em consideração que, se o certificado renovado estiver em uso, será necessário reiniciar o farm para aplicar a alteração. Por favor, use a opção –Forcerestart se você quiser letsencryptz reinicia todos os farms necessários para aplicar as alterações.
root@zva6k:~# letsencryptz --renew --vip 192.168.101.31 Renovando todos os certificados necessários Salvando o log de depuração em /var/log/letsencrypt/letsencrypt.log Certificado ainda não vencido para renovação Certificado ainda não vencido para renovação
RELIANOID Vamos criptografar a exclusão do certificado #
Este comando revoga e exclui o certificado fornecido. Caso o sistema detecte que o certificado selecionado está atualmente em uso por qualquer farm HTTPS, a ação será rejeitada. No exemplo acima, a ação de exclusão é rejeitada porque o certificado está em uso pelo farm. testhttps.
root@zva6k:~# letsencryptz --destroy --certname test3.relianoid.com Revogando e excluindo certificado(s) test3.relianoid.com para a configuração atual... Este arquivo não pode ser excluído porque é usado pelo(s) farm(s): testhttps
Assim que o certificado não for atribuído ao farm, a ação será executada:
root@zva6k:~# letsencryptz --destroy --certname test3.relianoid.com Revogando e excluindo certificado(s) test3.relianoid.com para a configuração atual... Salvando log de depuração em /var/log/letsencrypt/letsencrypt.log Certificado(s) test3.relianoid.com excluído(s) no caminho /usr/local/relianoid/config/test3_relianoid_es.pem
Migrar certificados Let's Encrypt para RELIANOID #
RELIANOID O balanceador de carga salva todos os arquivos de configuração do certbot no caminho local / usr / local / zevenet / config / letsencrypt /. Para mover seus arquivos de configuração do certbot existentes (por / etc / letsencrypt) de outro servidor para RELIANOID, você só precisa fazer um tarball (arquivo tar.gz) deste diretório de configuração existente em seu servidor e descompactar o conteúdo no RELIANOID Vamos criptografar o caminho de configuração. Finalmente, considere modificar a variável $ le_email no arquivo global.conf para o mesmo email usado nas solicitações anteriores.
Vamos criptografar o suporte de clustering de certificados #
RELIANOID O plugin Let's Encrypt é totalmente compatível com RELIANOID Serviço de agrupamento. Todas as ações do Let's Encrypt são salvas em um arquivo de configuração replicado pelo RELIANOID Cluster Service, portanto, qualquer ação executada no MESTRE nó será replicado para o ESCRAVO nó automaticamente, mas qualquer ação executada no ESCRAVO nó relacionado com Let's Encrypt será descartado a fim de evitar qualquer dessincronização.
Vamos criptografar certificados, renovação automática #
RELIANOID O plugin Let's Encrypt pode ser configurado para verificar diariamente se algum certificado precisa de renovação, caso o sistema renove automaticamente um determinado certificado e ele esteja em uso por algum farm, então o farm será reiniciado automaticamente para aplicar o certificado mudar.
Para configurar a renovação automática, faça o seguinte:
Crie o seguinte arquivo cron /etc/cron.d/letsencryptz com o seguinte conteúdo:
root@zva6k:~# cat /etc/cron.d/letsencryptz 00 00 * * * root /usr/local/relianoid/bin/letsencryptz --renew --forcerestart --vip 192.168.101.31
Com esta configuração, a verificação de renovação será executada diariamente às 00h00 (meia-noite). E o VIP 192.168.101.31 será usado na porta 80 para fins de verificação do Let's Encrypt System.
Referências #
Algumas referências usadas neste artigo são:
Webroot e Certbot
Como vamos criptografar funciona
