J'ai un certificat généré via MakeCert. Je souhaite utiliser ce certificat pour la sécurité des messages WCF à l'aide de PeerTrust. Comment puis-je installer le certificat par programme dans le magasin de certificats de la machine locale "personnes de confiance" en utilisant c # ou .NET?
J'ai un fichier CER, mais je peux également créer un PFX.
Je pense que c'est correct:
using (X509Store store = new X509Store(StoreName.TrustedPeople, StoreLocation.LocalMachine))
{
store.Open(OpenFlags.ReadWrite);
store.Add(cert); //where cert is an X509Certificate object
}
Ce qui suit me convient:
private static void InstallCertificate(string cerFileName)
{
X509Certificate2 certificate = new X509Certificate2(cerFileName);
X509Store store = new X509Store(StoreName.TrustedPublisher, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadWrite);
store.Add(certificate);
store.Close();
}
Au lieu d'installer le certificat sur LocalMachine qui nécessite des privilèges élevés, vous pouvez l'ajouter à "CurrentUser" (fonctionne pour moi).
X509Store store = new X509Store(StoreName.TrustedPeople, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadWrite);
store.Add(cert); //where cert is an X509Certificate object
store.Close();
J'ai dû utiliser X509KeyStorageFlags. PersistKeySet | X509KeyStorageFlags. Indicateurs MachineKeySet pour résoudre "Le jeu de clés n'existe pas" erreur qui s'est produite plus tard lors de la tentative d'utilisation du certificat:
X509Certificate2 certificate = new X509Certificate2(pfxPath, password, X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.MachineKeySet);
using (X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine))
{
store.Open(OpenFlags.ReadWrite);
store.Add(certificate);
store.Close();
}
Merci à cet article: La clé privée du certificat dans le magasin de certificats n'est pas lisible