我们的设置包括WCF服务和我们编写的许多客户。一些客户端包括Silverlight应用程序,而其他客户端包括Web和Windows应用程序。
我(想)我想根据X.509证书对客户端进行身份验证。通常,您将在客户端上安装私钥以加密(也称为数字签名)消息。服务器可以使用客户端公钥对其进行解密,以确保消息未被更改,并证明消息来自我们期望的人(也称为已认证)。
我不想在客户端计算机上安装证书。它是一个部署的默契,我们真的不能要求我们的客户这样做。前几天我正在和某人说话,他们在一个客户大会上把这个证书包含起来,阅读并使用它。那可能吗?
如果有人能指出我的例子,那就太好了。
提前致谢,
大卫
答案 0 :(得分:2)
是的,您可以通过传递带有密码的证书字节数组来加载X509certificate2,如
var certificate = new X509Certificate2(theByteArrary, "password");
要获取证书字节数组,您只需复制粘贴.pfx文件中的内容,该文件是.cer(公钥)和.pvk(私钥)的组合
然后您可以通过执行以下操作在您的客户端上加载此证书:
var channelFactory = new ChannelFactory<IYourService>();
channelFactory.Credentials.ClientCertificate.Certificate =
clientCertificate;
如果您使用自动生成的客户端代理,或者您更喜欢通过.config文件配置证书,那么您可能需要查看this from codeproject
答案 1 :(得分:1)
这是一个建议。也可以调整使用嵌入式证书。