Molti siti web e servizi lo utilizzano già in tutto il mondo. Se puoi ottenere certificati SSL emessi da una CA conosciuta gratuitamente, non c'è motivo per non usare HTTPS sul tuo sito web e garantire la sicurezza di default. Il processo di emissione di un certificato Let’s Encrypt può essere automatizzato tramite l'uso di un software che utilizza il Protocollo ACME, che di solito viene eseguito dal vostro provider di hosting web. Questi certificati di solito scadono in non più di 3 mesi (qualcosa che aumenta la sicurezza del sistema), pertanto è necessario automatizzare i rinnovi per evitare i rinnovi manuali.
Un buon esempio di questa implementazione è l'estensione Let’s Encrypt di Servizio app di AzureAzure App Service è una piattaforma di Microsoft che consente di sviluppare e ospitare applicazioni web e mobili nel cloud. Offre supporto per vari linguaggi di programmazione, come .NET, Giava, PHP e Python. Con funzionalità come il ridimensionamento automatico, integrazione continua e sicurezza avanzata, Azure App Service facilita agli sviluppatori la costruzione di applicazioni robuste e scalabili senza preoccuparsi dell'infrastruttura sottostante...., che automatizza i rinnovi tramite un job web. Può leggere di più su questo in questo Post del blog di Scott Hanselman.
Quando si utilizza Azure Application Gateway, una delle cose da fare è installare il certificato SSL sul gateway. Probabilmente vorrete implementare il termine SSL offloading, in modo che tutte le risorse necessarie per proteggere il canale di comunicazione siano gestite dal gateway e non dai server dietro di esso.
In questo post, Spiegherò solo questo scenario, mostrando come sia possibile automatizzare i rinnovi dei certificati SSL di Let's Encrypt in un Application Gateway di Azure.
L'idea alla base di questa implementazione è evitare qualsiasi modifica all'infrastruttura che si trovi dietro l'Application Gateway, per completare le verifiche di rinnovo e le validazioni effettuate dal processo di Let's Encrypt. In sintesi:
- verrà eseguito un runbook di Azure Automation secondo un calendario (vale a dire, una volta ogni due settimane) per rinnovare e installare il certificato attuale di Let's Encrypt. Let's Encrypt necessita di convalidare la proprietà del dominio, por lo que devuelve un código de desafío que el runbook almacena en una cuenta de almacenamiento detrás de la puerta de enlace de la aplicación;
- una regla especial en Application Gateway redirige la verificación de validación proveniente de Let’s Encrypt a la cuenta de almacenamiento, por lo que la verificación de propiedad del dominio es exitosa
- el runbook de Azure Automation finalmente descarga el nuevo certificado y lo instala en Application Gateway
Tenga en cuenta que con esta implementación, no es necesario manipular ninguna otra infraestructura detrás de Application Gateway.
Quería emitir y automatizar las renovaciones de certificados Let’s Encrypt para “api.davidjrh.com”. Si ricorda che avevo già un record DNS di tipo A puntato al mio Application Gateway.
C: > nslookup api.davidjrh.com
server: google-public-dns-a.google.com
Indirizzo: 8.8.8.8
Risposta non autorizzata:
Nome: api.davidjrh.com
Indirizzo: 23.102.37.253
Per implementare il processo di rinnovo di Let’s Encrypt e rilasciare nuovi certificati SSL in Application Gateway, Segui questi passi:
Creare un account di archiviazione
1. Create un account Azure Storage che sarà utilizzato per ospitare le richieste di challenge per la verifica della proprietà del dominio DNS. Utilizzare i parametriIl "parametri" sono variabili o criteri che vengono utilizzati per definire, misurare o valutare un fenomeno o un sistema. In vari campi come la statistica, Informatica e Ricerca Scientifica, I parametri sono fondamentali per stabilire norme e standard che guidano l'analisi e l'interpretazione dei dati. La loro corretta selezione e gestione sono fondamentali per ottenere risultati accurati e pertinenti in qualsiasi studio o progetto.... più economici, Che cosa “Prestazioni standard” e LRS.
2. Una volta pronto l'account di archiviazione, create un contenitore “pubblico” con permessi di “blob pubblico”.
3. Create la directory virtuale ” .well-known acme-challenge” con lo strumento Esplora Storage.
Modificare Application Gateway per reindirizzare le richieste di sfida ACME all'account di archiviazione.
4. Quando ha creato Azure Application Gateway, probabilmente ha specificato una regola HTTP associata a un listener HTTP. In questo caso, è necessario eliminare quella regola, che sarà sostituita da una regola basata sul percorso come mostrato nel passaggio successivo
5. Creare una nuova regola basata sul percorso che reindirizzi le richieste che Let’s Encrypt eseguirà nel processo di rinnovo con la seguente configurazione:
6. Impostare i parametri che aveva nella regola HTTP e fare clic su “Aggiungi configurazione”
7. Specifica i parametri di configurazione con il percorso “/.well-known/acme-challenge/*” con un reindirizzamento (permanente), puntando a un sito esterno con l'URL del contenitore dell'account di archiviazione che hai creato prima:
9. Prova la regola creando un file chiamato “test.html” nell'account di archiviazione e navigando verso l'URL /.well-known/acme-challenge/test.html”>/.well-known/acme-challenge/test.html”>http:///.well-known/acme-challenge/test.html
Se tutto è configurato correttamente, navigando verso l'URL, il gateway dell'applicazione deve reindirizzare il tuo browser all'account di archiviazione come mostrato di seguito. Non continuare finché non hai configurato correttamente la regola di reindirizzamento.
Installazione del certificato Let’s Encrypt per la prima volta sul gateway
Per installare il certificato Let’s Encrypt sul gateway per la prima volta, prima devi rilasciarlo. Ci sono diversi modi per rilasciare il certificato, ma il più semplice è utilizzare Certbot, uno strumento disponibile su GitHub e realizzato in Python che ti permette di ottenere certificati di Let’s Encrypt. Ci sono altri client, quindi probabilmente puoi condividere idee migliori nell'area dei commenti di questo post.
Normalmente uso un PC con Windows 10 come ambiente di sviluppo, e il processo per installare lo strumento è descritto in questo link, che mostra fondamentalmente come installare Python e poi eseguire “pip install certbot”. Ma poiché avevo il sottosistema Linux abilitato sul mio laptop Windows con Ubuntu, ho seguito questo altro approccio:
- Ha aperto una console bash nel sottosistema Linux.
- Python installato con “sudo apt-get install certbot”
- Ho eseguito il seguente comando per emettere il certificato solo localmente in modalità manuale, registrando un account con il mio indirizzo email sul servizio Let’s Encrypt ed emettendo un certificato per il dominio “api.davidjrh.com” accettando i Termini di servizio:
sudo certbot certonly – email -d api.davidjrh.com –agree-tos –Manuale
- Ha seguito le istruzioni sullo schermo e ha creato il file nell'account di archiviazione con il contenuto richiesto
- Ha emesso con successo il certificato
davidjrh @ DESKTOP-JQL0N5G: ~ $ sudo ls /etc/letsencrypt/live/api.davidjrh.com
LEGGIMI cert.pem chain.pem fullchain.pem privkey.pem
Il certificato, la catena e la chiave vengono emessi in formato .pem, quindi per caricare il certificato in .pfx, ho utilizzato OpenSSL per convertire da PEM a PFX:
Finalmente, ho modificato la mia attuale configurazione HTTPS per usare il certificato LetsEncrypt. IMPORTANTE: ricorda il nome che darai a questo certificato, poiché dovrai specificarlo come parametro nel processo di rinnovo successivamente
Dopo aver applicato le modifiche, puoi verificare che il certificato SSL di LetsEncrypt funzioni correttamente semplicemente navigando verso una risorsa tramite HTTPS
Ora che il certificato LetsEncrypt è installato e funziona correttamente, il passo successivo è automatizzare i rinnovi. Facciamolo con un runbook di Automazione di Azure.
Creare un account di automazione
1. Nel Portale di Azure, crei un account di Automazione di Azure (o utilizzi uno esistente) per ospitare il runbook. Si noti che è possibile creare questo account di automazione ed eseguire fino a 500 minuti al mese gratuitamente.
2. All'interno della risorsa di Automazione, apra i Moduli ed esplori la galleria per importare i seguenti moduli: ‘AzureRM.profile’, ‘AzureRM.Network'’ e ‘ACMESharp’. Assicurarsi di importare l'ultima versione di tutti loro e aggiornare quelli già importati (ad esempio, AzureRM.profile è abilitato per impostazione predefinita, ma abbiamo bisogno dell'ultima versione disponibile in galleria).
3. Nel account di Azure Automation, crea un runbook di PowerShell chiamato LetsEncryptCertificateRenewal
4. Modifica il runbook di PowerShell e incolla il contenuto dello script disponibile in GitHub e fai clic sul pulsante “Pubblicare” per renderlo disponibile per la pianificazione.
Puoi testare il runbook in ambiente pannelloUn panel è un gruppo di esperti che si riunisce per discutere e analizzare un argomento specifico. Questi forum sono comuni alle conferenze, seminari e dibattiti pubblici, dove i partecipanti condividono le loro conoscenze e prospettive. I pannelli possono riguardare una varietà di aree, Dalla scienza alla politica, e il suo obiettivo è quello di favorire lo scambio di idee e la riflessione critica tra i partecipanti.... di prova e passare i parametri necessari (nome di dominio, indirizzo email utilizzato in LetsEncrypt, nomi dei gruppi di risorse, nome dell'account di archiviazione, nome del gateway dell'applicazione e il nome del certificato che hai utilizzato durante la configurazione dell'ascoltatore HTTPS ). Ci vogliono alcuni 15 minuti per completare. Navigando nuovamente nel sito con HTTPS, noterai che il certificato è stato aggiornato correttamente.
IMPORTANTE: LetsEncrypt ha i suoi limiti settimanali nel rilasciare certificati per un dominio specifico in produzione (50 a settimana), quindi fai attenzione quando testi lo script di PowerShell.
5. Crea un programma di automazione di Azure per rinnovare il certificato SSL. Nel mio caso, ho creato una pianificazione per rinnovarlo ogni 2 settimane.
6. Configura i parametri per programmare il runbook con la pianificazione che hai creato in precedenza.
E questo è tutto.. Ora hai configurato il rinnovo automatico del tuo certificato SSL di Application Gateway con Azure Automation.
Spero che questo aiuti!


