Mulai Cepat: Pustaka klien sertifikat Azure Key Vault untuk .NET (SDK v4)

Memulai dengan pustaka klien sertifikat Azure Key Vault untuk .NET. Azure Key Vault adalah layanan cloud yang memberikan penyimpanan aman untuk sertifikat. Anda dapat menyimpan kunci, kata sandi, sertifikat, dan rahasia lainnya dengan aman. Brankas kunci Azure dapat dibuat dan dikelola melalui portal Microsoft Azure. Dalam mulai cepat ini, Anda mempelajari cara membuat, mengambil, dan menghapus sertifikat dari brankas kunci Azure menggunakan pustaka klien .NET

Sumber daya pustaka klien Key Vault:

Dokumentasi referensi API | Kode sumber pustaka | Paket (NuGet)

Untuk informasi selengkapnya tentang Key Vault dan sertifikat, lihat:

Prasyarat

Mulai cepat ini menggunakan dotnet dan Azure CLI

Siapkan

Mulai cepat ini menggunakan pustaka Azure Identity dengan Azure CLI untuk autentikasi pengguna ke Azure Services. Pengembang juga dapat menggunakan Visual Studio atau Visual Studio Code untuk mengautentikasi panggilan mereka. Untuk informasi selengkapnya, lihat Mengautentikasi klien dengan pustaka klien Azure Identity.

Masuk ke Azure

  1. Jalankan perintah login.

    az login
    

    Jika CLI dapat membuka browser default Anda, CLI akan melakukannya dan memuat halaman masuk Azure.

    Jika tidak, buka halaman browser di https://aka.ms/devicelogin dan masukkan kode otorisasi yang ditampilkan di terminal Anda.

  2. Masuk menggunakan info masuk akun Anda di browser.

Memberikan akses ke brankas kunci Anda

Buat kebijakan akses untuk brankas kunci yang memberikan izin sertifikat ke akun pengguna Anda

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

Membuat aplikasi konsol .NET baru

  1. Di shell perintah, jalankan perintah berikut untuk membuat proyek bernama key-vault-console-app:

    dotnet new console --name key-vault-console-app
    
  2. Ubah ke direktori key-vault-console-app yang baru dibuat, dan jalankan perintah berikut untuk membuat proyek:

    dotnet build
    

    Output build tidak boleh berisi peringatan atau kesalahan.

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

Menginstal paket

Dari shell perintah, instal pustaka klien sertifikat Azure Key Vault untuk .NET:

dotnet add package Azure.Security.KeyVault.Certificates

Untuk mulai cepat ini, Anda juga perlu menginstal pustaka klien Azure SDK untuk Azure Identity:

dotnet add package Azure.Identity

Atur variabel lingkungan

Aplikasi ini menggunakan nama brankas kunci Anda sebagai variabel lingkungan yang bernama KEY_VAULT_NAME.

Windows

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

Windows PowerShell

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

macOS atau Linux

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

Model objek

Pustaka klien sertifikat Azure Key Vault untuk .NET mengizinkan Anda mengelola sertifikat. Bagian Contoh kode menunjukkan cara membuat klien, mengatur sertifikat, mengambil sertifikat, dan menghapus sertifikat.

Contoh kode

Menambahkan instruksi

Tambahkan arahan berikut di bagian atas Program.cs:

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

Mengautentikasi dan membuat klien

Dalam mulai cepat ini, pengguna yang masuk digunakan untuk mengautentikasi ke brankas kunci. Cara ini merupakan metode yang akan dipilih untuk pengembangan lokal. Untuk aplikasi yang disebarkan ke Azure, identitas terkelola harus ditetapkan ke App Service atau Komputer Virtual. Untuk informasi selengkapnya, lihat Gambaran Umum Identitas Terkelola.

Dalam contoh di bawah ini, nama brankas kunci Anda diperluas ke URI brankas kunci, dalam format "https://<your-key-vault-name>.vault.azure.net". Contoh ini menggunakan kelas 'DefaultAzureCredential()' dari Pustaka Azure Identity, yang mengizinkan penggunaan kode yang sama di lingkungan yang berbeda dengan opsi yang berbeda untuk memberikan identitas. Untuk informasi selengkapnya tentang mengautentikasi ke brankas kunci, lihat Panduan Pengembang.

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

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

Menyimpan sertifikat

Dalam contoh ini, untuk kesederhanaan, Anda dapat menggunakan sertifikat yang ditandatangani sendiri dengan kebijakan penerbitan default. Untuk tugas ini, gunakan metode StartCreateCertificateAsync. Parameter metode ini menerima nama sertifikat dan kebijakan sertifikat.

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

Catatan

Jika ada nama sertifikat, kode di atas akan membuat versi baru sertifikat tersebut.

Mengambil sertifikat

Anda sekarang dapat mengambil sertifikat yang dibuat sebelumnya dengan metode GetCertificateAsync.

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

Menghapus sertifikat

Terakhir, mari hapus dan bersihkan sertifikat dari brankas kunci Anda dengan metode StartDeleteCertificateAsync dan 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");

Kode sampel

Ubah aplikasi konsol .NET Core agar berinteraksi dengan Key Vault dengan menyelesaikan langkah berikut:

  • Ganti kode di Program.cs dengan kode berikut:

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

Menguji dan memverifikasi

Jalankan perintah berikut untuk membangun proyek

dotnet build

Variasi dari output berikut muncul:

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

Langkah berikutnya

Dalam mulai cepat ini, Anda membuat brankas kunci, menyimpan sertifikat, dan mengambil sertifikat tersebut.

Untuk mempelajari selengkapnya tentang Key Vault dan cara mengintegrasikannya dengan aplikasi Anda, lihat artikel berikut: