동적 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
속성에 값을 할당하면 자동으로 VerificationTimeIgnored
가 false
로 설정됩니다.
도입된 버전
.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
- System.Security.Cryptography.X509Certificates.X509ChainPolicy
- System.Security.Cryptography.X509Certificates.X509ChainPolicy.VerificationTime
System.Security.Cryptography.X509Certificates.X509ChainPolicy.VerificationTimeIgnored
.NET
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기