Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Importante
A partire dal 28 luglio 2025, le modifiche apportate ai certificati gestiti del servizio app influiranno sul modo in cui i certificati vengono rilasciati e rinnovati in determinati scenari. Anche se la maggior parte dei clienti non deve intervenire, è consigliabile consultare il post di blog dettagliato di ASMC per altre informazioni.
Nel codice dell'applicazione è possibile accedere ai certificati pubblici o privati aggiunti al servizio app di Azure. Il codice dell'app può fungere da client e accedere a un servizio esterno che richiede l'autenticazione del certificato. Potrebbe anche essere necessario eseguire attività di crittografia. Questo articolo illustra come usare certificati pubblici o privati nel codice dell'applicazione.
Questo approccio all'uso dei certificati nel codice usa la funzionalità Tls (Transport Layer Security) nel servizio app, che richiede che l'app sia nel livello Basic o superiore. Se l'app si trova nel livello Gratuito o Condiviso, è possibile includere il file del certificato nel repository dell'app.
Quando si consente al servizio app di gestire i certificati TLS/Secure Sockets Layer (SSL), è possibile gestire i certificati e il codice dell'applicazione separatamente e proteggere i dati sensibili.
Prerequisiti
Per seguire questo articolo, vedere:
Trovare l'impronta digitale
Nel riquadro sinistro del portale di Azure, selezionare App Services><app-name>.
Nel riquadro sinistro dell'app selezionare Certificati. Selezionare quindi Bring your own certificates (.pfx) o Public key certificates (.cer).
Trovare il certificato da usare e copiare l'impronta digitale.

