.NET için Azure Key Vault Sertifikası istemci kitaplığı - sürüm 4.5.1
Azure Key Vault, bir bulut uygulaması genelinde kullanılan sertifikaların güvenli bir şekilde depolanmasını ve otomatik olarak yönetilmesini sağlayan bir bulut hizmetidir. Birden çok sertifika ve aynı sertifikanın birden çok sürümü Azure Key Vault tutulabilir. Kasadaki her sertifika, sertifikanın verilmesini ve kullanım ömrünü denetleyen ve süresi dolmak üzere olan sertifikalar olarak gerçekleştirilecek eylemlerle ilişkili bir ilkeye sahiptir.
Azure Key Vault sertifikaları istemci kitaplığı sertifikaları program aracılığıyla yönetmeye olanak tanır ve sertifikaları, ilkeleri, verenleri ve kişileri oluşturma, güncelleştirme, listeleme ve silme yöntemleri sunar. Kitaplık ayrıca bekleyen sertifika işlemlerini yönetmeyi ve silinen sertifikaların yönetimini de destekler.
Kaynak kodu | Paket (NuGet) | API başvuru belgeleri | Ürün belgeleri | Örnekleri | Geçiş kılavuzu
Başlarken
Paketi yükleme
NuGet ile .NET için Azure Key Vault sertifikaları istemci kitaplığını yükleyin:
dotnet add package Azure.Security.KeyVault.Certificates
Ön koşullar
- Bir Azure aboneliği.
- Mevcut bir Azure Key Vault. Azure Key Vault oluşturmanız gerekiyorsa Azure Portal'ı veya Azure CLI'yı kullanabilirsiniz.
- RBAC (önerilir) veya erişim denetimi kullanarak mevcut bir Azure Key Vault yetkilendirme.
Azure CLI kullanıyorsanız ve <your-key-vault-name>
yerine kendi benzersiz adlarınızı yazın<your-resource-group-name>
:
az keyvault create --resource-group <your-resource-group-name> --name <your-key-vault-name>
İstemcinin kimliğini doğrulama
Azure Key Vault hizmetiyle etkileşim kurmak için CertificateClient sınıfının bir örneğini oluşturmanız gerekir. Portalda "DNS Adı" olarak görebileceğiniz bir kasa url'sine ve istemci nesnesinin örneğini oluşturmak için kimlik bilgilerine ihtiyacınız vardır.
Aşağıda gösterilen örneklerde, yerel geliştirme ve üretim ortamları dahil olmak üzere çoğu senaryo için uygun olan bir DefaultAzureCredential
kullanılır.
Ayrıca, üretim ortamlarında kimlik doğrulaması için yönetilen kimlik kullanmanızı öneririz.
Kimlik doğrulamanın farklı yolları ve bunların ilgili kimlik bilgileri türleri hakkında daha fazla bilgiyi Azure Kimliği belgelerinde bulabilirsiniz.
Aşağıda gösterilen sağlayıcıyı DefaultAzureCredential
veya Azure SDK ile sağlanan diğer kimlik bilgileri sağlayıcılarını kullanmak için önce Azure.Identity paketini yüklemeniz gerekir:
dotnet add package Azure.Identity
CertificateClient Oluşturma
İstemciye geçirmek için örneği DefaultAzureCredential
oluşturun.
Aynı kimlikle kimlik doğrulaması yapacaklarsa, belirteç kimlik bilgilerinin aynı örneği birden çok istemciyle kullanılabilir.
// 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());
Önemli kavramlar
KeyVaultCertificate
AKeyVaultCertificate
, Azure Key Vault içindeki temel kaynaktır. Şifrelenmiş veya imzalı verileri şifrelemek ve doğrulamak için sertifikaları kullanacaksınız.
CertificateClient
ile CertificateClient
kasadan sertifika alabilir, yeni sertifikalar ve mevcut sertifikaların yeni sürümlerini oluşturabilir, sertifika meta verilerini güncelleştirebilir ve sertifikaları silebilirsiniz. Sertifikaların sertifika verenlerini, kişilerini ve yönetim ilkelerini de yönetebilirsiniz. Bu, aşağıdaki örneklerde gösterilmiştir.
İş parçacığı güvenliği
Tüm istemci örneği yöntemlerinin iş parçacığı açısından güvenli ve birbirinden bağımsız olduğunu garanti ediyoruz (kılavuz). Bu, istemci örneklerini yeniden kullanma önerisinin iş parçacıkları arasında bile her zaman güvenli olmasını sağlar.
Ek kavramlar
İstemci seçenekleri | Yanıta | erişme Uzun süre çalışan işlemler | Hataları | işleme Tanılama | Alaycı | İstemci ömrü
Örnekler
Azure.Security.KeyVault.Certificates paketi zaman uyumlu ve zaman uyumsuz API'leri destekler.
Aşağıdaki bölümde, yukarıda oluşturulan kullanılarak azure Key Vault sertifika hizmetiyle ilgili en yaygın görevlerden bazılarını kapsayan birkaç kod parçacığı client
verilmiştir:
Eşitleme örnekleri
- Sertifika oluşturma
- Sertifika alma
- Var olan bir sertifikayı güncelleştirme
- Sertifikaları listeleme
- Sertifika silme
Zaman uyumsuz örnekler
- Zaman uyumsuz olarak sertifika oluşturma
- Sertifikaları zaman uyumsuz olarak listeleme
- Sertifikayı zaman uyumsuz olarak silme
Sertifika oluşturma
StartCreateCertificate
Azure Key Vault depolanacak bir sertifika oluşturur. Aynı ada sahip bir sertifika zaten varsa, sertifikanın yeni bir sürümü oluşturulur.
Sertifikayı oluştururken kullanıcı, sertifika ömrünü denetleyen ilkeyi belirtebilir. İlke belirtilmezse varsayılan ilke kullanılır. İşlem StartCreateCertificate
bir CertificateOperation
döndürür. Aşağıdaki örnek, varsayılan ilkeyle otomatik olarak imzalanan bir sertifika oluşturur.
// 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;
NOT: Sertifikayı verene ve doğrulama yöntemlerine bağlı olarak, sertifika oluşturma ve imzalama işlemi belirsiz bir süre alabilir. Kullanıcılar yalnızca otomatik olarak imzalanan sertifikalar veya iyi bilinen yanıt süreleri olan verenler gibi uygulama kapsamında işlem makul bir şekilde tamamlanabilirse sertifika işlemlerini beklemelidir.
Sertifika alma
GetCertificate
, Azure Key Vault'nde depolanan bir sertifikanın en son sürümünü ile birlikte CertificatePolicy
alır.
KeyVaultCertificateWithPolicy certificateWithPolicy = client.GetCertificate("MyCertificate");
GetCertificateVersion
kasadaki bir sertifikanın belirli bir sürümünü alır.
KeyVaultCertificate certificate = client.GetCertificateVersion(certificateWithPolicy.Name, certificateWithPolicy.Properties.Version);
Var olan bir sertifikayı güncelleştirme
UpdateCertificate
Azure Key Vault depolanan bir sertifikayı güncelleştirir.
CertificateProperties certificateProperties = new CertificateProperties(certificate.Id);
certificateProperties.Tags["key1"] = "value1";
KeyVaultCertificate updated = client.UpdateCertificateProperties(certificateProperties);
Sertifikaları listeleme
GetCertificates
kasadaki sertifikaları numaralandırır ve sertifikanın seçme özelliklerini döndürür. Sertifikanın hassas alanları döndürülmeyecek. Bu işlem sertifikalar/liste izni gerektirir.
Pageable<CertificateProperties> allCertificates = client.GetPropertiesOfCertificates();
foreach (CertificateProperties certificateProperties in allCertificates)
{
Console.WriteLine(certificateProperties.Name);
}
Sertifika silme
DeleteCertificate
Azure Key Vault depolanan bir sertifikanın tüm sürümlerini siler. Azure Key Vault için geçici silme etkinleştirilmediğinde, bu işlem sertifikayı kalıcı olarak siler. Geçici silme etkinleştirildiyse sertifika silinmek üzere işaretlenir ve isteğe bağlı olarak temizlenebilir veya zamanlanan temizleme tarihine kadar kurtarılabilir.
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);
Zaman uyumsuz olarak sertifika oluşturma
Zaman uyumsuz API'ler zaman uyumlu karşılıklarıyla aynıdır, ancak zaman uyumsuz yöntemler için tipik "Zaman Uyumsuz" soneki ile geri döner ve bir Task
döndürür.
Bu örnek, Azure Key Vault belirtilen isteğe bağlı bağımsız değişkenlerle bir sertifika oluşturur.
// 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();
Sertifikaları zaman uyumsuz olarak listeleme
Listeleme sertifikası yöntemini beklemeye GetPropertiesOfCertificatesAsync
dayanmaz, ancak deyimiyle await foreach
kullanabileceğiniz bir AsyncPageable<CertificateProperties>
döndürür:
AsyncPageable<CertificateProperties> allCertificates = client.GetPropertiesOfCertificatesAsync();
await foreach (CertificateProperties certificateProperties in allCertificates)
{
Console.WriteLine(certificateProperties.Name);
}
Sertifikayı zaman uyumsuz olarak silme
Bir sertifikayı temizlemeden önce zaman uyumsuz olarak silerken, işlemde WaitForCompletionAsync
yöntemini bekleyebilirsiniz.
Varsayılan olarak, bu döngü süresiz olarak döngüye geçer, ancak bir CancellationToken
geçirerek iptal edebilirsiniz.
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);
Sorun giderme
Çeşitli hata senaryolarını tanılama hakkında ayrıntılı bilgi için sorun giderme kılavuzumuza bakın.
Genel
.NET SDK'sını kullanarak Azure Key Vault sertifikaları istemci kitaplığıyla etkileşime geçtiğinde, hizmet tarafından döndürülen hatalar REST API istekleri için döndürülen http durum kodlarıyla aynı olur.
Örneğin, Azure Key Vault'nizde mevcut olmayan bir Anahtarı almaya çalışırsanız, belirten Not Found
bir 404
hata döndürülür.
try
{
KeyVaultCertificateWithPolicy certificateWithPolicy = client.GetCertificate("SomeCertificate");
}
catch (RequestFailedException ex)
{
Console.WriteLine(ex.ToString());
}
İşlemin İstemci İstek Kimliği gibi ek bilgilerin günlüğe kaydedildiğini fark edeceksiniz.
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
Sonraki adımlar
Bu GitHub deposunda çeşitli Azure Key Vault sertifikaları istemci kitaplığı örnekleri sağlanır. Bu örnekler, Azure Key Vault çalışırken yaygın olarak karşılaşılan ek senaryolar için örnek kod sağlar:
Sample1_HelloWorld.md - Azure Key Vault sertifikaları ile çalışmak için:
- Sertifika oluşturma
- Var olan bir sertifikayı alma
- Var olan bir sertifikayı güncelleştirme
- Sertifika silme
Sample2_GetCertificates.md - Azure Key Vault sertifikalarıyla çalışmaya yönelik örnek kod:
- Sertifika oluşturma
- Key Vault tüm sertifikaları listeleme
- Belirtilen sertifikanın sürümlerini listeleme
- sertifikaları Key Vault silme
- Key Vault silinen sertifikaları listeleme
Diğer Belgeler
- Azure Key Vault hakkında daha kapsamlı belgeler için BKZ. API başvuru belgeleri.
- Gizli diziler istemci kitaplığı için bkz . Gizli diziler istemci kitaplığı.
- Anahtarlar istemci kitaplığı için bkz . Anahtarlar istemci kitaplığı.
Katkıda bulunma
Bu kitaplıkları oluşturma, test etme ve bu kitaplıklara katkıda bulunma hakkında ayrıntılı bilgi için CONTRIBUTING.md bakın.
Bu proje, katkı ve önerilere açıktır. Çoğu durumda, sağladığınız katkıyı kullanmamız için bize hak tanıma hakkına sahip olduğunuzu ve bu hakkı bize tanıdığınızı bildiren bir Katkıda Bulunan Lisans Sözleşmesi’ni (CLA) kabul etmeniz gerekir. Ayrıntılar için bkz. https://cla.microsoft.com.
Bir çekme isteği gönderdiğinizde, CLA robotu bir CLA sağlamanız gerekip gerekmediğini otomatik olarak belirler ve çekme isteğini uygun şekilde donatır (örn. etiket, açıklama). Robot tarafından sağlanan yönergeleri izlemeniz yeterlidir. Bu işlemi, CLA’mızı kullanarak tüm depolarda yalnızca bir kere yapmanız gerekir.
Bu proje Microsoft Open Source Code of Conduct (Microsoft Açık Kaynak Kullanım Kuralları) belgesinde listelenen kurallara uygundur. Daha fazla bilgi için Kullanım Kuralları SSS bölümüne bakın veya ek sorularınız veya yorumlarınızla iletişime geçin opencode@microsoft.com .
Azure SDK for .NET
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin