9 votes

Ne peut pas lire les certificats de CurrentUser depuis X509Store

Je développe une application web ASP.NET 4.0 et je souhaite lire les certificats actuels de l'utilisateur à partir de X509Store. La lecture des certificats de LocalMachine fonctionne bien, mais si je définis le StoreLocation sur CurrentUser, cela me renvoie une collection vide.

Le code suivant fonctionne bien :

X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine); // StoreLocation.CurrentUser
store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);

J'ai vérifié mon magasin personnel (via certmgr.mmc) et je suis sûr d'avoir les certificats.

Qu'est-ce que j'ai oublié ? (store.Certificates est vide)

2voto

Tale Masinov Points 223

Il semble que vous ne pouvez pas accéder au magasin de certificats personnels via une application web, peu importe l'identité du pool d'applications que vous utilisez.

Cela a du sens, une application web n'a pas accès à cet emplacement. :)

Ma solution :

J'ai développé un contrôle ActiveX que je pense être le seul moyen d'accéder au magasin. (Un Java Applet offre également la même fonctionnalité). J'utilise le contrôle ActiveX via JavaScript pour accéder au magasin, et envoyer ces informations au serveur.

0voto

quetzalcoatl Points 8814

Si votre processus de travail ne peut pas accéder au magasin de certificats, peut-être que c'est juste un problème de configuration de compte. Essayez d'aller dans la Configuration IIS, ouvrez ApplicationPools, faites un clic droit sur le vôtre, sélectionnez Avancé et essayez de définir LoadUserProfile sur TRUE. Et redémarrez le pool. Ça a fonctionné pour moi - plus d'exceptions lors du chargement de .PFX avec des clés privées.

0voto

Tom Mulgrew Points 131

J'ai eu un problème similaire. La solution était :

Administrateur IIS->[votre répertoire virtuel]->Authentification->Authentification anonyme (sélectionnez puis cliquez sur "Modifier...") et changez-le pour utiliser "Identité du pool d'applications".

Autrement, il pourrait être exécuté en tant que "IUSR" générique.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X