Azure Key Vault-Zertifikatclientbibliothek für .NET– Version 4.5.1
Azure Key Vault ist ein Clouddienst, der eine sichere Speicherung und automatisierte Verwaltung von Zertifikaten ermöglicht, die in einer Cloudanwendung verwendet werden. Mehrere Zertifikate und mehrere Versionen desselben Zertifikats können im Azure-Key Vault beibehalten werden. Jedem Zertifikat im Tresor ist eine Richtlinie zugeordnet, die die Ausstellung und Lebensdauer des Zertifikats sowie Aktionen steuert, die als Zertifikate kurz vor Ablauf ausgeführt werden sollen.
Die Clientbibliothek für Azure Key Vault Zertifikate ermöglicht die programmgesteuerte Verwaltung von Zertifikaten und bietet Methoden zum Erstellen, Aktualisieren, Auflisten und Löschen von Zertifikaten, Richtlinien, Ausstellern und Kontakten. Die Bibliothek unterstützt auch die Verwaltung ausstehender Zertifikatvorgänge und die Verwaltung gelöschter Zertifikate.
Quellcode | Paket (NuGet) | API-Referenzdokumentation | Produktdokumentation | Proben | Migrationshandbuch
Erste Schritte
Installieren des Pakets
Installieren Sie die Clientbibliothek für Azure Key Vault-Zertifikate für .NET mit NuGet:
dotnet add package Azure.Security.KeyVault.Certificates
Voraussetzungen
- Ein Azure-Abonnement.
- Eine vorhandene Azure Key Vault. Wenn Sie eine Azure Key Vault erstellen müssen, können Sie das Azure-Portal oder die Azure CLI verwenden.
- Autorisierung für eine vorhandene Azure-Key Vault entweder mithilfe der RBAC (empfohlen) oder der Zugriffssteuerung.
Wenn Sie die Azure CLI verwenden, ersetzen <your-resource-group-name>
Sie und <your-key-vault-name>
durch Ihre eigenen, eindeutigen Namen:
az keyvault create --resource-group <your-resource-group-name> --name <your-key-vault-name>
Authentifizieren des Clients
Um mit dem Azure Key Vault-Dienst zu interagieren, müssen Sie eine instance der CertificateClient-Klasse erstellen. Sie benötigen eine Tresor-URL, die im Portal möglicherweise als "DNS-Name" angezeigt wird, und Anmeldeinformationen, um ein Clientobjekt zu instanziieren.
In den unten gezeigten Beispielen wird ein DefaultAzureCredential
verwendet, das für die meisten Szenarien geeignet ist, einschließlich lokaler Entwicklungs- und Produktionsumgebungen.
Darüber hinaus wird empfohlen, eine verwaltete Identität für die Authentifizierung in Produktionsumgebungen zu verwenden.
Weitere Informationen zu verschiedenen Authentifizierungsmethoden und den entsprechenden Anmeldeinformationstypen finden Sie in der Dokumentation zu Azure Identity .
Um den DefaultAzureCredential
unten gezeigten Anbieter oder andere Anmeldeinformationsanbieter zu verwenden, die mit dem Azure SDK bereitgestellt werden, müssen Sie zuerst das Azure.Identity-Paket installieren:
dotnet add package Azure.Identity
Erstellen von CertificateClient
Instanziieren Sie eine DefaultAzureCredential
, um sie an den Client zu übergeben.
Die gleiche instance einer Tokenanmeldeinformation kann mit mehreren Clients verwendet werden, wenn sie sich mit derselben Identität authentifizieren.
// Create a new certificate client using the default credential from Azure.Identity using environment variables previously set,
// including AZURE_CLIENT_ID, AZURE_CLIENT_SECRET, and AZURE_TENANT_ID.
var client = new CertificateClient(vaultUri: new Uri(vaultUrl), credential: new DefaultAzureCredential());
Wichtige Begriffe
KeyVaultCertificate
Ein KeyVaultCertificate
ist die grundlegende Ressource in Azure Key Vault. Sie verwenden Zertifikate, um verschlüsselte oder signierte Daten zu verschlüsseln und zu überprüfen.
CertificateClient
Mit einem CertificateClient
können Sie Zertifikate aus dem Tresor abrufen, neue Zertifikate und neue Versionen vorhandener Zertifikate erstellen, Zertifikatmetadaten aktualisieren und Zertifikate löschen. Sie können auch Zertifikataussteller, Kontakte und Verwaltungsrichtlinien von Zertifikaten verwalten. Dies wird in den folgenden Beispielen veranschaulicht.
Threadsicherheit
Wir garantieren, dass alle Client-instance Methoden threadsicher und voneinander unabhängig sind (Richtlinie). Dadurch wird sichergestellt, dass die Empfehlung, Clientinstanzen wiederzuverwenden, immer sicher ist, auch über Threads hinweg.
Zusätzliche Konzepte
Clientoptionen | Zugreifen auf die Antwort | Vorgänge | mit langer AusführungsdauerBehandeln von Fehlern | Diagnose | Spott | Clientlebensdauer
Beispiele
Das Paket Azure.Security.KeyVault.Certificates unterstützt synchrone und asynchrone APIs.
Der folgende Abschnitt enthält mehrere Codeausschnitte, die das client
oben erstellte verwenden, wobei einige der häufigsten Azure Key Vault-Zertifikatdienstaufgaben behandelt werden:
Synchronisierungsbeispiele
- Ein Zertifikat erstellen
- Abrufen eines Zertifikats
- Aktualisieren eines vorhandenen Zertifikats
- Auflisten von Zertifikaten
- Ein Zertifikat löschen
Asynchrone Beispiele
- Asynchrones Erstellen eines Zertifikats
- Asynchrones Auflisten von Zertifikaten
- Asynchrones Löschen eines Zertifikats
Erstellen eines Zertifikats
StartCreateCertificate
erstellt ein Zertifikat, das im Azure-Key Vault gespeichert werden soll. Wenn bereits ein Zertifikat mit demselben Namen vorhanden ist, wird eine neue Version des Zertifikats erstellt.
Beim Erstellen des Zertifikats kann der Benutzer die Richtlinie angeben, die die Zertifikatlebensdauer steuert. Wenn keine Richtlinie angegeben ist, wird die Standardrichtlinie verwendet. Der StartCreateCertificate
Vorgang gibt einen CertificateOperation
zurück. Im folgenden Beispiel wird ein selbstsigniertes Zertifikat mit der Standardrichtlinie erstellt.
// Create a certificate. This starts a long running operation to create and sign the certificate.
CertificateOperation operation = client.StartCreateCertificate("MyCertificate", CertificatePolicy.Default);
// You can await the completion of the create certificate operation.
// You should run UpdateStatus in another thread or do other work like pumping messages between calls.
while (!operation.HasCompleted)
{
Thread.Sleep(2000);
operation.UpdateStatus();
}
KeyVaultCertificateWithPolicy certificate = operation.Value;
HINWEIS: Abhängig vom Zertifikataussteller und den Validierungsmethoden kann die Erstellung und Signatur von Zertifikaten unbestimmte Zeit in Anspruch nehmen. Benutzer sollten nur auf Zertifikatvorgänge warten, wenn der Vorgang vernünftigerweise im Bereich der Anwendung abgeschlossen werden kann, z. B. mit selbstsignierten Zertifikaten oder Ausstellern mit bekannten Antwortzeiten.
Abrufen eines Zertifikats
GetCertificate
ruft die neueste Version eines Zertifikats ab, das im Azure-Key Vault gespeichert ist, zusammen mit CertificatePolicy
seiner .
KeyVaultCertificateWithPolicy certificateWithPolicy = client.GetCertificate("MyCertificate");
GetCertificateVersion
ruft eine bestimmte Version eines Zertifikats im Tresor ab.
KeyVaultCertificate certificate = client.GetCertificateVersion(certificateWithPolicy.Name, certificateWithPolicy.Properties.Version);
Aktualisieren eines vorhandenen Zertifikats
UpdateCertificate
aktualisiert ein im Azure-Key Vault gespeichertes Zertifikat.
CertificateProperties certificateProperties = new CertificateProperties(certificate.Id);
certificateProperties.Tags["key1"] = "value1";
KeyVaultCertificate updated = client.UpdateCertificateProperties(certificateProperties);
Auflisten von Zertifikaten
GetCertificates
Listet die Zertifikate im Tresor auf und gibt ausgewählte Eigenschaften des Zertifikats zurück. Vertrauliche Felder des Zertifikats werden nicht zurückgegeben. Für diesen Vorgang ist die Berechtigung zertifikate/listen erforderlich.
Pageable<CertificateProperties> allCertificates = client.GetPropertiesOfCertificates();
foreach (CertificateProperties certificateProperties in allCertificates)
{
Console.WriteLine(certificateProperties.Name);
}
Löschen eines Zertifikats
DeleteCertificate
löscht alle Versionen eines Zertifikats, das im Azure-Key Vault gespeichert ist. Wenn vorläufiges Löschen für die Azure-Key Vault nicht aktiviert ist, wird das Zertifikat durch diesen Vorgang endgültig gelöscht. Wenn vorläufiges Löschen aktiviert ist, wird das Zertifikat zum Löschen markiert und kann optional bis zum geplanten Löschdatum gelöscht oder wiederhergestellt werden.
DeleteCertificateOperation operation = client.StartDeleteCertificate("MyCertificate");
// You only need to wait for completion if you want to purge or recover the certificate.
// You should call `UpdateStatus` in another thread or after doing additional work like pumping messages.
while (!operation.HasCompleted)
{
Thread.Sleep(2000);
operation.UpdateStatus();
}
DeletedCertificate certificate = operation.Value;
client.PurgeDeletedCertificate(certificate.Name);
Asynchrones Erstellen eines Zertifikats
Die asynchronen APIs sind mit ihren synchronen Entsprechungen identisch, geben jedoch mit dem typischen Suffix "Async" für asynchrone Methoden zurück und geben ein Task
zurück.
In diesem Beispiel wird ein Zertifikat im Azure-Key Vault mit den angegebenen optionalen Argumenten erstellt.
// Create a certificate. This starts a long running operation to create and sign the certificate.
CertificateOperation operation = await client.StartCreateCertificateAsync("MyCertificate", CertificatePolicy.Default);
// You can await the completion of the create certificate operation.
KeyVaultCertificateWithPolicy certificate = await operation.WaitForCompletionAsync();
Asynchrones Auflisten von Zertifikaten
Das Auflisten des Zertifikats basiert nicht auf dem Warten auf die GetPropertiesOfCertificatesAsync
-Methode, sondern gibt eine zurück AsyncPageable<CertificateProperties>
, die Sie mit der await foreach
-Anweisung verwenden können:
AsyncPageable<CertificateProperties> allCertificates = client.GetPropertiesOfCertificatesAsync();
await foreach (CertificateProperties certificateProperties in allCertificates)
{
Console.WriteLine(certificateProperties.Name);
}
Asynchrones Löschen eines Zertifikats
Wenn Sie ein Zertifikat asynchron löschen, bevor Sie es löschen, können Sie die WaitForCompletionAsync
-Methode für den Vorgang abwarten.
Standardmäßig wird diese Schleife auf unbestimmte Zeit ausgeführt, aber Sie können sie abbrechen, indem Sie einen CancellationToken
übergeben.
DeleteCertificateOperation operation = await client.StartDeleteCertificateAsync("MyCertificate");
// You only need to wait for completion if you want to purge or recover the certificate.
await operation.WaitForCompletionAsync();
DeletedCertificate certificate = operation.Value;
await client.PurgeDeletedCertificateAsync(certificate.Name);
Problembehandlung
Ausführliche Informationen zur Diagnose verschiedener Fehlerszenarien finden Sie in unserem Leitfaden zur Problembehandlung .
Allgemein
Wenn Sie mit der Clientbibliothek für Azure Key Vault-Zertifikate mithilfe des .NET SDK interagieren, entsprechen vom Dienst zurückgegebene Fehler denselben HTTP-status Codes, die für REST-API-Anforderungen zurückgegeben werden.
Wenn Sie beispielsweise versuchen, einen Schlüssel abzurufen, der in Ihrer Azure-Key Vault nicht vorhanden ist, wird ein 404
Fehler zurückgegeben, der angibtNot Found
.
try
{
KeyVaultCertificateWithPolicy certificateWithPolicy = client.GetCertificate("SomeCertificate");
}
catch (RequestFailedException ex)
{
Console.WriteLine(ex.ToString());
}
Sie werden feststellen, dass zusätzliche Informationen protokolliert werden, z. B. die Clientanforderungs-ID des Vorgangs.
Message:
Azure.RequestFailedException : Service request failed.
Status: 404 (Not Found)
Content:
{"error":{"code":"CertificateNotFound","message":"Certificate not found: MyCertificate"}}
Headers:
Cache-Control: no-cache
Pragma: no-cache
Server: Microsoft-IIS/10.0
x-ms-keyvault-region: westus
x-ms-request-id: 625f870e-10ea-41e5-8380-282e5cf768f2
x-ms-keyvault-service-version: 1.1.0.866
x-ms-keyvault-network-info: addr=131.107.174.199;act_addr_fam=InterNetwork;
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Strict-Transport-Security: max-age=31536000;includeSubDomains
X-Content-Type-Options: nosniff
Date: Tue, 18 Jun 2019 16:02:11 GMT
Content-Length: 75
Content-Type: application/json; charset=utf-8
Expires: -1
Nächste Schritte
In diesem GitHub-Repository stehen Ihnen mehrere Beispiele für die Clientbibliothek von Azure Key Vault-Zertifikaten zur Verfügung. Diese Beispiele enthalten Beispielcode für zusätzliche Szenarien, die häufig bei der Arbeit mit Azure Key Vault auftreten:
Sample1_HelloWorld.md– für die Arbeit mit Azure Key Vault-Zertifikaten, einschließlich:
- Erstellen eines Zertifikats
- Abrufen eines vorhandenen Zertifikats
- Aktualisieren eines vorhandenen Zertifikats
- Löschen eines Zertifikats
Sample2_GetCertificates.md: Beispielcode für die Arbeit mit Azure Key Vault-Zertifikaten, einschließlich:
- Erstellen von Zertifikaten
- Auflisten aller Zertifikate im Key Vault
- Auflisten von Versionen eines angegebenen Zertifikats
- Löschen von Zertifikaten aus dem Key Vault
- Auflisten gelöschter Zertifikate im Key Vault
Zusätzliche Dokumentation
- Eine ausführlichere Dokumentation zu Azure Key Vault finden Sie in der API-Referenzdokumentation.
- Informationen zur Secrets-Clientbibliothek finden Sie unter Secrets-Clientbibliothek.
- Informationen zur Schlüsselclientbibliothek finden Sie unter Schlüsselclientbibliothek.
Mitwirken
Weitere Informationen zum Erstellen, Testen und Mitwirken zu diesen Bibliotheken finden Sie im CONTRIBUTING.md .
Beiträge und Vorschläge für dieses Projekt sind willkommen. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. Ausführliche Informationen finden Sie unter https://cla.microsoft.com.
Wenn Sie einen Pull Request (PR) übermitteln, überprüft ein CLA-Bot automatisch, ob Sie eine Lizenzvereinbarung bereitstellen und den PR entsprechend ergänzen müssen (z.B. mit einer Bezeichnung oder einem Kommentar). Führen Sie einfach die Anweisungen des Bots aus. Sie müssen dies nur einmal für alle Repositorys ausführen, die unsere CLA verwenden.
Für dieses Projekt gelten die Microsoft-Verhaltensregeln für Open Source (Microsoft Open Source Code of Conduct). Weitere Informationen finden Sie in den häufig gestellten Fragen zum Verhaltenskodex. Sie können sich auch an opencode@microsoft.com wenden, wenn Sie weitere Fragen oder Anmerkungen haben.
Azure SDK for .NET