Como usar Vamos criptografar certificados SSL para farms HTTPS

PUBLICADO EM 3 de julho de 2019

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 a integração do Zevenet funciona com o Let's Encrypt, em seguida, analise como o Zevenet usa o certbot (Cliente ACME) para fazer a comunicação com a infraestrutura Let's encrypt.

O Zevenet Load Balancer 6.0.3 ou versão superior inclui um pequeno invólucro 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 webroot, o plug-in webroot funciona criando um arquivo temporário para cada um dos domínios solicitados no caminho do arquivo Zevenet /usr/local/zevenet/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:

Vamos criptografar Zevenet

No diagrama anterior, o balanceador de carga Zevenet 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, test1.zevenet.es, test2.zevenet.es, test3.zevenet.es 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 test1.zevenet.es 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 test1.zevenet.es
3. Vamos criptografar e executar uma resolução de IP DNS para o host solicitado: test1.zevenet.es 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.zevenet.es/.well-know/acme-challenge/ (80 TCP Port), Diretório local /usr/local/zevenet/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) test1.zevenet.es.
8. Zevenet irá armazenar o certificado já criado no caminho local / usr / local / zevenet / 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 description:

letsencryptz is a let's encrypt (certbot) wrapper with minimal parameters ready to manage Let's Encrypt certificates for ZEVENET https profiles. Take into account that this wrapper uses certbot webroot feature so the public Let's encrypt architecture requires to connect with a local Virtual IP and port (TCP 80 by default) in order to do a request validation for the requested domain, so as soon as the "obtain" param is used, this script will configure an HTTP farm which will be accessed by Let's encrypt for verification purpose, this configuration is done automatically by this script itself, only ensure that the used Virtual IP and HTTP port 80 is not used by any another load balanced farm, and also ensure that the DNS resolution for the requested domain is reachable from let's encrypt system.


usage:

/usr/local/zevenet/bin/letsencryptz <action> <commands>

action: --obtain | --destroy | --renew | --list | --listconf | --help

	--obtain: Request new Certificates using webroot cert-bot module.

		commands: --vip <Virtual IP> --farm <Farm Name> --domain <domain1> --domain <domain2> --domain <domainN> --test

        		--vip: The Virtual IP already configured were to publish a temporal web server, this will be connected by let's encrypt public servers to verify the certificate request. The Virtual IP has to be free on the 80 port in order to be bound by a local process, if it isn't free then use --farm instead.
        		--farm: The farm name which configures a temporal Service called "letsencryptz", if no farm is used a temporal farm called "letsencryptZevenet" will be configured in the selected Virtual IP.
        		--domain: The domain which requests the Certificate for, i.e. www.mycompany.com.
			--test: Optional parameter, if used the certificate is requested for test purpose.

	--destroy: Revoke and delete the indicated Certificate Name, the action is rejected if the given certificate is in use by a farm.
		
		commands: --certname <Certificate Name>
	       	
			--certname: Certificate Name, this value can be obtained from the action --list.

	--renew: Renew the certificates near to expiry, no commands needed
		
		commands: --test --forcerestart --vip <Virtual IP> --farm <Farm Name>
	       		--test:	Optional parameter, if used a dry-run is executed, the renew of the certificates is simulated. 
			--forcerestart: Optional parameter, if used the farms that are using the renewed certificates will be restarted in order to apply the changes.
                        --vip: The Virtual IP already configured where to publish a temporal web server, this will be connected by let's encrypt public servers to verify the certificate renew. The Virtual IP has to be free on the 80 port in order to be bound by a local process, if it isn't free then use --farm instead.
                        --farm: The farm name which configures a temporal Service called "letsencryptz", if no farm is used a temporal farm called "letsencryptZevenet" will be configured in the selected Virtual IP.

	--list: List all the local certificates managed by let's encrypt and the status, no commands needed.

	--listconf: List the Zevenet let's encrypt configuration module (check global.conf file), no commands needed. 

	--help: Obtain this help.


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/zevenet/config/global.confdiretiva $ le_email.

Alguns exemplos de uso são mostrados abaixo.

Zevenet vamos criptografar a criação do certificado

Este comando solicita um novo certificado para o domínio test2.zevenet.es. 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.zevenet.es
WARNING: No farm name specified, a temporal farm with name letsencryptZevenet will be created in VIP 192.168.101.31 port 80.
Configuring farm for let's encrypt Certificate Name verification
Obtaining Certificate for domains test2.zevenet.es...
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator webroot, Installer None
Obtaining a new certificate
Non-standard path(s), might not work with crontab installed by your operating system package manager
Certificate Request for the domain(s) test2.zevenet.es OK
Created Certificate name test2.zevenet.es in PEM format ready for HTTPS profile
Destroying webroot configuration for the farm letsencryptZevenet
Deleting already configuration for letsencryptZevenet, service letsencryptz
Restarting farms using renewed certificates: 

Zevenet Vamos criptografar lista de certificados

A execução deste comando irá mostrar os certificados atuais gerenciados pelo sistema Zevenet Let's Encrypt.

root@zva6k:~# letsencryptz --list
Listing all available certificates for the current configuration in config dir /usr/local/zevenet/config/letsencrypt/
Saving debug log to /var/log/letsencrypt/letsencrypt.log
	Certificate Name: test1.zevenet.es
	Domain(s): test1.zevenet.es
	Expiry Date: 2019-09-19 10:48:02+00:00 (VALID: 77 days)
	Pem Certificate file: /usr/local/zevenet/config/test1_zevenet_es.pem

	Certificate Name: test3.zevenet.es
	Domain(s): test3.zevenet.es
	Expiry Date: 2019-09-26 06:32:52+00:00 (VALID: 83 days)
	Pem Certificate file: /usr/local/zevenet/config/test3_zevenet_es.pem


Levar em consideração o campo nome válido, este campo será reconhecido pelo wrapper letsencryptz como –Certname.

Renovação do certificado Zevenet Let's Encrypt

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
Renewing all the required certificates
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Cert not yet due for renewal
Cert not yet due for renewal

Zevenet Let's Encrypt certificado de exclusão

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.zevenet.es
Revoking and deleting certificate(s) test3.zevenet.es for the current configuration...
This file can't be deleted because is used by the 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.zevenet.es
Revoking and deleting certificate(s) test3.zevenet.es for the current configuration...
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Deleted certificate(s) test3.zevenet.es in path /usr/local/zevenet/config/test3_zevenet_es.pem

Migrar vamos criptografar certificados para Zevenet

O balanceador de carga Zevenet salva todos os arquivos de configuração 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 Zevenet, você só precisa criar um tarball (arquivo tar.gz) desse diretório de configuração existente em seu servidor e descompactar o conteúdo no caminho de configuração Zevenet Let's Encrypt. 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

O plugin Zevenet Let's Encrypt é totalmente compatível com o serviço Zevenet Cluster. Todas as ações Let's Encrypt são salvas em um arquivo de configuração replicado pelo Zevenet 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

O plugin Zevenet Let's Encrypt pode ser configurado para verificar diariamente se algum certificado precisa ser renovado, caso o sistema renove automaticamente um determinado certificado e este estiver em uso por algum farm, então o farm será reiniciado automaticamente para aplicar o mudança de certificado.

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/zevenet/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ência

Algumas referências usadas neste artigo são:

Webroot e Certbot
Como vamos criptografar funciona

Compartilhar no:

Documentação sob os termos da Licença de Documentação Livre GNU.

Esse artigo foi útil?

Artigos Relacionados