동적 X509ChainPolicy 검증 시간

이전 버전의 .NET에서는 X509ChainPolicy 개체가 생성될 때 X509ChainPolicy.VerificationTime 값이 DateTime.Now에 할당되었습니다. X509Chain.Build(X509Certificate2)에 대한 여러 호출에 동일한 X509ChainPolicy 개체를 사용하면 개체를 만든 후 경과된 시간에 관계없이 확인 시간과 동일한 값을 사용하여 모든 체인 빌드가 생성됩니다.

새 기본 동작은 X509Chain.Build()가 확인 시간으로 호출될 때 DateTime.Now 값을 사용하는 것입니다. 이 변경 내용은 명시적으로 X509ChainPolicy.VerificationTime을 할당하는 체인 빌드에 영향을 주지 않습니다.

이전 동작

X509ChainPolicy 개체가 생성될 때 X509ChainPolicy.VerificationTime 값이 DateTime.Now에 할당되었습니다. 이 값은 이후의 모든 X509Chain.Build(X509Certificate2) 호출에서 사용되었습니다(나중에 값을 다시 할당하지 않는 한).

새 동작

X509ChainPolicy.VerificationTime 값은 X509ChainPolicy 개체가 생성될 때 DateTime.Now에 할당되지만 새 X509ChainPolicy.VerificationTimeIgnored 속성의 기본값은 true입니다. 이 속성의 값이 true인 경우 X509Chain.Build(X509Certificate2) 메서드는 체인을 빌드할 때 X509ChainPolicy.VerificationTime 대신 DateTime.Now를 확인 시간으로 사용합니다.

X509ChainPolicy.VerificationTime 속성에 값을 할당하면 자동으로 VerificationTimeIgnoredfalse로 설정됩니다.

도입된 버전

.NET 7

호환성이 손상되는 변경의 형식

이 변경은 이진 호환성에 영향을 줄 수 있습니다.

변경 이유

구성된 X509ChainPolicy 개체를 캐시하는 호출자는 종종 유효성 검사가 시간이 더 뒤로 이동하고 있다는 사실에 놀랐습니다. 이러한 변경으로 인해 수명이 긴 X509ChainPolicy 개체를 더 쉽게 작업할 수 있으며 수명이 짧은 개체에는 큰 영향을 주지 않습니다.

다음 호출자는 변경의 영향을 받지 않습니다.

  • 수명이 긴 X509ChainPolicy 개체가 없는 호출자.
  • X509ChainPolicy.VerificationTime 속성을 명시적으로 할당하는 호출자.

이전 동작을 사용하려는 수명이 긴 X509ChainPolicy 개체가 있는 호출자는 새 X509ChainPolicy.VerificationTimeIgnored 속성을 false에 할당하거나 X509ChainPolicy.VerificationTime속성을 DateTime.Now에 할당할 수 있습니다.

var policy = new X509ChainPolicy
{
   // ...
   VerificationTime = DateTime.Now,
};

또는

var policy = new X509ChainPolicy
{
    // ...
    VerificationTimeIgnored = false,
};

영향을 받는 API