首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何加密,但不安全的WCF消息?

我如何加密,但不安全的WCF消息?
EN

Stack Overflow用户
提问于 2011-08-25 11:32:04
回答 2查看 878关注 0票数 2

我已经创建了一个应用程序,它可以让机器在网络上互相交流。我想使用NetTCPBinding对消息进行加密。但是,我不需要或不需要证书或windows身份验证。我尝试将安全模式设置为Message以获得加密,并将安全性传输到none,以避免证书/windows身份验证,但仍然得到:

System.ServiceModel.Security.SecurityNegotiationException:调用者没有通过服务进行身份验证。-> System.ServiceModel.FaultException:由于身份验证失败,无法满足对安全令牌的请求。

以下是相关代码:

代码语言:javascript
复制
NetTcpBinding binding = new NetTcpBinding();
binding.Security.Mode = SecurityMode.Message;
binding.Security.Transport.ClientCredentialType = TcpClientCredentialType.None;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-27 12:43:14

这个问题的答案是有效的:自托管wcf服务器-从文件加载证书,而不是从证书存储加载证书

我的代码:

代码语言:javascript
复制
var certificate = new X509Certificate2("cert.pfx", "");

host = new ServiceHost(MessageProvider, address);
host.Credentials.ServiceCertificate.Certificate = certificate;
host.Credentials.ClientCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.None;

NetTcpBinding binding = new NetTcpBinding();
binding.Security.Mode = SecurityMode.Message;
binding.Security.Message.ClientCredentialType = MessageCredentialType.Certificate;
binding.Security.Transport.ClientCredentialType = TcpClientCredentialType.Certificate;
host.AddServiceEndpoint(typeof(IService), binding, address);
host.Open();
票数 4
EN

Stack Overflow用户

发布于 2011-08-25 11:44:01

我想这就是你要找的:匿名客户端的消息安全性。我认为,在您的情况下,问题在于您的服务没有在服务器端指定证书:

初始协商需要服务器身份验证,但不需要客户端身份验证。

因此,当实例化服务时,尝试执行类似于(来自MSDN)的操作:

代码语言:javascript
复制
myServiceHost.Credentials.ServiceCertificate.SetCertificate(
     StoreLocation.LocalMachine,
     StoreName.My,
     X509FindType.FindByThumbprint,
     "00000000000000000000000000000000");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7189607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档