WCF新手-如何安装和使用SSL证书?对于以前做过的人来说,这应该是一件轻而易举的事……我正在尝试使用NetTcpBinding设置自托管WCF服务。我从Thawte获得了试用版SSL证书并将其成功安装在我的IIS商店中,而且我认为我已经在服务中正确设置了它-至少我没有遇到异常!现在,我正在尝试连接客户端(它仍在我的开发机器上),它给我一个错误,“Message="X.509certificateCN=ssl.mydomain.com,OU=Fortestingpurposesonly。没有保证。,OU=IT,O=MyCompany,L=MyTown,S=None,C=IL建链失败。使用的证书具有无法验证的信任链。替换证书或更改certificateValidationMode。证书链已处理,但在不受信任提供者信任的根证书中终止。“Oooookeeeey...现在怎么办?客户端代码(我想在代码中执行此操作,而不是app.config):varbaseAddress="localhost";varfactory=newDuplexChannelFactory(newInstanceContext(SiteServer.Instance));factory.Endpoint.Address=newEndpointAddress("net.tcp://{0}:8000/".Fmt(baseAddress));varbinding=newNetTcpBinding(SecurityMode.Message);binding.Security.Message.ClientCredentialType=MessageCredentialType.UserName;factory.Endpoint.Binding=binding;varu=factory.Credentials.UserName;u.UserName=userName;u.Password=password;returnfactory.CreateChannel()AddedBounty我刚刚从Thawte得到了一个新的尝试了证书,安装将“发布到”设置为mydomain.com,我仍然收到上述错误。我是网络安全新手,所以我需要详细说明如何让客户连接到我的网站并接受安全证书。(通过顺便问一下,“不保证”是什么意思?)问题似乎是客户端不信任您在服务器上安装的服务器证书。为了使其受信任,服务器证书的根CA证书需要在运行客户端的根证书颁发机构存储的用户的“受信任”中。如果您从Thawte或其他类似的CA获得“生产”级服务器证书,那么它将受到全球大多数机器的信任。但是,从错误消息来看(证书的主题专有名称包含“OU=Fortestingpurposesonly.Noguarantees.”)您的证书是测试证书,因此您需要将CA证书添加到“TrustedRootCertificationAuthorities”"手动存储。根证书通常可以从CA(在您的案例中是Thawte)网站下载。如果证书用于ssl.mydomain.com,则需要访问该地址的服务器。看起来你正试图通过localhost访问它,这显然是不一样的。问题是您的证书颁发者不受信任。WCF将尝试验证证书链。一种解决方案是确保用于颁发您拥有的证书的证书存储在服务器的受信任颁发者存储中。您还可以添加自定义证书策略以绕过开发环境的验证(如此处所述)您还可以将证书存储在“受信任的人”中并将certificateValidationMode设置为ChainOrPeerTrust。这将尝试验证整个链,除非您将证书放在“受信任的人”存储中。这将允许您在部署到生产环境时保持配置和代码不变。您只需要将证书放入开发环境中的“受信任的人”存储中即可。在.netcore2.0中,我们必须通过nuget包管理器搜索System.ServiceMode来执行此操作,您可以使用System.ServiceModel.primitives。2018年4月更新以上为C#学习教程:NewtoWCF-HowtoinstallanduseSSLcertificate?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
