WCF服务证书身份验证

4
当WCF服务使用证书时,消费WCF服务的客户端将如何发送证书到WCF服务?对我来说,这个想法并不清楚。请讨论人们如何使用WCF和证书。同时,请简要指导我们附加证书到我们的WCF服务需要哪些步骤。
当客户端调用WCF服务的第一次时,客户端将如何发送一个服务证书?WCF客户端如何在调用时将证书发送到WCF服务?在WCF中使用证书身份验证时,服务端和客户端都需要安装服务证书和客户端证书。然后,在客户端,客户端将使用服务公钥加密消息并发送到服务端,然后服务端将使用服务私钥解密消息。而在服务端,它将使用客户端公钥对消息进行加密并发送到客户端。然后,客户端将使用客户端私钥解密消息。如果这是证书身份验证的限制,即我们需要在两端都安装证书,那么我们只能在非常有限的情况下使用证书身份验证。当我们无法控制将消费服务的客户端时,我们如何使用证书身份验证?当客户端未知时,他们如何将证书发送到我们的服务?
实际上,我正在尝试了解人们如何在现实生活中管理实现证书身份验证,当他们无法控制将使用他们的服务的客户端时。谢谢!

你是在谈论客户端证书认证吗?即主机服务将不允许访问,除非客户端和主机有相同的证书? - Brian
是客户端证书。 - Thomas
1个回答

2
好的,您正在寻找潜在客户的客户端证书认证,这始终包括SSL。
我有几个链接供您查看: http://msdn.microsoft.com/en-us/library/ms731074(v=vs.110).aspx是来自微软的官方版本,其中包含很好的信息,但不一定包含设置此项工作的良好指令。
以及 http://architecturebyashwani.blogspot.de/2010/01/wcf-client-authentication-using-x509.html... 我认为这是更好的来源,因为它将带领您完成设置测试所需的证书(自签名)的过程。
至于控制向客户计算机发放和证书,这可能很容易或很困难,具体取决于涉及的客户设备数量和位置。
如果您谈论的是网络内部服务器之间通信的内部实现,或者是几台个人电脑连接到主机,那么这并不太困难。简而言之,您需要将.PFX文件(证书和私钥)复制到客户端和主机,并在证书存储区域(例如LocalComputer\Trusted)中设置它们。然后,您需要设置客户端和主机WCF软件来a)访问证书和b)让主机拒绝非认证用户的访问。
但是,如果您谈论的是为千名携带iPhone、Android和笔记本电脑的人发放和管理证书,那么这就更难以控制了。
这里有一个链接,介绍如何设置内部证书颁发机构:http://technet.microsoft.com/en-us/library/ff849263(v=ws.10).aspx 附加:此DOS脚本将创建客户端身份验证证书,将其打包为PFX并安装到主机的证书存储区域中。
在主机侧,您需要执行以下操作:
 rem Comment -- creates client authentication cert, puts it in the currentuser\root authority and signs it based on the other certificate
 makecert.exe  -n cn=ClientAuthCert ClientAuthCert.cer -is root -sky exchange -pe -sv ClientAuthCert.pvk -eku 1.3.6.1.5.5.7.3.2

 rem Comment -- make the pfx file that will allow you to copy certs around with private keys
 pvk2pfx -pvk ClientAuthCert.pvk -spc ClientAuthCert.cer -pfx ClientAuthCert.pfx -f

 rem Comment -- installs the certificate on the host in the localmachine / trusted people store
 certmgr.exe -add ClientAuthCert.cer  -c -s -r LocalMachine TrustedPeople

在客户端,您需要这样做(在将 .CER 和 .PFX 文件复制到客户端计算机后):
 rem comment -- these lines install the certificates in the stores on the client device
 certmgr.exe -add ClientAuthCert.cer  -c -s -r LocalMachine TrustedPeople
 Certmgr.exe -add ClientAuthCert.pfx  -c -s -r CurrentUser My  

1
首先感谢您的回答。我在WCF领域非常新手。我知道如何生成证书以及如何将证书设置到客户端电脑上。但是如果我无法控制客户端电脑,我该怎么办呢?那么我该如何在他的电脑上设置证书呢? - Thomas
当我们使用makecert.exe创建证书时,证书将存储在我们的本地计算机上。请告诉我文件夹位置。谢谢。 - Thomas
有两种证书文件,一种是cert,另一种是pfx。您能告诉我cert和pfx文件之间的区别以及在何时使用哪种吗? - Thomas
1
抱歉,Thomas,我觉得你和我处于两个不同的时区。我会回答你的一些问题,但我认为你需要按照我发送给你的一个或多个网站的说明进行操作。有几种不同类型的证书文件:有一个.CER文件,它是公钥,有一个.PVK文件,它是私钥文件,然后有一个文件将它们组合在一起,以便从一个地方传输到另一个地方 - 那就是PFX文件。你需要阅读关于MakeCert.exe、MMC证书管理器和其他类似工具的内容才能使其正常工作。 - Brian
当您使用makecert时,可以将证书存储在硬盘上的任何位置。您只需输入路径即可。重要的是要遵循代码示例并正确获取自签名证书。我会在原始帖子中添加一些代码示例,以向您展示如何创建客户端身份验证证书。 - Brian
显示剩余2条评论

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