2010-11-24 4 views
1

Permettez-moi d'abord reconnaître que cette question est presque exactement le même que celui-ci: wcf certificate Keyset does not exist problem after reboot
Mais j'ai lu cela et ce n'est pas applicable.WCF négociation de sécurité client à défaut après la déconnexion

J'ai un client et un service WCF utilisant wsHttpBinding, utilisant des certificats et PeerTrust pour l'authentification. Le service est hébergé sur un serveur IIS distinct. Le client est sur ma machine. J'ai les bons certificats installés. J'installe et exécute tout sous mon compte d'utilisateur (je suis dans le groupe Administrateur). Tout fonctionne. Toutefois, lorsque je me déconnecte de mon ordinateur pour la nuit et que je me reconnecte le matin et que j'essaie d'exécuter mon application client comme moi-même, j'obtiens cette erreur: {"Il est probable que le certificat '[certificat client] ] 'peut ne pas avoir une clé privée qui est capable d'échange de clé ou le processus peut ne pas avoir de droits d'accès pour la clé privée.Veuillez voir l'exception interne pour plus de détails.}}
Exception interne dit: {"Keyset n'existe pas"}

Je peux exécuter l'application en tant qu'administrateur et cela fonctionne.
Si, cependant, j'utilise le composant logiciel enfichable MMC à supprimer, puis Importer les certificats à nouveau, je peux exécuter le client comme moi-même sans erreur.
Je peux me déconnecter et continuer et la même chose continue à se produire. Cela ne fonctionne pas jusqu'à ce que je supprime, puis Importer les certificats à nouveau. La seule chose que je fais dans mon application client qui n'est pas "standard" est que je n'utilise pas le fichier de configuration pour WCF. Je configure tout dans le code. Mais cela implique seulement de "lire" les certificats, donc cela ne devrait pas faire de différence. Ma question est la suivante: pourquoi la déconnexion semble-t-elle m'invalider en tant qu'utilisateur des certificats? Cela va évidemment créer un problème lorsque je distribue le client et personne ne peut utiliser l'application après la déconnexion une fois.

Répondre

0

Vous pouvez installer un certificat pour un ordinateur local? Cela empêchera ce comportement.

+0

Je l'importe pour LocalMachine, mais quand je le fais, il le place également dans CurrentUser. Je les ai réimportés, puis les ai supprimés du magasin CurrentUser et cela me donne une erreur. Donc, lors de la création de l'objet X509Certificate2, il cherche dans le magasin CurrentUser. Je ne sais pas pourquoi parce que je spécifie le LocalMachine lors de la création du X509Store. – Marcus

+0

Avez-vous essayé d'importer et d'exporter manuellement? – paragy

+0

C'est ce que je fais. J'utilise le composant logiciel enfichable MMC pour les importer. J'ai également remarqué qu'une fois que je les ai importés dans la machine locale (et les ajoute à l'utilisateur actuel), si je les supprime de l'utilisateur actuel, il les supprime également de la machine locale. Il me manque évidemment quelque chose dans la façon dont la machine locale et l'utilisateur actuel sont liés. – Marcus

Questions connexes