2009-08-21 118 views
3

我们的设置包括一个WCF服务和我们编写的一些客户端。一些客户端包括Silverlight应用程序,而其他客户端则包括Web和Windows应用程序。WCF证书认证,无需安装在客户端

我(想)我想基于X.509证书来验证客户端。通常你会在客户端安装一个私钥来加密(又名digitaly sign)这些消息。服务器可以使用客户端公钥对其进行解密以确​​保消息未被更改,并证明消息来自我们期望的人(又称为已认证)。

我不想在客户机上安装证书。它是无法部署的,我们不能真正要求我们的客户这样做。我前几天向某个人说话,他们将证书嵌入客户程序集中,阅读并使用它。那可能吗?

如果有人能指点我一个例子,那将会很棒。

由于提前,

大卫

回答

2

是的,你可以通过证书字节数组密码一样

var certificate = new X509Certificate2(theByteArrary, "password"); 

拿到证书的字节数组装载X509certificate2,你可以简单地复制粘贴到.pfx文件内容,它是.cer(公钥)和.pvk(私钥)的组合。

然后你可以在你的客户端加载这个证书:

var channelFactory = new ChannelFactory<IYourService>(); 
channelFactory.Credentials.ClientCertificate.Certificate = 
             clientCertificate; 

如果您使用自动生成的客户端代理,或者您更愿意通过.config文件配置证书,那么您可能需要看看this from codeproject