Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Sistem perlindungan data menggunakan mekanisme penemuan secara default untuk menentukan bagaimana kunci kriptografi harus dienkripsi saat tidak aktif. Pengembang dapat mengambil alih mekanisme penemuan dan menentukan secara manual bagaimana kunci harus dienkripsi saat tidak aktif.
Peringatan
Jika Anda menentukan lokasi persistensi kunci eksplisit, sistem perlindungan data membatalkan pendaftaran enkripsi kunci default saat mekanisme tidak aktif. Akibatnya, kunci tidak lagi dienkripsi saat tidak aktif. Kami menyarankan agar Anda menentukan mekanisme enkripsi kunci eksplisit untuk penyebaran produksi. Opsi mekanisme enkripsi saat istirahat dijelaskan dalam topik ini.
Azure Key Vault
Untuk informasi selengkapnya, lihat Mengonfigurasi ASP.NET Core Data Protection.
Windows DPAPI
Hanya berlaku untuk penyebaran Windows.
Ketika Windows DPAPI digunakan, materi kunci dienkripsi dengan CryptProtectData sebelum disimpan ke penyimpanan. DPAPI adalah mekanisme enkripsi yang sesuai untuk data yang tidak pernah dibaca di luar komputer saat ini (meskipun dimungkinkan untuk mencadangkan kunci ini hingga Direktori Aktif). Untuk mengonfigurasi enkripsi kunci DPAPI saat disimpan, panggil salah satu metode ekstensi ProtectKeysWithDpapi:
// Only the local user account can decrypt the keys
services.AddDataProtection()
.ProtectKeysWithDpapi();
Jika ProtectKeysWithDpapi dipanggil tanpa parameter, hanya akun pengguna Windows saat ini yang dapat menguraikan cincin kunci yang bertahan. Anda dapat secara opsional menentukan bahwa setiap akun pengguna di komputer (bukan hanya akun pengguna saat ini) yang dapat menguraikan cincin kunci:
// All user accounts on the machine can decrypt the keys
services.AddDataProtection()
.ProtectKeysWithDpapi(protectToLocalMachine: true);
Sertifikat X.509
Jika aplikasi tersebar di beberapa komputer, mungkin lebih mudah untuk mendistribusikan sertifikat X.509 bersama (.pfx format) di seluruh mesin dan mengonfigurasi aplikasi yang dihosting untuk menggunakan sertifikat untuk enkripsi kunci saat tidak aktif.
Dalam contoh berikut, thumbprint sertifikat diteruskan ke ProtectKeysWithCertificate:
services.AddDataProtection()
.ProtectKeysWithCertificate("{CERTIFICATE THUMBPRINT}");
Dalam contoh berikut, sebuah X509Certificate2 diteruskan ke ProtectKeysWithCertificate:
var cert = new X509Certificate2(...);
services.AddDataProtection()
.ProtectKeysWithCertificate(cert);
Untuk membuat sertifikat, gunakan salah satu pendekatan berikut atau alat atau layanan online lain yang sesuai:
-
dotnet dev-certsperintah -
New-SelfSignedCertificatePerintah PowerShell - Azure Key Vault
- MakeCert pada Windows
- OpenSSL
Untuk informasi selengkapnya, lihat Membuat sertifikat yang ditandatangani sendiri dengan .NET CLI.
Karena keterbatasan .NET Framework, hanya sertifikat dengan kunci privat CAPI yang didukung. Lihat konten di bawah ini untuk kemungkinan solusi untuk batasan ini.
Windows DPAPI-NG
Mekanisme ini hanya tersedia pada Windows 8/Windows Server 2012 atau yang lebih baru.
Dimulai dengan Windows 8, OS Windows mendukung DPAPI-NG (juga disebut CNG DPAPI). Untuk informasi selengkapnya, lihat Tentang CNG DPAPI.
Prinsipal dikodekan sebagai aturan deskriptor perlindungan. Dalam contoh berikut yang memanggil ProtectKeysWithDpapiNG, hanya pengguna yang bergabung dengan domain dengan SID yang ditentukan yang dapat mendekripsi cincin kunci:
public void ConfigureServices(IServiceCollection services)
{
// Uses the descriptor rule "SID=S-1-5-21-..."
services.AddDataProtection()
.ProtectKeysWithDpapiNG("SID=S-1-5-21-...",
flags: DpapiNGProtectionDescriptorFlags.None);
}
Ada juga kelebihan ProtectKeysWithDpapiNGparameter dari . Gunakan metode kenyamanan ini untuk menentukan aturan "SID={CURRENT_ACCOUNT_SID}", di mana CURRENT_ACCOUNT_SID adalah SID dari akun pengguna Windows saat ini:
public void ConfigureServices(IServiceCollection services)
{
// Use the descriptor rule "SID={current account SID}"
services.AddDataProtection()
.ProtectKeysWithDpapiNG();
}
Dalam skenario ini, pengendali domain AD bertanggung jawab untuk mendistribusikan kunci enkripsi yang digunakan oleh operasi DPAPI-NG. Pengguna target dapat menguraikan payload terenkripsi dari komputer yang bergabung dengan domain apa pun (asalkan proses berjalan di bawah identitas mereka).
Enkripsi berbasis sertifikat dengan Windows DPAPI-NG
Jika aplikasi berjalan pada Windows 8.1/Windows Server 2012 R2 atau yang lebih baru, Anda dapat menggunakan Windows DPAPI-NG untuk melakukan enkripsi berbasis sertifikat. Gunakan string deskriptor aturan "CERTIFICATE=HashId:{CERTIFICATE THUMBPRINT}", di mana {CERTIFICATE THUMBPRINT} adalah placeholder untuk thumbprint SHA1 dari sertifikat yang telah dikodekan dalam format heksadesimal:
public void ConfigureServices(IServiceCollection services)
{
services.AddDataProtection()
.ProtectKeysWithDpapiNG("CERTIFICATE=HashId:{CERTIFICATE THUMBPRINT}",
flags: DpapiNGProtectionDescriptorFlags.None);
}
Aplikasi apa pun yang ditunjukkan pada repositori ini harus berjalan pada Windows 8.1/Windows Server 2012 R2 atau yang lebih baru untuk menguraikan kunci.
Enkripsi kunci kustom
Jika mekanisme dalam kotak tidak sesuai, pengembang dapat menentukan mekanisme enkripsi kunci mereka sendiri dengan menyediakan kustom IXmlEncryptor.
ASP.NET Core