Automação de renovações de certificado SSL do Gateway de Aplicativo do Azure com Let’s Encrypt e Automação do Azure

Conteúdo

16b7623f-bb2b-45be-80e2-34869ed42955-7654250 Vamos criptografar é um GRATUITAMENTEAutoridade de certificação aberta e automatizada oferecida pela organização sem fins lucrativos Grupo de Pesquisa de Segurança da Internet (ISRG) e com o apoio de grandes corporações como o Google, Facebook, Microsoft e muitos outros, para ter um site mais seguro e amigo da privacidade.

Já é usado por muitos sites e serviços em todo o mundo. Se você pode obter certificados SSL emitidos por uma CA conhecida gratuitamente, não há desculpa para usar HTTPS em seu site e ser seguro por padrão. O processo de emissão de um certificado Let’s Encrypt pode ser automatizado através do uso de software que usa o Protocolo ACME, que normalmente é executado em seu host. Esses certificados normalmente expiram em não mais do que 3 meses (algo que aumenta a segurança do sistema), por isso é necessário automatizar renovações para evitar renovações manuais.

Un buen ejemplo de esta implementación es la extensión Let’s Encrypt de Azure App Service, que automatiza renovações usando um trabalho da web. Você pode ler mais sobre isso neste Postagem do blog de Scott Hanselman.

Al usar Azure Application Gateway, uma das coisas que você precisa fazer é instalar o certificado SSL no gateway. Você provavelmente deseja implementar o descarregamento SSL, portanto, todos os recursos necessários para proteger o canal de comunicação são administrados pelo gateway e não pelos servidores por trás.

Neste post, Vou explicar apenas este cenário, mostrando como você pode automatizar as renovações do Let's Encrypt SSL em um gateway de aplicativo do Azure.

71194445-b559-49ca-821b-c5f1ba4ddb3e-2665380

A ideia por trás dessa implementação é evitar qualquer modificação em qualquer infraestrutura que esteja por trás do Gateway de Aplicativo, para completar as verificações e validações de renovação realizadas pelo processo Let’s Encrypt. Em resumo:

  1. um runbook da Automação do Azure será executado em uma programação (quer dizer, uma vez a cada duas semanas) para renovar e instalar el certificado Let’s Encrypt actual. Vamos criptografar as necessidades para validar a propriedade do domínio, portanto, ele retorna um código de desafio que o runbook armazena em uma conta de armazenamento atrás do gateway de aplicativo;
  2. uma regra especial no gateway de aplicativo redireciona a verificação de validação de Let’s Encrypt para a conta de armazenamento, portanto, a verificação da propriedade do domínio é bem-sucedida
  3. o runbook da Automação do Azure finalmente baixa o novo certificado e o instala no Gateway de Aplicativo

Observe que com esta implementação, não há necessidade de manipular qualquer outra infraestrutura por trás do Gateway de Aplicativo.

Eu queria emitir e automatizar as renovações de certificados do Let’s Encrypt para “api.davidjrh.com”. Observe que eu já tinha um registro DNS Tipo A direcionado ao meu Gateway de Aplicativo.

0d81f27b-d4e6-47d5-b396-f2f501bd719a-3502620

C: > nslookup api.davidjrh.com
Servidor: google-public-dns-a.google.com
Endereço: 8.8.8.8

 

Resposta não autorizada:
Nome: api.davidjrh.com
Endereço: 23.102.37.253

Para implementar o processo de renovação Let's Encrypt para emitir novos certificados SSL no Gateway de Aplicativo, Siga esses passos:

Crie uma conta de armazenamento

1. Crie uma conta de Armazenamento do Azure que será usada para hospedar solicitações de desafio para verificação de propriedade de domínio DNS. Utilice los parametros más baratos, O que “Desempenho padrão” y LRS.

77ebd1e0-9a92-414f-b4de-41a76ab68e28-8869793

2. Assim que a conta de armazenamento estiver pronta, criar um contêiner “público” com permissões de “blob público”.

6c913dfa-681e-4c31-b986-c805c6c08ad9-8183586

3. Crie o diretório virtual ” .bem conhecido desafio acme” com a ferramenta Storage Explorer.

d5923013-af23-49ae-97a3-354750084039-9006069

Modifique o gateway de aplicativo para redirecionar as solicitações de desafio ACME para a conta de armazenamento.

4. Quando você criou o Gateway de Aplicativo do Azure, você provavelmente especificou uma regra HTTP que estava associada a um ouvinte http. Neste caso, você precisa deletar aquela regra que será substituída por uma regra baseada no caminho conforme mostrado na próxima etapa

d94b0fee-541d-4f92-819f-7c3967e533f3-7855175

5. Crie uma nova regra baseada em rota que redirecione as solicitações que Let’s Encrypt fará no processo de renovação com a seguinte configuração:

da00d758-665d-43cc-9e98-9b60f02b5b4d-1217886

6. Defina os parâmetros que você tinha na regra http e clique em “Adicionar configuração”

dd6ee5f2-1511-4e12-a90c-f5718cb1add0-7891161

7. Especifique os parâmetros de configuração com o caminho “/.bem conhecido / acme-challenge / *” com um redirecionamento (permanente), apontando para um site externo com o url do contêiner da conta de armazenamento que você criou anteriormente:

6294fcad-45c8-443e-9e06-c9b37fde26d4-2861319

19fbcc55-b935-48fc-804a-43a9abb1b190-9371724

9. Teste a regra criando um arquivo chamado “test.html” na conta de armazenamento e navegando no URL /.well-known / acme-challenge / test.html”>/.well-known / acme-challenge / test.html”>http:///.well-known / acme-challenge / test.html

