Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
System ochrony danych domyślnie wykorzystuje mechanizm odnajdywania w celu określenia sposobu szyfrowania kluczy kryptograficznych w spoczynku. Deweloper może zastąpić mechanizm wykrywania i ręcznie określić sposób szyfrowania kluczy w stanie spoczynku.
Ostrzeżenie
W przypadku określenia jawnej lokalizacji trwałości klucza , system ochrony danych wyrejestruje domyślny mechanizm szyfrowania danych w stanie spoczynku. W związku z tym klucze nie są już szyfrowane w stanie spoczynku. Zalecamy określenie jawnego mechanizmu szyfrowania kluczy dla wdrożeń produkcyjnych. Opcje mechanizmu szyfrowania danych spoczynkowych zostały opisane w tym temacie.
Azure Key Vault
Aby uzyskać więcej informacji, zobacz Konfigurowanie ASP.NET Core Data Protection.
Windows DPAPI
Dotyczy tylko wdrożeń systemu Windows.
Gdy używany jest interfejs DPAPI systemu Windows, materiał klucza jest szyfrowany za pomocą CryptProtectData przed utrwalone w magazynie. DPAPI to odpowiedni mechanizm szyfrowania danych, który nigdy nie jest odczytywany poza bieżącą maszyną (choć można utworzyć kopię zapasową tych kluczy do usługi Active Directory). Aby skonfigurować szyfrowanie kluczy DPAPI "w spoczynku", wywołaj jedną z metod rozszerzających ProtectKeysWithDpapi):
// Only the local user account can decrypt the keys
services.AddDataProtection()
.ProtectKeysWithDpapi();
Jeśli ProtectKeysWithDpapi jest wywoływana bez parametrów, tylko bieżące konto użytkownika systemu Windows może odszyfrować utrwalone pierścień kluczy. Opcjonalnie można określić, że dowolne konto użytkownika na maszynie (nie tylko bieżące konto użytkownika) może odszyfrować pierścień kluczy:
// All user accounts on the machine can decrypt the keys
services.AddDataProtection()
.ProtectKeysWithDpapi(protectToLocalMachine: true);
certyfikat X.509
Jeśli aplikacja jest rozłożona na wiele maszyn, może być wygodnie dystrybuowanie wspólnego udostępnionego certyfikatu X.509 (.pfx format) na tych maszynach i skonfigurowanie hostowanych aplikacji do używania certyfikatu do szyfrowania kluczy w spoczynku.
W poniższym przykładzie odcisk palca certyfikatu jest przekazywany do :ProtectKeysWithCertificate
services.AddDataProtection()
.ProtectKeysWithCertificate("{CERTIFICATE THUMBPRINT}");
W poniższym przykładzie element X509Certificate2 jest przekazywany do elementu ProtectKeysWithCertificate:
var cert = new X509Certificate2(...);
services.AddDataProtection()
.ProtectKeysWithCertificate(cert);
Aby utworzyć certyfikat, użyj jednego z następujących metod lub innego odpowiedniego narzędzia lub usługi online:
-
dotnet dev-certspolecenie -
New-SelfSignedCertificatePolecenie programu PowerShell - Azure Key Vault
- MakeCert w systemie Windows
- OpenSSL
Aby uzyskać więcej informacji, zobacz Generowanie certyfikatów z podpisem własnym przy użyciu interfejsu wiersza polecenia platformy .NET.
Ze względu na ograniczenia programu .NET Framework obsługiwane są tylko certyfikaty z kluczami prywatnymi CAPI. Zapoznaj się z poniższą zawartością, aby uzyskać możliwe obejścia tych ograniczeń.
DPAPI-NG systemu Windows
Ten mechanizm jest dostępny tylko w systemie Windows 8/Windows Server 2012 lub nowszym.
Począwszy od systemu Windows 8, system operacyjny Windows obsługuje dpAPI-NG (nazywany również CNG DPAPI). Aby uzyskać więcej informacji, zobacz About CNG DPAPI (Informacje o interfejsie DPAPI CNG).
Podmiot zabezpieczeń jest kodowany jako reguła deskryptora ochrony. W poniższym przykładzie, który wywołuje ProtectKeysWithDpapiNGmetodę , tylko użytkownik przyłączony do domeny z określonym identyfikatorem SID może odszyfrować pierścień kluczy:
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);
}
Istnieje również bez parametrów przeciążenie .ProtectKeysWithDpapiNG Użyj tej metody wygody, aby określić regułę "SID={CURRENT_ACCOUNT_SID}", gdzie CURRENT_ACCOUNT_SID jest identyfikatorem SID bieżącego konta użytkownika systemu Windows:
public void ConfigureServices(IServiceCollection services)
{
// Use the descriptor rule "SID={current account SID}"
services.AddDataProtection()
.ProtectKeysWithDpapiNG();
}
W tym scenariuszu kontroler domeny usługi AD jest odpowiedzialny za dystrybucję kluczy szyfrowania używanych przez operacje DPAPI-NG. Użytkownik docelowy może odszyfrować zaszyfrowany ładunek z dowolnej maszyny przyłączonej do domeny (pod warunkiem, że proces jest uruchomiony w ramach swojej tożsamości).
Szyfrowanie oparte na certyfikatach za pomocą interfejsu DPAPI-NG systemu Windows
Jeśli aplikacja jest uruchomiona w systemie Windows 8.1/Windows Server 2012 R2 lub nowszym, możesz użyć systemu Windows DPAPI-NG do przeprowadzenia szyfrowania opartego na certyfikatach. Użyj ciągu znaków deskryptora reguły "CERTIFICATE=HashId:{CERTIFICATE THUMBPRINT}", gdzie symbol zastępczy {CERTIFICATE THUMBPRINT} to szesnastkowy zakodowany odcisk SHA1 certyfikatu.
public void ConfigureServices(IServiceCollection services)
{
services.AddDataProtection()
.ProtectKeysWithDpapiNG("CERTIFICATE=HashId:{CERTIFICATE THUMBPRINT}",
flags: DpapiNGProtectionDescriptorFlags.None);
}
Każda aplikacja wskazywana na to repozytorium musi być uruchomiona w systemie Windows 8.1/Windows Server 2012 R2 lub nowszym, aby odszyfrować klucze.
Niestandardowe szyfrowanie kluczy
Jeśli mechanizmy wbudowane nie są odpowiednie, deweloper może określić własny mechanizm szyfrowania kluczy, udostępniając niestandardowy IXmlEncryptorelement .