Question

J'ai un certificat donné installé sur mon serveur. Ce certificat a des dates valides et semble parfaitement valide dans le composant logiciel enfichable MMC des certificats Windows.

Cependant, lorsque j'essaie de lire le certificat pour l'utiliser dans une requête HttpRequest, je ne le trouve pas. Voici le code utilisé:

    X509Store store = new X509Store(StoreName.Root, StoreLocation.LocalMachine);
    store.Open(OpenFlags.ReadOnly); X509Certificate2Collection col =
    store.Certificates.Find(X509FindType.FindBySerialNumber, "xxx", true);

xxx est le numéro de série; l'argument true signifie "seuls les certificats valides". La collection renvoyée est vide.

Ce qui est étrange, c'est que si je transmets false , indiquant que les certificats non valides sont acceptables, la collection contient un élément: le certificat avec le numéro de série spécifié.

En conclusion: le certificat semble valide, mais la méthode Rechercher le considère comme invalide! Pourquoi?

Était-ce utile?

La solution

Essayez de vérifier la chaîne de certificats à l'aide de X509Chain classe. Cela peut vous dire exactement pourquoi le certificat n'est pas considéré comme valide.

Comme l’a suggéré Erickson, il se peut que votre X509Store ne contienne pas le certificat approuvé par l’autorité de certification dans la chaîne. Si vous avez utilisé OpenSSL ou un autre outil pour générer votre propre autorité de certification auto-signée, vous devez ajouter le certificat public de cette autorité de certification au X509Store.

Autres conseils

Le certificat de l'émetteur est-il présent dans le X509Store? Un certificat n’est valide que s’il est signé par une personne de confiance.

S'agit-il d'un certificat provenant d'une véritable autorité de certification ou de celui que vous avez vous-même signé? Les outils de signature de certificats souvent utilisés par les développeurs, tels que OpenSSL, n’ajoutent pas d’extensions importantes par défaut.

Je pense que les certificats x509 sont liés à un utilisateur particulier. Pourrait-il être invalide car dans le code, vous y accédez en tant qu'utilisateur différent de celui pour lequel il a été créé?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top