Comment puis-je vérifier par programme si un certain certificat est révoqué à partir de sa liste de listes de révocation de certificats CA?C# verify certificat dans la liste CRL
Je fais ceci:
X509Chain ch = new X509Chain();
ch.ChainPolicy.RevocationMode = X509RevocationMode.Online;
ch.ChainPolicy.RevocationFlag = X509RevocationFlag.EntireChain;
ch.ChainPolicy.UrlRetrievalTimeout = new TimeSpan(1000);
ch.ChainPolicy.VerificationFlags = X509VerificationFlags.NoFlag;
ch.ChainPolicy.VerificationTime = DateTime.Now;
ch.Build(certificate);
foreach (X509ChainStatus s in ch.ChainStatus)
{
string str = s.Status.ToString();
Console.WriteLine("str: " + str);
}
X509Store store = new X509Store(StoreName.Disallowed, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadWrite);
bool isRevoked = store.Certificates.Contains(certificate);
store.Close();
return !isRevoked && certificate.Verify();
et je reçois "str: RevokedStatusUnknown". Seulement si j'attends plusieurs heures après la révocation du certificat -> le statut est renvoyé comme révoqué, malgré le fait que je publie la liste de révocation de certificats immédiatement après la révocation du certificat. Pourquoi n'accède-t-il pas instantanément à la liste de révocation de certificats? Essayez l'exécution de la commande MS suivante: