Hora de comprobación dinámica de X509ChainPolicy
En versiones anteriores de .NET, el valor X509ChainPolicy.VerificationTime se asignó a DateTime.Now cuando se construyó el objeto X509ChainPolicy. El uso del mismo objeto X509ChainPolicy
para varias llamadas a X509Chain.Build(X509Certificate2) dio lugar a que todas las compilaciones de cadena usen ese mismo valor que el tiempo de comprobación, independientemente del tiempo transcurrido desde que se creó el objeto.
El comportamiento predeterminado nuevo es usar el valor de DateTime.Now
cuando X509Chain.Build()
se invoca como hora de comprobación. Este cambio no afecta a las compilaciones de cadena que asignan X509ChainPolicy.VerificationTime
de forma explícita.
Comportamiento anterior
El valor X509ChainPolicy.VerificationTime se asignó a DateTime.Now cuando se construyó el objeto X509ChainPolicy
. Este valor se usó en todas las llamadas a X509Chain.Build(X509Certificate2) posteriores (a menos que el valor se reasignase en un momento posterior o hasta que esto sucediese).
Comportamiento nuevo
El valor X509ChainPolicy.VerificationTime se asigna a DateTime.Now cuando se construye el objeto X509ChainPolicy
, pero la propiedad X509ChainPolicy.VerificationTimeIgnored
nueva tiene como valor predeterminado true
. Cuando esta propiedad tiene un valor de true
, el método X509Chain.Build(X509Certificate2) usa DateTime.Now
como tiempo de comprobación, en lugar de X509ChainPolicy.VerificationTime
, al crear la cadena.
La asignación de un valor a la propiedad X509ChainPolicy.VerificationTime
establece automáticamente VerificationTimeIgnored
en false
.
Versión introducida
.NET 7
Tipo de cambio importante
Este cambio puede afectar a la compatibilidad binaria.
Motivo del cambio
A menudo, los autores de llamadas que almacenan en caché los objetos X509ChainPolicy
configurados se sorprendían de que su validación se moviera lentamente atrás en el tiempo. Este cambio facilita el trabajo de objetos X509ChainPolicy
de larga duración y no afecta significativamente a los objetos de corta duración.
Acción recomendada
El cambio no afecta a los siguientes autores de llamadas:
- Autores de llamadas que no tienen objetos
X509ChainPolicy
de larga duración. - Autores de llamadas que asignan explícitamente la propiedad
X509ChainPolicy.VerificationTime
.
Los autores de llamadas que tienen un objeto X509ChainPolicy
de larga duración y que desean usar el comportamiento anterior pueden asignar la nueva propiedad X509ChainPolicy.VerificationTimeIgnored
a false
o la propiedad X509ChainPolicy.VerificationTime
a DateTime.Now
.
var policy = new X509ChainPolicy
{
// ...
VerificationTime = DateTime.Now,
};
or
var policy = new X509ChainPolicy
{
// ...
VerificationTimeIgnored = false,
};
API afectadas
- System.Security.Cryptography.X509Certificates.X509ChainPolicy
- System.Security.Cryptography.X509Certificates.X509ChainPolicy.VerificationTime
System.Security.Cryptography.X509Certificates.X509ChainPolicy.VerificationTimeIgnored
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de