Question

J'ai des problèmes pour importer et accéder à une clé privée avec l'utilisateur ASPNET. Je sais que lorsque l'on importe manuellement une clé privée (fichier .pfx), sous Windows, vous avez la possibilité de marquer la clé comme étant exportable. Pour autant que je sache, cela est nécessaire pour pouvoir récupérer cette clé privée ultérieurement.

Mon problème vient du fait que j'importe la clé privée dans le code, en tant qu'utilisateur ASPNET, et qu'il ne semble pas y avoir de moyen de la marquer comme étant exportable, contrairement à l'assistant d'importation de certificat Windows. Pour clarifier, l'importation fonctionne parfaitement, mais lorsque j'accède aux détails du certificat maintenant importé, il n'y a pas de données de clé privée.

C'est le code que j'utilise pour importer le certificat, une fois que j'ai déjà ouvert le fichier .pfx, avec le mot de passe correct.

public void ImportCertificate(X509Certificate2 cert, StoreName name, StoreLocation loc)
{
    X509Store certStore = new X509Store(name, loc);
    StorePermission permission = new StorePermission(PermissionState.Unrestricted);
    permission.Flags = StorePermissionFlags.AddToStore;
    permission.Assert();
    certStore.Open(OpenFlags.ReadWrite);
    certStore.Add(cert);
    certStore.Close();
}

Est-ce que je gâche les autorisations ou la façon dont j'importe cette clé privée? Ou est-ce que je m'y prend tout à fait à l'envers?

Était-ce utile?

La solution

Je pense que vous devez définir l'indicateur X509KeyStorageFlags.Exportable lorsque vous importez le certificat. Vous ne montrez pas ce code, mais il y a une surcharge de la méthode d'importation avec cette signature:

public override void Import(string fileName, string password, 
                            X509KeyStorageFlags keyStorageFlags);

ou celui-ci:

public override void Import(byte[] rawData, string password, 
                            X509KeyStorageFlags keyStorageFlags);

Ce qui vous permettra de le définir avant d'importer. Sinon, tout va bien!

Richard

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