Temps de vérification X509ChainPolicy dynamique
Dans les versions précédentes de .NET, la valeur X509ChainPolicy.VerificationTime était affectée à DateTime.Now quand l’objet X509ChainPolicy a été construit. L’utilisation du même objet X509ChainPolicy
pour plusieurs appels à X509Chain.Build(X509Certificate2) entraînait l’utilisation par toutes les builds de chaîne de la même valeur d’heure de vérification, indépendamment de la durée écoulée depuis la création de l’objet.
Le nouveau comportement par défaut consiste à utiliser la valeur de DateTime.Now
quand X509Chain.Build()
est appelé en tant qu’heure de vérification. Cette modification n’affecte pas les builds de chaîne qui attribuent X509ChainPolicy.VerificationTime
explicitement.
Comportement précédent
La valeur X509ChainPolicy.VerificationTime a été attribuée à DateTime.Now quand l’objet X509ChainPolicy
a été construit. Cette valeur a été utilisée dans tous les appels X509Chain.Build(X509Certificate2) suivants (sauf si la valeur est réattribuée ultérieurement).
Nouveau comportement
La valeur X509ChainPolicy.VerificationTime est attribuée à DateTime.Now quand l’objet X509ChainPolicy
est construit, mais la nouvelle propriété X509ChainPolicy.VerificationTimeIgnored
est définie par défaut sur true
. Quand cette propriété a la valeur true
, la méthode X509Chain.Build(X509Certificate2) utilise DateTime.Now
en tant qu’heure de vérification au lieu de X509ChainPolicy.VerificationTime
lors de la création de la chaîne.
L’affectation d’une valeur à la propriété X509ChainPolicy.VerificationTime
définit VerificationTimeIgnored
automatiquement sur false
.
Version introduite
.NET 7
Type de changement cassant
Ce changement peut affecter la compatibilité binaire.
Raison du changement
Les appelants qui mettent en cache des objets X509ChainPolicy
configurés ont souvent été surpris que leur validation remonte lentement dans le temps. Cette modification facilite l’utilisation des objets X509ChainPolicy
de longue durée et n’a pas d’impact significatif sur les objets de courte durée.
Action recommandée
Les appelants suivants ne sont pas affectés par la modification :
- Appelants qui n’ont pas d’objets
X509ChainPolicy
de longue durée. - Appelants qui attribuent explicitement la propriété
X509ChainPolicy.VerificationTime
.
Les appelants ayant un objet X509ChainPolicy
de longue durée de vie et souhaitant utiliser le comportement précédent peuvent définir la nouvelle propriété X509ChainPolicy.VerificationTimeIgnored
sur false
ou définir la propriété X509ChainPolicy.VerificationTime
sur DateTime.Now
.
var policy = new X509ChainPolicy
{
// ...
VerificationTime = DateTime.Now,
};
ou
var policy = new X509ChainPolicy
{
// ...
VerificationTimeIgnored = false,
};
API affectées
- System.Security.Cryptography.X509Certificates.X509ChainPolicy
- System.Security.Cryptography.X509Certificates.X509ChainPolicy.VerificationTime
System.Security.Cryptography.X509Certificates.X509ChainPolicy.VerificationTimeIgnored
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour