Je développe un service WCF avec Transport Security hébergé sur IIS 7.5 sous Windows 2008R2. J'ai un certificat, généré dans IIS 7.5, qui est stocké dans le dossier Local.
Lorsque j'utilise BasicHttpBinding ou WSHttpBinding avec Transport Security, tout fonctionne correctement. Mais lorsque je le change en NetTcp, je reçois une exception:
CryptographicException 'Keyset does not exist'.
Après quelques recherches sur Google, j'ai découvert que le problème pouvait être dû au fait que mon compte NETSERVICE IIS n'a pas de premission sur la clé privée de mon certificat.
La solution pourrait consister à définir les droits d'accès dans MMC en cliquant avec le bouton droit de la souris sur mon certificat et en sélectionnant l'option "GÉRER LES CLÉS PRIVÉES". Mais il n'y a pas une telle option dans le menu de sélection !!! Le certificat a été créé sous un compte administrateur et où je l'ouvre - il est indiqué qu'il possède une clé privée. Qu'est-ce que je fais mal?
Allez sur le serveur -> cliquez sur Démarrer -> Exécuter -> tapez mmc -> entrez -> sélectionnez le composant logiciel enfichable Certificats avec ordinateur local -> Allez à la racine de la console-> Certificats-> Personnel-> Certificats-> Sélectionnez un certificat-> Clic droit-> Aller à toutes les tâches-> Gérer les clés privées-> Ajouter des autorisations
L'option Gérer les clés privées était manquante lorsque j'ai essayé d'ajouter les certificats. Enfin corrigé en suivant deux étapes.
Ran MMC en tant qu'administrateur. Fichier-> Ajouter ou supprimer des composants logiciels enfichables-> Sélectionner des certificats -> Cliquer sur le bouton Ajouter. Ceci ouvrira une boîte de dialogue. Ce composant logiciel enfichable gérera toujours le certificat pour: choisissez un compte d'ordinateur. Sélectionnez l'ordinateur que vous souhaitez que ce composant logiciel enfichable gère: choisissez Ordinateur local. Cliquez sur Terminer. Cliquez sur OK.
Lorsque vous importez les certificats (Toutes les tâches -> Importer) dans le dossier personnel, vérifiez que vous importez le fichier .pfx et NON le fichier .cer.
J'ai eu ce même problème (option Gérer les clés privées manquant). Afin de le faire apparaître, j'ai dû ajouter le composant logiciel enfichable Certificats en utilisant l'option "Compte d'ordinateur" au lieu du paramètre par défaut "Mon compte d'utilisateur".
Il peut y avoir un autre problème, alors je le mentionnerai. À l'exception de l'argument -pe
lors de la création d'un certificat à l'aide de makecert.exe, assurez-vous d'importer le fichier .pfx
et non le .cer
. S'il n'y a pas de fichier .pfx
, utilisez un outil supplémentaire tel que pvk2pfx.exe
pour le créer.
Dans Windows 10 1809, il semble que l'option Gérer les clés privées est disponible uniquement pour les certificats du magasin personnel. La solution consiste à faire glisser le certificat là-bas, à ajouter les autorisations nécessaires et à le faire glisser à l'endroit souhaité.
Dans mon cas, j'ai rencontré ce problème malgré la configuration du composant logiciel enfichable Certificats pour accéder au compte COMPUTER. De plus, la suggestion d'obtenir un certificat .PFX dans cette réponse n'est pas une option pour moi.
J'ai résolu le problème en spécifiant que la clé privée doit être exportable lors de la création de la demande de certificat (ce que je suis en train de faire via le composant logiciel enfichable Certificats MMC):
Même si le certificat que j'ai obtenu de l'autorité de certification publique était un fichier .CER
, l'option de menu Gérer les clés privées était disponible. Je ne connais pas beaucoup les certificats, mais je conclus que l'option de menu n'apparaît que lorsque la clé privée peut être exportée. À la lumière de cette réponse , peut-être que des certificats au format .PFX always permettent de le faire. Néanmoins, il est bon de savoir que cela est possible pour d'autres formats de certificat.