WCF使用netTcpBinding和证书传输安全性

3

我需要保护一个使用netTcpBinding并直接连接Windows窗体应用程序的WCF服务。我只需要在传输层对其进行保护。

我相当确定它在本地工作,即我可以在本地运行服务,并使用客户端连接到它。

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

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

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

我必须承认,我对使用证书非常陌生。有没有人能给我一些指导,告诉我如何修复这个问题,或者更好的方法是使用证书来为使用 netTcpBinding 的 WCF 服务添加传输安全性?

谢谢。


可能有几个问题可以帮助您。服务器正在运行哪个操作系统?服务是如何托管的?(IIS/自托管)您是否想在测试服务器上使用开发框上相同的证书,还是该服务器将成为真正的服务器? - blowdart
它是自托管的,因为客户端直接连接到Windows Forms应用程序。 - Dmitry Ornatsky
Windows Server。自托管。这不是真正的服务器,只是用于内部测试的开发服务器。 - 80bower
2个回答

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文件。您可以通过证书MMC插件(开始,运行,MMC.exe,然后为当前计算机添加证书插件)来安装这些文件(如上所述的.cer和.pfx文件)。


我尝试了这个,但是得到了相同的错误。我该如何确保该进程具有访问权限? - 80bower
在证书管理器中,如果通信在同一台机器上,您应该能够在“个人”和“受信任的发布者”下看到自己的证书。请问您是否在这两个位置都看到了它? - David M
这个应该放在本地机器存储吗?我感觉可能使用这些证书是错误的方向。我需要更多地研究它们的工作原理,因为我对它们还很陌生。 - 80bower

0

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

既然我们正在讨论传输层安全性,我认为你的服务器进程不应该知道你正在使用的证书的任何信息来提供它。


但是,当我使用基于证书的传输安全性来保护服务时,我不需要指定证书吗? - 80bower
在服务器端,您必须将其与您用于SSL的端口关联起来。 在客户端上,您将证书导入到“受信任的人”存储区,以表明您已准备好将敏感数据传输给使用此证书进行身份验证的人。 - Dmitry Ornatsky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接