Rendere accessibile il certificato
Per accedere a un certificato nel codice dell'app, aggiungere l'impronta digitale nelle impostazioni dell'app WEBSITE_LOAD_CERTIFICATES. Eseguire il comando seguente in Azure Cloud Shell:
az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings WEBSITE_LOAD_CERTIFICATES=<comma-separated-certificate-thumbprints>
Per rendere accessibili tutti i certificati, impostare il valore su *.
Quando WEBSITE_LOAD_CERTIFICATES è impostato su *, tutti i certificati aggiunti in precedenza sono accessibili al codice dell'applicazione. Se si aggiunge un certificato all'app in un secondo momento, riavviare l'app per rendere il nuovo certificato accessibile all'app. Per altre informazioni, vedere Aggiornare o rinnovare un certificato.
Caricare i certificati nelle app di Windows
L'impostazione WEBSITE_LOAD_CERTIFICATES dell'app rende i certificati specificati accessibili all'app ospitata di Windows nell'archivio certificati di Windows, in Utente corrente\My.
Nel codice C# si accede al certificato utilizzando l'impronta digitale del certificato. Il codice seguente carica un certificato con l'impronta digitale E661583E8FABEF4C0BEF694CBC41C28FB81CD870.
using System;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
string certThumbprint = "E661583E8FABEF4C0BEF694CBC41C28FB81CD870";
bool validOnly = false;
using (X509Store certStore = new X509Store(StoreName.My, StoreLocation.CurrentUser))
{
certStore.Open(OpenFlags.ReadOnly);
X509Certificate2Collection certCollection = certStore.Certificates.Find(
X509FindType.FindByThumbprint,
// Replace below with your certificate's thumbprint
certThumbprint,
validOnly);
// Get the first cert with the thumbprint
X509Certificate2 cert = certCollection.OfType<X509Certificate2>().FirstOrDefault();
if (cert is null)
throw new Exception($"Certificate with thumbprint {certThumbprint} was not found");
// Use certificate
Console.WriteLine(cert.FriendlyName);
// Consider to call Dispose() on the certificate after it's being used, available in .NET 4.6 and later
}
Nel codice Java si accede al certificato dall'archivio Windows-MY usando il campo Nome comune soggetto . Per altre informazioni, vedere Certificato di chiave pubblica. Il codice seguente illustra come caricare un certificato di chiave privata:
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;
import java.security.KeyStore;
import java.security.cert.Certificate;
import java.security.PrivateKey;
...
KeyStore ks = KeyStore.getInstance("Windows-MY");
ks.load(null, null);
Certificate cert = ks.getCertificate("<subject-cn>");
PrivateKey privKey = (PrivateKey) ks.getKey("<subject-cn>", ("<password>").toCharArray());
// Use the certificate and key
...
Per le lingue che non supportano o offrono supporto insufficiente per l'archivio certificati di Windows, vedere Caricare un certificato da un file.
Caricare un certificato da un file
Se è necessario caricare manualmente un file di certificato, è preferibile caricare il certificato usando FTPS (File Transfer Protocol Secure) anziché Git, ad esempio. Mantenere i dati sensibili come un certificato privato fuori dal controllo del codice sorgente.
ASP.NET e ASP.NET Core in Windows devono accedere all'archivio certificati anche se si carica un certificato da un file. Per caricare un file di certificato in un'app .NET di Windows, caricare il profilo utente corrente con il comando seguente in Cloud Shell:
az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings WEBSITE_LOAD_USER_PROFILE=1
Questo approccio all'uso dei certificati nel codice usa la funzionalità TLS nel servizio app, che richiede che l'app sia nel livello Basic o superiore.
L'esempio C# seguente carica un certificato pubblico da un percorso relativo nell'app:
using System;
using System.IO;
using System.Security.Cryptography.X509Certificates;
...
var cert = X509CertificateLoader.LoadCertificateFromFile("~/<relative-path-to-cert-file>");
// Use the loaded certificate
Per informazioni su come caricare un certificato TLS/SSL da un file in Node.js, PHP, Python o Java, vedere la documentazione relativa al rispettivo linguaggio o piattaforma Web.
Caricare i certificati nei contenitori Linux/Windows
L'impostazione WEBSITE_LOAD_CERTIFICATES dell'app rende i certificati specificati accessibili ai contenitori personalizzati windows o Linux (inclusi i contenitori Linux predefiniti) come file. I file sono disponibili nelle directory seguenti:
| Piattaforma di contenitori | Certificati pubblici | Certificati privati |
|---|---|---|
| Contenitore Windows | C:\appservice\certificates\public |
C:\appservice\certificates\private |
| Contenitore Linux | /var/ssl/certs |
/var/ssl/private |
I nomi dei file dei certificati sono le impronte digitali dei certificati.
Annotazioni
Il servizio app inserisce i percorsi dei certificati nei contenitori di Windows come variabili di ambiente seguenti: WEBSITE_PRIVATE_CERTS_PATH, WEBSITE_INTERMEDIATE_CERTS_PATHWEBSITE_PUBLIC_CERTS_PATH, e WEBSITE_ROOT_CERTS_PATH. È preferibile fare riferimento al percorso del certificato con le variabili di ambiente anziché impostare come hardcoding il percorso del certificato, nel caso in cui i percorsi del certificato cambino in futuro.
Inoltre, i contenitori Windows Server Core e Windows Nano Server caricano automaticamente i certificati nell'archivio certificati, in LocalMachine\My. Per caricare i certificati, seguire lo stesso modello illustrato in Caricare i certificati nelle app di Windows. Per i contenitori basati su Windows Nano, usare i percorsi di file come illustrato in Caricare un certificato da un file.
Il codice C# seguente illustra come caricare un certificato pubblico in un'app Linux.
using System;
using System.IO;
using System.Security.Cryptography.X509Certificates;
...
var cert = X509CertificateLoader.LoadCertificateFromFile("/var/ssl/certs/<thumbprint>.der");
// Use the loaded certificate
Il codice C# seguente illustra come caricare un certificato privato in un'app Linux.
using System;
using System.IO;
using System.Security.Cryptography.X509Certificates;
...
var cert = X509CertificateLoader.LoadCertificateFromFile("/var/ssl/private/<thumbprint>.p12");
// Use the loaded certificate
Per informazioni su come caricare un certificato TLS/SSL da un file in Node.js, PHP, Python o Java, vedere la documentazione relativa al rispettivo linguaggio o piattaforma Web.
Aggiornare o rinnovare un certificato
Quando si rinnova un certificato e lo si aggiunge all'app, ottiene una nuova impronta digitale, che deve anche essere resa accessibile. Il funzionamento dipende dal tipo di certificato.
Se si carica manualmente il certificato pubblico o privato :
- Se si elencano le impronte digitali in modo esplicito in
WEBSITE_LOAD_CERTIFICATES, aggiungere la nuova impronta digitale nelle impostazioni dell'app. - Se
WEBSITE_LOAD_CERTIFICATESè impostato su*, riavviare l'app per rendere accessibile il nuovo certificato.
Se si rinnova un certificato in Azure Key Vault, ad esempio con un certificato del servizio app, la sincronizzazione giornaliera da Key Vault esegue automaticamente l'aggiornamento necessario quando l'app viene sincronizzata con il certificato rinnovato.
- Se
WEBSITE_LOAD_CERTIFICATEScontiene l'impronta digitale del certificato rinnovato, la sincronizzazione giornaliera aggiorna automaticamente l'impronta digitale vecchia a quella nuova. - Se
WEBSITE_LOAD_CERTIFICATESè impostato su*, la sincronizzazione giornaliera rende il nuovo certificato accessibile automaticamente.