Azure Key Vault Tanúsítvány ügyfélkódtár a .NET-hez – 4.5.1-es verzió
Az Azure Key Vault egy felhőalapú szolgáltatás, amely biztonságos tárolást és a felhőalkalmazásokban használt tanúsítványok automatizált kezelését biztosítja. Az Azure Key Vault több tanúsítvány és ugyanazon tanúsítvány több verziója is megőrizhető. A tároló minden tanúsítványához tartozik egy szabályzat, amely szabályozza a tanúsítvány kiállítását és élettartamát, valamint a lejárat előtt végrehajtandó tanúsítványként végrehajtandó műveleteket.
Az Azure Key Vault-tanúsítványok ügyfélkódtára lehetővé teszi a tanúsítványok programozott kezelését, és metódusokat kínál a tanúsítványok, szabályzatok, kiállítók és névjegyek létrehozásához, frissítéséhez, listázásához és törléséhez. A kódtár támogatja a függőben lévő tanúsítványműveletek és a törölt tanúsítványok kezelését is.
Forráskód | Csomag (NuGet) | API-referenciadokumentáció | Termékdokumentáció | Minták | Migrálási útmutató
Első lépések
A csomag telepítése
Telepítse az Azure Key Vault certificates ügyfélkódtárat a .NET-hez a NuGet használatával:
dotnet add package Azure.Security.KeyVault.Certificates
Előfeltételek
- Egy Azure-előfizetés.
- Egy meglévő Azure-Key Vault. Ha létre kell hoznia egy Azure-Key Vault, használhatja az Azure Portalt vagy az Azure CLI-t.
- Engedélyezés meglévő Azure-Key Vault RBAC használatával (ajánlott) vagy hozzáférés-vezérléssel.
Ha az Azure CLI-t használja, cserélje le <your-resource-group-name>
a és <your-key-vault-name>
a nevet a saját egyedi nevére:
az keyvault create --resource-group <your-resource-group-name> --name <your-key-vault-name>
Az ügyfél hitelesítése
Az Azure Key Vault szolgáltatás használatához létre kell hoznia a CertificateClient osztály egy példányát. Szüksége van egy tároló URL-címére, amelyet "DNS-név" néven láthat a portálon, valamint hitelesítő adatokra egy ügyfélobjektum példányosításához.
Az alábbi példákban egy DefaultAzureCredential
, a legtöbb forgatókönyvnek megfelelő , beleértve a helyi fejlesztési és éles környezeteket is.
Emellett azt is javasoljuk, hogy felügyelt identitást használjon a hitelesítéshez éles környezetben.
A hitelesítés különböző módjairól és a hozzájuk tartozó hitelesítő adatok típusairól az Azure Identity dokumentációjában talál további információt.
Az alább látható szolgáltató vagy az DefaultAzureCredential
Azure SDK-hoz biztosított egyéb hitelesítőadat-szolgáltatók használatához először telepítenie kell az Azure.Identity csomagot:
dotnet add package Azure.Identity
CertificateClient létrehozása
Példányosítsa az a-t DefaultAzureCredential
az ügyfélnek való továbbításhoz.
A jogkivonat hitelesítő adatainak ugyanazon példánya több ügyféllel is használható, ha ugyanazzal az identitással hitelesíti őket.
// 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());
Fő fogalmak
KeyVaultCertificate
Az A KeyVaultCertificate
az Azure Key Vault alapvető erőforrása. A tanúsítványok használatával titkosíthatja és ellenőrizheti a titkosított vagy aláírt adatokat.
CertificateClient
CertificateClient
A tárolóból tanúsítványokat szerezhet be, új tanúsítványokat és meglévő tanúsítványok új verzióit hozhat létre, frissítheti a tanúsítvány metaadatait, és törölheti a tanúsítványokat. A tanúsítványok tanúsítványkibocsátóit, névjegyeit és felügyeleti szabályzatait is kezelheti. Ezt az alábbi példák szemléltetik.
Menetbiztonság
Garantáljuk, hogy minden ügyfélpéldány-metódus szálbiztos és független egymástól (iránymutatás). Ez biztosítja, hogy az ügyfélpéldányok újrafelhasználására vonatkozó javaslat mindig biztonságos legyen, még a szálak között is.
További fogalmak
Ügyfélbeállítások | A válasz | elérése Hosszú ideig futó műveletek | Hibák | kezelése Diagnosztika | Gúnyos | Ügyfélélettartam
Példák
Az Azure.Security.KeyVault.Certificates csomag támogatja a szinkron és aszinkron API-kat.
A következő szakasz a fent létrehozott kódrészleteket tartalmazzaclient
, amelyek az Azure Key Vault tanúsítványszolgáltatással kapcsolatos leggyakoribb feladatokat ismertetik:
Példák szinkronizálása
- Tanúsítvány létrehozása
- Tanúsítvány lekérése
- Meglévő tanúsítvány frissítése
- Tanúsítványok listázása
- Tanúsítvány törlése
Példák aszinkronizálásra
- Tanúsítvány létrehozása aszinkron módon
- Tanúsítványok aszinkron listázása
- Tanúsítvány aszinkron törlése
Tanúsítvány létrehozása
StartCreateCertificate
létrehoz egy tanúsítványt, amely az Azure Key Vault tárolandó. Ha már létezik azonos nevű tanúsítvány, akkor létrejön a tanúsítvány új verziója.
A tanúsítvány létrehozásakor a felhasználó megadhatja a tanúsítvány élettartamát szabályozó szabályzatot. Ha nincs megadva szabályzat, a rendszer az alapértelmezett szabályzatot használja. A StartCreateCertificate
művelet egy értéket CertificateOperation
ad vissza. Az alábbi példa létrehoz egy önaláírt tanúsítványt az alapértelmezett szabályzattal.
// 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;
MEGJEGYZÉS: A tanúsítványkibocsátótól és az érvényesítési módszerektől függően a tanúsítvány létrehozása és aláírása határozatlan ideig tarthat. A felhasználók csak akkor várnak a tanúsítványműveletekre, ha a művelet ésszerűen elvégezhető az alkalmazás hatókörében, például önaláírt tanúsítványokkal vagy jól ismert válaszidővel rendelkező kiállítókkal.
Tanúsítvány lekérése
GetCertificate
Lekéri az Azure Key Vault tárolt tanúsítvány legújabb verzióját a hozzá CertificatePolicy
tartozóval együtt.
KeyVaultCertificateWithPolicy certificateWithPolicy = client.GetCertificate("MyCertificate");
GetCertificateVersion
lekéri a tanúsítvány egy adott verzióját a tárolóban.
KeyVaultCertificate certificate = client.GetCertificateVersion(certificateWithPolicy.Name, certificateWithPolicy.Properties.Version);
Meglévő tanúsítvány frissítése
UpdateCertificate
frissíti az Azure Key Vault tárolt tanúsítványt.
CertificateProperties certificateProperties = new CertificateProperties(certificate.Id);
certificateProperties.Tags["key1"] = "value1";
KeyVaultCertificate updated = client.UpdateCertificateProperties(certificateProperties);
Tanúsítványok listázása
GetCertificates
számba adja a tárolóban lévő tanúsítványokat, és visszaadja a tanúsítvány kiválasztott tulajdonságait. A rendszer nem adja vissza a tanúsítvány bizalmas mezőit. Ehhez a művelethez a tanúsítványok/listák engedélyére van szükség.
Pageable<CertificateProperties> allCertificates = client.GetPropertiesOfCertificates();
foreach (CertificateProperties certificateProperties in allCertificates)
{
Console.WriteLine(certificateProperties.Name);
}
Tanúsítvány törlése
DeleteCertificate
törli az Azure Key Vault tárolt tanúsítvány összes verzióját. Ha a helyreállítható törlés nincs engedélyezve az Azure Key Vault esetében, ez a művelet véglegesen törli a tanúsítványt. Ha a helyreállítható törlés engedélyezve van, a tanúsítvány törlésre van megjelölve, és igény szerint törölhető vagy helyreállítható az ütemezett végleges törlési dátumig.
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);
Tanúsítvány létrehozása aszinkron módon
Az aszinkron API-k megegyeznek a szinkron megfelelőikkel, de az aszinkron metódusok tipikus "Async" utótagjával térnek vissza, és visszaadnak egy Task
.
Ez a példa létrehoz egy tanúsítványt az Azure Key Vault a megadott választható argumentumokkal.
// 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();
Tanúsítványok aszinkron listázása
A listatanúsítvány nem a metódusra GetPropertiesOfCertificatesAsync
vár, hanem az utasítással await foreach
használható értéket AsyncPageable<CertificateProperties>
ad vissza:
AsyncPageable<CertificateProperties> allCertificates = client.GetPropertiesOfCertificatesAsync();
await foreach (CertificateProperties certificateProperties in allCertificates)
{
Console.WriteLine(certificateProperties.Name);
}
Tanúsítvány aszinkron törlése
Ha aszinkron módon töröl egy tanúsítványt, mielőtt véglegesítené, megvárhatja a metódust WaitForCompletionAsync
a műveletben.
Alapértelmezés szerint ez a hurok határozatlan ideig működik, de egy parancs átadásával CancellationToken
megszakíthatja azt.
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);
Hibaelhárítás
A különböző hibaforgatókönyvek diagnosztizálásával kapcsolatos részletekért tekintse meg a hibaelhárítási útmutatónkat .
Általános kérdések
Amikor az Azure Key Vault tanúsítványok ügyfélkódtárával a .NET SDK-t használja, a szolgáltatás által visszaadott hibák megegyeznek a REST API-kérésekhez visszaadott HTTP-állapotkódokkal.
Ha például olyan kulcsot próbál lekérni, amely nem létezik az Azure Key Vault, a 404
rendszer hibát ad vissza, amely Not Found
azt jelzi, hogy .
try
{
KeyVaultCertificateWithPolicy certificateWithPolicy = client.GetCertificate("SomeCertificate");
}
catch (RequestFailedException ex)
{
Console.WriteLine(ex.ToString());
}
Megfigyelheti, hogy a rendszer további információkat naplóz, például a művelet ügyfélkérési azonosítóját.
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
Következő lépések
Ebben a GitHub-adattárban számos Azure Key Vault-tanúsítvány ügyfélkódtár-minta érhető el. Ezek a minták az Azure-Key Vault használata során gyakran előforduló további forgatókönyvekhez nyújtanak példakódot:
Sample1_HelloWorld.md – Az Azure Key Vault-tanúsítványokkal való munkához, beleértve a következőket:
- Tanúsítvány létrehozása
- Meglévő tanúsítvány lekérése
- Meglévő tanúsítvány frissítése
- Tanúsítvány törlése
Sample2_GetCertificates.md – Példakód az Azure-Key Vault-tanúsítványok használatára, beleértve a következőket:
- Tanúsítványok létrehozása
- Az Key Vault összes tanúsítványának listázása
- Adott tanúsítvány verzióinak listázása
- Tanúsítványok törlése a Key Vault
- Törölt tanúsítványok listázása a Key Vault
További dokumentáció
- Az Azure Key Vault részletesebb dokumentációját az API referenciadokumentációjában találja.
- A Titkos ügyfélkódtárakért lásd: Titkos ügyfélkódtár.
- A Kulcsok ügyfélkódtárat lásd: Kulcsok ügyfélkódtár.
Közreműködés
A kódtárak létrehozásával, tesztelésével és közreműködésével kapcsolatos részletekért tekintse meg a CONTRIBUTING.md.
A projektben szívesen fogadjuk a hozzájárulásokat és a javaslatokat. A legtöbb hozzájáruláshoz el kell fogadnia egy Közreműködői licencszerződést (CLA-t), amelyben kijelenti, hogy jogosult arra, hogy ránk ruházza hozzájárulása felhasználási jogát, és ezt ténylegesen meg is teszi. További részletekért lásd: https://cla.microsoft.com.
A lekéréses kérelmek elküldésekor egy CLA-robot automatikusan meghatározza, hogy kell-e biztosítania CLA-t, és megfelelően kitölti a lekéréses kérelmet (például címke, megjegyzés). Egyszerűen csak kövesse a robot által megadott utasításokat. Ezt csak egyszer kell elvégeznie az összes olyan tárházban, amely a CLA-t használja.
A projekt a Microsoft nyílt forráskódú projekteket szabályozó etikai kódexe, a Microsoft Open Source Code of Conduct hatálya alá esik. További információkért lásd a viselkedési szabályzattal kapcsolatos gyakori kérdéseket , vagy vegye fel a kapcsolatot opencode@microsoft.com az esetleges további kérdésekkel vagy megjegyzésekkel.
Azure SDK for .NET