J'ai un fichier (.p12) contenant 3 certificats (chaînés) protégés par mot de passe, que j'ai installés dans mon magasin. J'essaie de les charger dans mon code. La façon dont je les charge à partir du fichier est comme ceci:Chargement de la chaîne de certificats X509Certificate2 du magasin
var clientCert = new X509Certificate2(@"myfile.p12", "mypassword");
Comment puis-je obtenir le même résultat en les chargeant à partir du magasin?
J'ai essayé:
var computerCaStore = new X509Store(StoreName.Root, StoreLocation.LocalMachine);
computerCaStore.Open(OpenFlags.ReadOnly);
var certificates = computerCaStore.Certificates.OfType<X509Certificate2>().ToList();
var certFromStore = certificates.Single(c => c.Thumbprint == thumbprintMerchant);
var newCert = new X509Certificate2(certFromStore.RawData, "mypassword");
Si la première ligne est représentative de votre code alors 'clientCert' n'est pas enchaîné à 3 certs, mais seulement le cert qui avait une clé privée. La deuxième ligne n'est pas capable de produire l'erreur que vous avez montrée, donc il y a clairement plus de contexte. Comme, comment vous avez 'certFromStore' en premier lieu. – bartonjs
Lorsque j'importe le même fichier dans le magasin, j'obtiens 3 certificats, mais lorsque je le charge à partir du code, c'est un cert avec une clé privée. Alors, comment puis-je obtenir la même chose du magasin? Voici comment je les charge depuis le magasin: 'var computerCaStore = new X509Store (StoreName.Root, StoreLocation.LocalMachine); computerCaStore.Open (OpenFlags.ReadOnly); \t \t \t \t \t var Certificats = computerCaStore.Certificates.OfType(). ToList(); \t \t \t \t var = clientCertificat1 certificates.Single (c => c.Thumbprint == thumbprintMerchant); ' J'utilise l'empreinte numérique –
S'il vous plaît modifier la question pour le contexte. Votre exemple de code dans le commentaire ne correspond pas à la question, ce qui rend difficile de raisonner sur quoi que ce soit. – bartonjs