a25dbf84-c632-4012-80f9-2957dd69d086-3330642

Se tudo foi configurado corretamente, ao navegar no url, o gateway de aplicativo deve redirecionar seu navegador para a conta de armazenamento, conforme mostrado abaixo. Não prossiga até que tenha configurado com sucesso a regra de redirecionamento.

2066c740-bd7b-43d3-b2c5-af198e3a0222-3732689

Instale o certificado Let's Encrypt pela primeira vez no gateway

Para instalar o certificado Let's Encrypt no gateway pela primeira vez, deve primeiro emiti-lo. Existem várias maneiras de emitir o certificado, mas o mais simples é usar Certbot, uma ferramenta disponível no GitHub e integrada em Python que permite obter certificados do Let's Encrypt. Existem outros clientes, então você provavelmente pode compartilhar ideias melhores na área de comentários desta postagem.

Eu normalmente uso um PC com Windows 10 como um ambiente de desenvolvimento, e o processo para instalar a ferramenta é descrito neste link, que basicamente mostra como instalar o python e, em seguida, executar “pip install certbot”. Mas como eu tinha o subsistema Linux habilitado no meu laptop Ubuntu Windows, Eu segui essa outra abordagem:

  1. Abriu um console bash no subsistema Linux.
  2. Python instalado com “sudo apt-get install certbot”
  3. Executei o seguinte comando para emitir o certificado apenas localmente em modo manual, registrar uma conta com meu endereço de e-mail no serviço Let’s Encrypt e emitir um certificado para o domínio “api.davidjrh.com” aceitando os Termos de Serviço:
    sudo certbot certonly – email -d api.davidjrh.com –concordar –manual
    b2772023-72ff-4ccd-94a8-5a56a1c683b2-6156685
  4. Você seguiu as instruções na tela e criou o arquivo na conta de armazenamento com o conteúdo necessário
    30dd8ce4-28c2-4feb-975c-cf8d289ca707-7599761
  5. Certificado emitido com sucesso

davidjrh @ DESKTOP-JQL0N5G: ~ $ sudo ls /etc/letsencrypt/live/api.davidjrh.com
LÉAME cert.pem chain.pem fullchain.pem privkey.pem

O certificado, string e chave são geradas no formato .pem, para fazer o upload do certificado em .pfx, eu usei OpenSSL para convertir de PEM a PFX:

794cb37b-358a-4140-b4dd-72463394d65c-5188707

Finalmente, Modifiquei meu ouvinte HTTPS atual para usar o certificado LetsEncrypt. IMPORTANTE: lembre-se do nome que você vai dar a este certificado, já que você terá que especificá-lo como um parâmetro no processo de renovação posterior

1190c74b-d5e9-4637-86c5-2d85c5959e83-6194814

Depois de aplicar as mudanças, você pode verificar se o certificado SSL LetsEncrypt está funcionando corretamente apenas navegando em um recurso via HTTPS

d4857036-dd9f-4832-9dae-4417c07d98cc-9749850

Agora que o certificado LetsEncrypt está instalado e funcionando corretamente, a próxima etapa é automatizar as renovações. Vamos fazer isso com um runbook de Automação do Azure.

Crie uma conta de automação

1. No Portal do Azure, criar uma conta de Automação do Azure (ou use um existente) hospedar o runbook. Observe que você pode criar esta conta de automação e executar até 500 minutos por mês grátis.

7ce18f74-9168-4c4a-8fe5-adc5e94feda7-7925603

2. Dentro do recurso de automação, abra Módulos e navegue na galeria para importar os seguintes módulos: ‘AzureRM.profile’, ‘AzureRM.Network’ e 'ACMESharp'. Certifique-se de importar a versão mais recente de todos eles e atualizar as atuais já importadas (por exemplo, AzureRM.profile é habilitado por padrão, mas precisamos da última versão disponível na galeria).

2dd8a833-c908-4e6c-8765-f8c404629460-9082209

3. Na conta de Automação do Azure, crie um runbook do PowerShell chamado LetsEncryptCertificateRenewal

6e0a9a3b-88bc-48f8-941c-1f4b84b2401c-7101631

4. Edite o runbook do PowerShell e cole o conteúdo do script disponível em GitHub e clique no botão “Para postar” de modo que esteja disponível para sua programação.

a9b644b6-f44c-49f9-89f3-b2142ac38efa-4320385

Puede probar el runbook en el painel de prueba y pasar los parámetros necesarios (nome do domínio, endereço de e-mail usado em LetsEncrypt, nomes de grupos de recursos, nome da conta de armazenamento, nome do gateway de aplicativo e o nome do certificado que você usou ao configurar o ouvinte https ). Leva alguns 15 minutos para completar. Ao navegar no site novamente com https, você notará que o certificado foi atualizado com sucesso.

IMPORTANTE: LetsEncrypt tem seus próprios limites semanais ao emitir certificados para um domínio específico em produção (50 por semana), então tome cuidado ao testar o script do PowerShell.

217e2735-3dc7-409e-83cb-8778d91f1f1e-9497931

5. Crie um programa de automação do Azure para renovar o certificado SSL. No meu caso, Eu criei uma programação para renovar a cada 2 semanas.

f2d4bf48-e355-4a20-9ef8-2a0a624e0b8d-4912355

6. Configure os parâmetros para agendar o runbook com a agenda que você criou anteriormente.

b879223a-bc5b-4f8f-917c-a0f1afcee32a-6237806

E isso e tudo. Agora você configurou renovações automáticas de seu certificado SSL do Gateway de Aplicativo com a Automação do Azure.

Eu espero que isso ajude!

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.