2009-05-21 4 views
3

Je dois sécuriser un service WCF qui utilise netTcpBinding et se connecte directement à une application Windows Forms. Je n'ai besoin que d'être sécurisé à la couche de transport. Je suis assez sûr que je l'ai travailler localement, c'est-à-dire que je peux exécuter le service localement, et me connecter avec le client.WCF avec sécurité de transport netTcpBinding et certificat

Lorsque j'essaie de configurer le service pour qu'il s'exécute sur un serveur plutôt que sur mon ordinateur local, j'ai des problèmes de certificat. Le journal des erreurs indique que le certificat doit avoir une clé privée capable d'échanger des clés et que le processus doit avoir des droits d'accès pour la clé privée. J'utilise un certificat de développement créé avec makecert.

makecert -n "CN=MY COMPANY DEBUG" -pe -sky exchange Debug.cer 

Je dois avouer que je suis très novice dans l'utilisation des certificats. Quelqu'un at-il des pointeurs sur la façon dont je peux résoudre ce problème, ou une meilleure façon d'utiliser un certificat pour ajouter la sécurité de transport à un service WCF en utilisant netTcpBinding?

Merci.

+0

Un couple de questions qui peuvent aider. Quel système d'exploitation est le serveur en cours d'exécution? Comment le service est-il hébergé? (IIS/Auto-hébergé) Voulez-vous utiliser le même certificat de votre boîte de développement sur le serveur de test ou est-ce que ce serveur sera le vrai serveur? – blowdart

+0

Il est auto-hébergé car le client se connecte directement à l'application Windorws Forms. –

+0

Windows Server. Auto-hébergé Ce n'est pas le vrai serveur, juste un serveur de développement pour les tests internes. – 80bower

Répondre

6

Essayez ceci:

makecert -n "CN=MY COMPANY DEBUG" -pe -sky exchange Debug.cer -sv Debug.pvk 
pvk2pfx -pvk Debug.pvk -spc Debug.cer -pfx Debug.pfx 

Vous finirez ensuite avec trois fichiers, le fichier .cer (clé publique), la .pvk (clé privée) et la .pfx (échange de clés avec les deux) . Vous pouvez ensuite installer le fichier .pfx sur le serveur comme ceci:

certutil -p "" -importPFX Certificates\Debug.pfx 

A la fin du client, il vous suffit d'installer le fichier .cer. Ces installations (.cer et .pfx ci-dessus), vous pouvez également faire à travers le composant logiciel enfichable Certificats MMC (Démarrer, Exécuter, MMC.exe, puis ajouter le composant logiciel enfichable Certificats pour la machine en cours).

+0

J'ai essayé et j'ai eu la même erreur. Comment puis-je m'assurer que le processus a des droits d'accès? – 80bower

+0

Dans le composant logiciel enfichable Certificats, vous devriez pouvoir voir votre certificat sous les personnes personnelles et de confiance si la communication est sur la même machine. Pouvez-vous le voir dans les deux endroits? –

+0

Est-ce que cela devrait être dans le magasin local? J'ai l'impression que je peux aboyer le mauvais arbre avec l'utilisation de ces certs. Je dois faire plus de recherches sur leur fonctionnement, car je suis assez nouveau pour eux. – 80bower

0

Lire this (couvre le cas https mais peut encore aider) et this. Puisque nous parlons de la sécurité au niveau du transport, je ne pense pas que votre processus de serveur devrait savoir quoi que ce soit au sujet du certificat que vous utilisez pour le fournir.

+0

Mais ne dois-je pas spécifier un certificat lors de l'utilisation de la sécurité de transport basée sur le certificat pour le service? – 80bower

+0

Sur le serveur, vous devez l'associer au port que vous utilisez pour SSL. Sur le client, vous importez le certificat dans le magasin de personnes de confiance pour indiquer que vous êtes prêt à communiquer des données sensibles à quiconque s'identifie avec ce certificat. –

Questions connexes