3

我们的设置包括 WCF 服务和我们编写的一些客户端。一些客户端包括 Silverlight 应用程序,而其他客户端包括 Web 和 Windows 应用程序。

我(想)我想根据 X.509 证书对客户端进行身份验证。通常,您会在客户端上安装一个私钥来加密(也称为数字签名)消息。服务器可以使用客户端的公钥对其进行解密,以确保消息没有被更改并证明消息来自我们期望的人(也就是经过身份验证的人)。

我不想在客户端机器上安装证书。部署起来很麻烦,我们不能真正要求我们的客户这样做。前几天我正在和某人交谈,他建议将证书嵌入到客户端程序集中,阅读并使用它。那可能吗?

如果有人能给我举个例子,那就太好了。

提前致谢,

大卫

4

2 回答 2

2

是的,您可以通过传递带有密码的证书字节数组来加载X509certificate2

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

要获取证书字节数组,您只需将内容复制粘贴到 .pfx 文件中,该文件是 .cer(公钥)和 .pvk(私钥)的组合

然后您可以通过执行以下操作在您的客户端上加载此证书:

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

如果您使用自动生成的客户端代理,或者您更喜欢通过 .config 文件配置证书,那么您可能希望从 codeproject看一下

于 2011-01-31T22:26:12.780 回答
1

这是一个建议。也可以调整为使用嵌入式证书。

http://www.codeproject.com/KB/WCF/wcfcertificates.aspx

于 2010-08-21T06:53:25.770 回答