Generazione di certificati digitali pubblici utilizzando la Certification Authority gratuita Let’s Encrypt e PowerShell

Ci siamo già occupati diverse volte della creazione di certificati digitali pubblici utilizzando la certification authority gratuita
Let’s Encrypt. Trovate i nostri articoli seguendo il link https://www.ictpower.it/?s=let%27s+encrypt

Ho avuto necessità di creare un certificato per un mio dominio e ho trovato un modo molto comodo per farlo e vorrei condividerlo con voi.

Let’s Encrypt utilizza il protocollo ACME per rilasciare i certificati digitali, dopo aver verificato che siate i legittimi proprietari del nome di dominio che volete utilizzare nel certificato. Tra i diversi client che potete utilizzare e che utilizzano il protocollo ACME, descritti alla pagina https://letsencrypt.org/docs/client-options/ , ho deciso di utilizzare un client scritto per PowerShell che si chiama Posh-ACME

Figura 1: Pagina GitHub del client Posh-ACME

L’installazione del client è davvero molto semplice e può essere effettuata in qualsiasi macchina Windows (io ho utilizzato il mio PC con Windows 10) utilizzando il comando

 

Dopo aver effettuato l’installazione del modulo è sufficiente utilizzare pochissimi comandi per farsi rilasciare un certificato digitale.

Come esempio mi farò rilasciare un certificato per il nome *.ictpower.cloud (potete creare certificati Wildcard, Certificati SAN oppure certificati per un singolo nome di dominio) ed utilizzerò il DNS per validare di essere il legittimo proprietario del dominio. Ho anche deciso di installare il certificato sulla mia macchina Windows

Il comando che ho utilizzato è

 

Figura 2: Lancio del comando per la creazione del nuovo certificato digitale

Ho utilizzato a questo punto il mio pannello di gestione DNS per creare un record TXT per verificare di essere il legittimo proprietario del dominio per il quale sto richiedendo il certificato.

Figura 3: Creazione del record di verifica della proprietà del dominio da utilizzare nel certificato

Nel prompt di PowerShell premete un tasto qualsiasi per far partire il processo di verifica dopo la creazione del record. Il processo rimane in attesa 60 secondi prima di verificare il record. È possibile tramite un ulteriore switch del comando PowerShell New-PACertificate dichiarare quanto tempo lo script deve rimanere in attesa della propagazione del record. Fate riferimento alla pagina GitHub del client Posh-ACME per avere maggiori informazioni.

Figura 4: Lo script rimane in attesa che il record DNS venga propagato correttamente

Terminato il timeout il certificato è stato creato correttamente, come si può notare dalla figura sotto:

Figura 5: Creazione del certificato completata con successo

Poiché nel comando New- PACertificate ho anche utilizzato lo switch -Install il certificato è stato installato nello store dei certificati Computer della macchina da cui ho lanciato il comando PowerShell.

Figura 6: Il certificato digitale è stato installato nache nella store dei ccertificati Computer della macchina

Il certificato è stato anche creato nella cartella %localappdata%\Posh-ACME\acme-v02.api.letsencrypt.org\87064590\!.ictpower.cloud

Nella cartella troverete il file .PFX (protetto con la password scelta durante il lancio del comando di creazione del certificato) e anche i file .KEY e .CER nel caso in cui vogliate poi successivamente installare il certificato in una macchina Linux. Questo vi permetterà di installare facilmente il certificato in un’altra macchina.

Figura 7: Cartella dove recuperare il certificato creato

Ovviamente utilizzando PowerShell si aprono degli scenari decisamente interessanti perché sarà possibile generare il certificato e successivamente installarlo utilizzando degli script personalizzati. Inoltre, è decisamente interessante la possibilità di utilizzare l’integrazione con alcuni plugin DNS di diversi servizi pubblici (Azure DNS, AWS Route53) che vi permettono di interagire nella creazione del record XT per la validazione del nome di dominio e quindi rendere completamente automatico sia il processo di creazione del certificato sia il suo successivo rinnovo, visto che il certificato avrà una durata di 90 giorni.

Configurando infatti correttamente tutti i parametri all’interno del vostro script sarà possibile lanciare il semplice comando

 

per poter effettuare il rinnovo del certificato.

Che dire? Spero di avervi indicato un ottimo modo da utilizzare per la creazione dei vostri certificati sia per gli ambienti di laboratorio che per gli ambienti di produzione e di poterlo far interagire con dei semplici automatismi creati con i vostri script PowerShell.

Buon lavoro!