Snabbstart: Azure Key Vault-certifikatklientbibliotek för .NET
Kom igång med Azure Key Vault-certifikatklientbiblioteket för .NET. Azure Key Vault är en molntjänst som tillhandahåller ett säkert arkiv för certifikat. Du kan på ett säkert sätt lagra nycklar, lösenord, certifikat och andra hemligheter. Du kan skapa och hantera Azure-nyckelvalv via Azure Portal. I den här snabbstarten får du lära dig hur du skapar, hämtar och tar bort certifikat från ett Azure-nyckelvalv med hjälp av .NET-klientbiblioteket.
Key Vault-klientbiblioteksresurser:
API-referensdokumentationEns källkodspaket | för bibliotek (NuGet) |
Mer information om Key Vault och certifikat finns i:
- Översikt över Key Vault
- Översikt över certifikat.
Förutsättningar
- En Azure-prenumeration – skapa en kostnadsfritt
- .NET 6 SDK eller senare
- Azure CLI
- Ett Key Vault – du kan skapa ett med hjälp av Azure Portal, Azure CLI eller Azure PowerShell.
Den här snabbstarten använder dotnet
och Azure CLI.
Ställ in
Den här snabbstarten använder Azure Identity-biblioteket med Azure CLI för att autentisera användare till Azure Services. Utvecklare kan också använda Visual Studio eller Visual Studio Code för att autentisera sina anrop. Mer information finns i Autentisera klienten med Azure Identity-klientbiblioteket.
Logga in på Azure
Kör kommandot
login
.az login
Om CLI kan öppna din standardwebbläsare kommer den att göra det och läsa in en Azure-inloggningssida.
Annars öppnar du en webbläsarsida på https://aka.ms/devicelogin och anger auktoriseringskoden som visas i terminalen.
Logga in med dina autentiseringsuppgifter för kontot i webbläsaren.
Bevilja åtkomst till ditt nyckelvalv
Om du vill få behörigheter till ditt nyckelvalv via rollbaserad åtkomstkontroll (RBAC) tilldelar du en roll till ditt UPN (User Principal Name) med hjälp av Azure CLI-kommandot az role assignment create.
az role assignment create --role "Key Vault Certificate Officer" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"
Ersätt <upn>, <subscription-id>, <resource-group-name> och <your-unique-keyvault-name> med dina faktiska värden. Ditt UPN är vanligtvis i formatet för en e-postadress (t.ex. username@domain.com).
Skapa ny .NET-konsolapp
I ett kommandogränssnitt kör du följande kommando för att skapa ett projekt med namnet
key-vault-console-app
:dotnet new console --name key-vault-console-app
Ändra till den nyligen skapade katalogen key-vault-console-app och kör följande kommando för att skapa projektet:
dotnet build
Kompileringsutdata får inte innehålla några varningar eller fel.
Build succeeded. 0 Warning(s) 0 Error(s)
Installera paketen
Från kommandogränssnittet installerar du Azure Key Vault-certifikatklientbiblioteket för .NET:
dotnet add package Azure.Security.KeyVault.Certificates
För den här snabbstarten måste du också installera Azure Identity-klientbiblioteket:
dotnet add package Azure.Identity
Ange miljövariabler
Programmet hämtar nyckelvalvets namn från en miljövariabel med namnet KEY_VAULT_NAME
.
Windows
set KEY_VAULT_NAME=<your-key-vault-name>
Windows PowerShell
$Env:KEY_VAULT_NAME="<your-key-vault-name>"
macOS eller Linux
export KEY_VAULT_NAME=<your-key-vault-name>
Objektmodell
Med Azure Key Vault-certifikatklientbiblioteket för .NET kan du hantera certifikat. I avsnittet Kodexempel visas hur du skapar en klient, anger ett certifikat, hämtar ett certifikat och tar bort ett certifikat.
Kodexempel
Lägga till direktiv
Lägg till följande direktiv överst i Program.cs:
using System;
using Azure.Identity;
using Azure.Security.KeyVault.Certificates;
Autentisera och skapa en klient
Programbegäranden till de flesta Azure-tjänster måste auktoriseras. Att använda klassen DefaultAzureCredential som tillhandahålls av Azure Identity-klientbiblioteket är den rekommenderade metoden för att implementera lösenordslösa anslutningar till Azure-tjänster i koden. DefaultAzureCredential
stöder flera autentiseringsmetoder och avgör vilken metod som ska användas vid körning. Med den här metoden kan din app använda olika autentiseringsmetoder i olika miljöer (lokalt jämfört med produktion) utan att implementera miljöspecifik kod.
I den här snabbstarten DefaultAzureCredential
autentiserar du till nyckelvalvet med autentiseringsuppgifterna för den lokala utvecklingsanvändare som är inloggad i Azure CLI. När programmet distribueras till Azure kan samma DefaultAzureCredential
kod automatiskt identifiera och använda en hanterad identitet som har tilldelats till en App Service, virtuell dator eller andra tjänster. Mer information finns i Översikt över hanterad identitet.
I det här exemplet expanderas namnet på ditt nyckelvalv till nyckelvalvets URI i formatet https://<your-key-vault-name>.vault.azure.net
. Mer information om autentisering till nyckelvalv finns i Utvecklarguide.
string keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME");
var kvUri = "https://" + keyVaultName + ".vault.azure.net";
var client = new CertificateClient(new Uri(kvUri), new DefaultAzureCredential());
Spara ett certifikat
I det här exemplet kan du för enkelhetens skull använda självsignerat certifikat med standardutfärdandeprincip. För den här uppgiften använder du metoden StartCreateCertificateAsync . Metodens parametrar accepterar ett certifikatnamn och certifikatprincipen.
var operation = await client.StartCreateCertificateAsync("myCertificate", CertificatePolicy.Default);
var certificate = await operation.WaitForCompletionAsync();
Kommentar
Om certifikatnamnet finns skapar koden en ny version av certifikatet.
Hämta ett certifikat
Nu kan du hämta det tidigare skapade certifikatet med metoden GetCertificateAsync .
var certificate = await client.GetCertificateAsync("myCertificate");
Ta bort ett certifikat
Slutligen tar vi bort och rensar certifikatet från nyckelvalvet med metoderna StartDeleteCertificateAsync och PurgeDeletedCertificateAsync .
var operation = await client.StartDeleteCertificateAsync("myCertificate");
// You only need to wait for completion if you want to purge or recover the certificate.
await operation.WaitForCompletionAsync();
var certificate = operation.Value;
await client.PurgeDeletedCertificateAsync("myCertificate");
Exempelkod
Ändra .NET-konsolappen så att den interagerar med Key Vault genom att utföra följande steg:
Ersätt koden i Program.cs med följande kod:
using System; using System.Threading.Tasks; using Azure.Identity; using Azure.Security.KeyVault.Certificates; namespace key_vault_console_app { class Program { static async Task Main(string[] args) { const string certificateName = "myCertificate"; var keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME"); var kvUri = $"https://{keyVaultName}.vault.azure.net"; var client = new CertificateClient(new Uri(kvUri), new DefaultAzureCredential()); Console.Write($"Creating a certificate in {keyVaultName} called '{certificateName}' ..."); CertificateOperation operation = await client.StartCreateCertificateAsync(certificateName, CertificatePolicy.Default); await operation.WaitForCompletionAsync(); Console.WriteLine(" done."); Console.WriteLine($"Retrieving your certificate from {keyVaultName}."); var certificate = await client.GetCertificateAsync(certificateName); Console.WriteLine($"Your certificate version is '{certificate.Value.Properties.Version}'."); Console.Write($"Deleting your certificate from {keyVaultName} ..."); DeleteCertificateOperation deleteOperation = await client.StartDeleteCertificateAsync(certificateName); // You only need to wait for completion if you want to purge or recover the certificate. await deleteOperation.WaitForCompletionAsync(); Console.WriteLine(" done."); Console.Write($"Purging your certificate from {keyVaultName} ..."); await client.PurgeDeletedCertificateAsync(certificateName); Console.WriteLine(" done."); } } }
Testa och verifiera
Kör följande kommando för att skapa projektet
dotnet build
En variant av följande utdata visas:
Creating a certificate in mykeyvault called 'myCertificate' ... done.
Retrieving your certificate from mykeyvault.
Your certificate version is '8532359bced24e4bb2525f2d2050738a'.
Deleting your certificate from mykeyvault ... done
Purging your certificate from mykeyvault ... done
Nästa steg
I den här snabbstarten skapade du ett nyckelvalv, lagrade ett certifikat och hämtade certifikatet.
Mer information om Key Vault och hur du integrerar det med dina appar finns i följande artiklar:
- Läs en översikt över Azure Key Vault
- Läs en översikt över certifikat
- Se en självstudiekurs om Att komma åt Key Vault från App Service-program
- Se en självstudiekurs om att komma åt key vault från virtuell dator
- Se utvecklarguiden för Azure Key Vault
- Granska säkerhetsöversikten för Key Vault