Schnellstart: Azure Key Vault-Zertifikatclientbibliothek für .NET (SDK v4)

Hier finden Sie Informationen zu den ersten Schritten mit der Azure Key Vault-Zertifikatclientbibliothek für .NET. Azure Key Vault ist ein Clouddienst, der als sicherer Speicher für Zertifikate fungiert. Dadurch können Schlüssel, Kennwörter, Zertifikate und andere Geheimnisse sicher gespeichert werden. Azure Key Vault-Instanzen können über das Azure-Portal erstellt und verwaltet werden. In dieser Schnellstartanleitung erfahren Sie, wie Sie mithilfe der .NET-Clientbibliothek Zertifikate in einem Azure-Schlüsseltresor erstellen, daraus abrufen und löschen.

Ressourcen der Key Vault-Clientbibliothek:

API-Referenzdokumentation | Quellcode der Bibliothek | Paket (NuGet)

Weitere Informationen zu Key Vault und Zertifikaten finden Sie unter folgenden Links:

Voraussetzungen

In dieser Schnellstartanleitung werden dotnet und die Azure CLI verwendet.

Einrichten

In dieser Schnellstartanleitung wird die Azure Identity-Bibliothek mit der Azure CLI verwendet, um den Benutzer bei Azure-Diensten zu authentifizieren. Entwickler können auch Visual Studio oder Visual Studio Code verwenden, um ihre Aufrufe zu authentifizieren. Weitere Informationen finden Sie unter Authentifizieren des Clients mit der Azure Identity-Clientbibliothek.

Anmelden bei Azure

  1. Führen Sie den Befehl login aus.

    az login
    

    Die CLI öffnet Ihren Standardbrowser, sofern sie dazu in der Lage ist, und lädt eine Azure-Anmeldeseite.

    Öffnen Sie andernfalls die Browserseite https://aka.ms/devicelogin, und geben Sie den in Ihrem Terminal angezeigten Autorisierungscode ein.

  2. Melden Sie sich im Browser mit Ihren Anmeldeinformationen an.

Gewähren des Zugriffs auf Ihren Schlüsseltresor

Erstellen Sie eine Zugriffsrichtlinie für Ihren Schlüsseltresor, die Ihrem Benutzerkonto Zertifikatberechtigungen erteilt:

az keyvault set-policy --name <your-key-vault-name> --upn user@domain.com --certificate-permissions delete get list create purge

Erstellen einer neuen .NET-Konsolen-App

  1. Führen Sie in einer Befehlsshell den folgenden Befehl aus, um ein Projekt namens key-vault-console-app zu erstellen:

    dotnet new console --name key-vault-console-app
    
  2. Wechseln Sie zum neu erstellten Verzeichnis key-vault-console-app, und führen Sie den folgenden Befehl aus, um das Projekt zu erstellen:

    dotnet build
    

    Die Buildausgabe sollte keine Warnungen oder Fehler enthalten.

    Build succeeded.
     0 Warning(s)
     0 Error(s)
    

Installieren der Pakete

Installieren Sie über die Befehlsshell die Azure Key Vault-Zertfikatclientbibliothek für .NET:

dotnet add package Azure.Security.KeyVault.Certificates

Für diese Schnellstartanleitung müssen Sie auch die Azure SDK-Clientbibliothek für Azure Identity installieren:

dotnet add package Azure.Identity

Festlegen von Umgebungsvariablen

Diese Anwendung verwendet den Namen des Schlüsseltresors als Umgebungsvariable namens KEY_VAULT_NAME.

Windows

set KEY_VAULT_NAME=<your-key-vault-name>

Windows PowerShell

$Env:KEY_VAULT_NAME="<your-key-vault-name>"

macOS oder Linux

export KEY_VAULT_NAME=<your-key-vault-name>

Objektmodell

Mit der Azure Key Vault-Zertifikatclientbibliothek für .NET können Sie Zertifikate verwalten. Im Abschnitt Codebeispiele wird veranschaulicht, wie Sie einen Client erstellen und ein Zertifikat festlegen, abrufen und löschen.

Codebeispiele

Hinzufügen von Anweisungen

Fügen Sie am Anfang von Program.cs die folgenden Anweisungen hinzu:

using System;
using Azure.Identity;
using Azure.Security.KeyVault.Certificates;

Authentifizieren und Erstellen eines Clients

In dieser Schnellstartanleitung wird der angemeldete Benutzer zum Authentifizieren beim Schlüsseltresor verwendet. Dies ist die bevorzugte Methode für die lokale Entwicklung. Bei Anwendungen, die in Azure bereitgestellt werden, sollte die verwaltete Identität App Service oder einem virtuellen Computer zugewiesen werden. Weitere Informationen finden Sie in der Übersicht zu verwalteten Identitäten.

Im folgenden Beispiel wird der Name Ihres Schlüsseltresors in den Schlüsseltresor-URI mit dem Format „https://<your-key-vault-name>.vault.azure.net“ erweitert. In diesem Beispiel wird die Klasse DefaultAzureCredential() aus der Azure Identity-Bibliothek verwendet, wodurch der gleiche Code in verschiedenen Umgebungen mit verschiedenen Optionen für die Identitätsbereitstellung verwendet werden kann. Weitere Informationen zur Authentifizierung beim Schlüsseltresor finden Sie im Entwicklerhandbuch.

string keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME");
var kvUri = "https://" + keyVaultName + ".vault.azure.net";

var client = new CertificateClient(new Uri(kvUri), new DefaultAzureCredential());

Speichern eines Zertifikats

In diesem Beispiel können Sie der Einfachheit halber das selbstsignierte Zertifikat mit der Standardausstellungsrichtlinie verwenden. Verwenden Sie für diese Aufgabe die StartCreateCertificateAsync-Methode. Die Parameter der Methode akzeptieren einen Zertifikatnamen und die Zertifikatrichtlinie.

var operation = await client.StartCreateCertificateAsync("myCertificate", CertificatePolicy.Default);
var certificate = await operation.WaitForCompletionAsync();

Hinweis

Ist der Zertifikatname vorhanden, erstellt der obige Code eine neue Version dieses Zertifikats.

Abrufen eines Zertifikats

Nun können Sie das zuvor erstellte Zertifikat mithilfe der GetCertificateAsync-Methode abrufen.

var certificate = await client.GetCertificateAsync("myCertificate");

Löschen eines Zertifikats

Abschließend löschen Sie den Schlüssel mit der Methode StartDeleteCertificateAsync aus Ihrem Schlüsseltresor und bereinigen ihn mit der Methode 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");

Beispielcode

Führen Sie die folgenden Schritte aus, um die .NET Core-Konsolen-App so zu ändern, dass Sie mit dem Schlüsseltresor interagiert:

  • Ersetzen Sie den Code in Program.cs durch den folgenden Code:

    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.");
            }
        }
    }
    

Testen und Überprüfen

Ausführen des folgenden Befehls zum Erstellen des Projekts

dotnet build

Eine Variation der folgenden Ausgabe wird angezeigt:

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ächste Schritte

In dieser Schnellstartanleitung haben Sie einen Schlüsseltresor erstellt, ein Zertifikat gespeichert und dieses Zertifikat abgerufen.

Weitere Informationen zu Key Vault und zur Integration in Ihre Apps finden Sie in den folgenden Artikeln: