Creare un certificato pubblico autofirmato per autenticare l'applicazione

Microsoft Entra ID supporta due tipi di autenticazione per le entità servizio: autenticazione basata su password (segreto dell'app) e autenticazione basata su certificati. Anche se i segreti delle app possono essere creati facilmente nel portale di Azure o usando un'API Microsoft come Microsoft Graph, sono di lunga durata e non sono sicuri come certificati. È quindi consigliabile che l'applicazione usi un certificato anziché un segreto.

Per i test, è possibile usare un certificato pubblico autofirmato anziché un certificato firmato dall'autorità di certificazione (CA). In questa procedura si userà PowerShell per creare ed esportare un certificato autofirmato.

Attenzione

I certificati autofirmati sono certificati digitali non firmati da una CA di terze parti attendibile. I certificati autofirmati vengono creati, rilasciati e firmati dall'azienda o dallo sviluppatore responsabile della firma del sito Web o del software. Ecco perché i certificati autofirmati sono considerati non sicuri per siti Web e applicazioni pubblici.

Durante la creazione del certificato tramite PowerShell, è possibile specificare parametri come algoritmi di crittografia e hash, periodo di validità del certificato e nome di dominio. Il certificato può quindi essere esportato con o senza la relativa chiave privata a seconda delle esigenze dell'applicazione.

L'applicazione che avvia la sessione di autenticazione richiede la chiave privata mentre l'applicazione che conferma l'autenticazione richiede la chiave pubblica. Pertanto, se si esegue l'autenticazione dall'app desktop di PowerShell all'ID Microsoft Entra, si esporta solo la chiave pubblica (.cer file) e la si carica nel portale di Azure. L'app PowerShell usa la chiave privata dall'archivio certificati locale per avviare l'autenticazione e ottenere i token di accesso per chiamare api Microsoft come Microsoft Graph.

L'applicazione può anche essere in esecuzione da un altro computer, ad esempio Automazione di Azure. In questo scenario si esporta la coppia di chiavi pubblica e privata dall'archivio certificati locale, si carica la chiave pubblica nella portale di Azure e la chiave privata (un file pfx) in Automazione di Azure. L'applicazione in esecuzione in Automazione di Azure userà la chiave privata per avviare l'autenticazione e ottenere i token di accesso per chiamare api Microsoft come Microsoft Graph.

Questo articolo usa il New-SelfSignedCertificate cmdlet di PowerShell per creare il certificato autofirmato e il Export-Certificate cmdlet per esportarlo in un percorso facilmente accessibile. Questi cmdlet sono incorporati nelle versioni moderne di Windows (Windows 8.1 e versioni successive e Windows Server 2012R2 e versioni successive). Il certificato autofirmato avrà la configurazione seguente:

  • Lunghezza della chiave a 2048 bit. Sebbene siano supportati valori più lunghi, è consigliabile usare le dimensioni a 2048 bit per la migliore combinazione di sicurezza e prestazioni.
  • Usa l'algoritmo di crittografia RSA. Microsoft Entra ID supporta attualmente solo RSA.
  • Il certificato viene firmato con l'algoritmo hash SHA256. Microsoft Entra ID supporta anche i certificati firmati con algoritmi hash SHA384 e SHA512.
  • Il certificato è valido per un solo anno.
  • Il certificato è supportato per l'uso sia per l'autenticazione client che per quella server.

Per personalizzare la data di inizio e di scadenza e altre proprietà del certificato, fare riferimento a New-SelfSignedCertificate.

Creare ed esportare il certificato pubblico

Usare il certificato creato usando questo metodo per eseguire l'autenticazione da un'applicazione in esecuzione dal computer. Ad esempio, eseguire l'autenticazione da PowerShell.

In un prompt di PowerShell eseguire il comando seguente e lasciare aperta la sessione della console di PowerShell. Sostituire {certificateName} con il nome che si vuole assegnare al certificato.

$certname = "{certificateName}"    ## Replace {certificateName}
$cert = New-SelfSignedCertificate -Subject "CN=$certname" -CertStoreLocation "Cert:\CurrentUser\My" -KeyExportPolicy Exportable -KeySpec Signature -KeyLength 2048 -KeyAlgorithm RSA -HashAlgorithm SHA256

La $cert variabile nel comando precedente archivia il certificato nella sessione corrente e consente di esportarlo.

Il comando seguente esporta il certificato in .cer formato. È anche possibile esportarlo in altri formati supportati nei portale di Azure inclusi .pem e .crt.


Export-Certificate -Cert $cert -FilePath "C:\Users\admin\Desktop\$certname.cer"   ## Specify your preferred location

Il certificato è ora pronto per il caricamento nel portale di Azure. Dopo il caricamento, recuperare l'identificazione personale del certificato da usare per autenticare l'applicazione.

(Facoltativo): esportare il certificato pubblico con la relativa chiave privata

Se l'applicazione verrà eseguita da un altro computer o cloud, ad esempio Automazione di Azure, sarà necessaria anche una chiave privata.

Seguendo i comandi precedenti, creare una password per la chiave privata del certificato e salvarla in una variabile. Sostituire {myPassword} con la password che si vuole usare per proteggere la chiave privata del certificato.


$mypwd = ConvertTo-SecureString -String "{myPassword}" -Force -AsPlainText  ## Replace {myPassword}

Usando la password archiviata nella $mypwd variabile, proteggere ed esportare la chiave privata usando il comando ;


Export-PfxCertificate -Cert $cert -FilePath "C:\Users\admin\Desktop\$certname.pfx" -Password $mypwd   ## Specify your preferred location

Il certificato (file .cer) è ora pronto per il caricamento nel portale di Azure. La chiave privata (file con estensione pfx ) è crittografata e non può essere letta da altre parti. Dopo il caricamento, recuperare l'identificazione personale del certificato, che è possibile usare per autenticare l'applicazione.

Attività facoltativa: eliminare il certificato dall'archivio chiavi.

È possibile eliminare la coppia di chiavi dall'archivio personale eseguendo il comando seguente per recuperare l'identificazione personale del certificato.


Get-ChildItem -Path "Cert:\CurrentUser\My" | Where-Object {$_.Subject -Match "$certname"} | Select-Object Thumbprint, FriendlyName

Copiare quindi l'identificazione personale visualizzata e usarla per eliminare il certificato e la relativa chiave privata.


Remove-Item -Path Cert:\CurrentUser\My\{pasteTheCertificateThumbprintHere} -DeleteKey

Conoscere la data di scadenza del certificato

Il certificato autofirmato creato seguendo i passaggi precedenti ha una durata limitata prima della scadenza. Nella sezione Registrazioni app del portale di Azure, nella schermata Certificati e segreti viene visualizzata la data di scadenza del certificato. Se si usa Automazione di Azure, nella schermata Certificati dell'account di Automazione viene visualizzata la data di scadenza del certificato. Seguire i passaggi precedenti per creare un nuovo certificato autofirmato.

Passaggi successivi

Gestire i certificati per l'accesso Single Sign-On federato in Microsoft Entra ID