Dynamiczny czas weryfikacji X509ChainPolicy
W poprzednich wersjach platformy .NET X509ChainPolicy.VerificationTime wartość została przypisana podczas DateTime.NowX509ChainPolicy konstruowania obiektu. Użycie tego samego X509ChainPolicy
obiektu dla wielu wywołań spowodowało, że X509Chain.Build(X509Certificate2) wszystkie kompilacje łańcucha używały tej samej wartości co czas weryfikacji, bez względu na to, ile czasu minęło od momentu utworzenia obiektu.
Nowe domyślne zachowanie polega na użyciu wartości DateTime.Now
, gdy X509Chain.Build()
jest wywoływana jako czas weryfikacji. Ta zmiana nie ma wpływu na kompilacje łańcucha, które jawnie przypisują wartość X509ChainPolicy.VerificationTime
.
Poprzednie zachowanie
Wartość została przypisana X509ChainPolicy.VerificationTime do DateTime.Now obiektu podczas X509ChainPolicy
konstruowania obiektu. Ta wartość została użyta we wszystkich kolejnych X509Chain.Build(X509Certificate2) wywołaniach (chyba że wartość została ponownie przypisana później lub dopóki wartość nie zostanie ponownie przypisana).
Nowe zachowanie
Wartość X509ChainPolicy.VerificationTime jest przypisywana, gdy DateTime.NowX509ChainPolicy
obiekt jest konstruowany, ale nowa X509ChainPolicy.VerificationTimeIgnored
właściwość domyślnie ma wartość true
. Gdy ta właściwość ma wartość true
, metoda używa DateTime.Now
metody jako czasu weryfikacji zamiast X509ChainPolicy.VerificationTime
X509Chain.Build(X509Certificate2) podczas tworzenia łańcucha.
Przypisywanie wartości do X509ChainPolicy.VerificationTime
właściwości automatycznie ustawia VerificationTimeIgnored
wartość na false
.
Wprowadzona wersja
.NET 7
Typ zmiany powodującej niezgodność
Ta zmiana może mieć wpływ na zgodność binarną.
Przyczyna wprowadzenia zmiany
Osoby wywołujące, które buforują skonfigurowane X509ChainPolicy
obiekty, często były zaskoczeni, że ich walidacja powoli przechodziła dalej w czasie. Ta zmiana ułatwia X509ChainPolicy
długotrwałą pracę z obiektami i nie ma znaczącego wpływu na krótkotrwałe obiekty.
Zalecana akcja
Zmiany nie mają wpływu na następujące osoby wywołujące:
- Obiekty wywołujące, które nie mają długotrwałych
X509ChainPolicy
obiektów. - Wywołujące, które jawnie przypisują
X509ChainPolicy.VerificationTime
właściwość.
Obiekt wywołujący, który ma długotrwały X509ChainPolicy
obiekt, który chce używać poprzedniego zachowania, może przypisać nową X509ChainPolicy.VerificationTimeIgnored
właściwość do false
lub przypisać X509ChainPolicy.VerificationTime
właściwość do DateTime.Now
klasy .
var policy = new X509ChainPolicy
{
// ...
VerificationTime = DateTime.Now,
};
lub
var policy = new X509ChainPolicy
{
// ...
VerificationTimeIgnored = false,
};
Dotyczy interfejsów API
- System.Security.Cryptography.X509Certificates.X509ChainPolicy
- System.Security.Cryptography.X509Certificates.X509ChainPolicy.VerificationTime
System.Security.Cryptography.X509Certificates.X509ChainPolicy.VerificationTimeIgnored