2009-05-21 106 views
3

我需要保护使用netTcpBinding的WCF服务,并直接与基于Windows Forms的应用程序连接。我只需要它在传输层得到保护。带netTcpBinding和证书传输安全性的WCF

我很确定我在本地工作,即我可以在本地运行服务,并与客户端连接。

当我尝试设置服务以使其在服务器上运行而不是本地计算机时,我遇到了证书问题。错误日志说明证书必须具有能够进行密钥交换的私钥,并且该过程必须具有私钥的访问权限。

我正在使用使用makecert创建的开发证书。

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

我必须承认,我对使用证书很陌生。有没有人有任何指示我可以如何解决这个问题,或更好的方式来使用证书使用netTcpBinding将传输安全性添加到WCF服务?

谢谢。

+0

有几个问题可以帮助。服务器运行什么操作系统?服务如何托管? (IIS /自托管)您是否想在测试服务器上使用您的开发框中的相同证书,或者该服务器是否是真正的服务器? – blowdart 2009-05-21 14:59:55

+0

它是自主托管的,因为客户端直接连接到Windorws Forms App。 – 2009-05-21 15:01:39

+0

Windows服务器。自己托管。它不是真正的服务器,只是用于内部测试的开发服务器。 – 80bower 2009-05-21 15:03:17

回答

6

试试这个:

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

你会再与三个文件,.cer文件(公钥),该.pvk(私钥),以及.PFX(既密钥交换)结束了。然后,您可以像这样在服务器上安装.pfx文件:

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

在客户端,只需安装.cer文件。这些安装(上面的.cer和.pfx)也可以通过证书MMC管理单元(开始,运行,MMC.exe,然后添加当前计算机的证书管理单元)执行。

0

阅读this(涵盖https的情况下,但仍可能有所帮助)和this

由于我们在谈论传输级别的安全性,我不认为你的服务器进程应该知道任何关于你用来提供它的证书。