c# - WCF 新手 - 如何安装和使用 SSL 证书?

标签 c# wcf ssl ssl-certificate

对于以前做过的人来说,这应该是小菜一碟...

我正在尝试使用 NetTcpBinding 设置自承载 WCF 服务。我从 Thawte 获得了一个试用版 SSL 证书,并成功地将其安装在我的 IIS 商店中,而且我认为我已经在服务中正确设置了它 - 至少它不会对我造成异常!

现在,我正在尝试连接客户端(这仍然全部在我的开发机器上),它给我一个错误,“消息 =”X.509 证书 CN=ssl.mydomain.com,OU=仅用于测试目的。没有保证。, OU=IT, O=My Company, L=My Town, S=None, C=IL 链构建失败。使用的证书具有无法验证的信任链。替换证书或更改 certificateValidationMode。证书链已处理,但终止于不受信任提供者信任的根证书。”

Oooookeeeey...现在怎么办?

客户端代码(我想在代码中执行此操作,而不是 app.config):

var baseAddress = "localhost";
var factory = new DuplexChannelFactory<IMyWCFService>(new InstanceContext(SiteServer.Instance));
factory.Endpoint.Address = new EndpointAddress("net.tcp://{0}:8000/".Fmt(baseAddress));
var binding = new NetTcpBinding(SecurityMode.Message);
binding.Security.Message.ClientCredentialType = MessageCredentialType.UserName;
factory.Endpoint.Binding = binding;
var u = factory.Credentials.UserName;
u.UserName = userName;
u.Password = password;
return factory.CreateChannel()

增加赏金 我刚刚从 Thawte 获得了新的试用证书,安装时将“颁发给”设置为 mydomain.com,但我仍然收到上述错误。我是网络安全的新手,所以我需要详细说明如何让客户端连接到我的网站并接受安全证书。 (顺便说一句,“无保证”是什么意思?)

最佳答案

问题似乎是您在服务器上安装的服务器证书不受客户端信任。

要获得信任,服务器证书的根 CA 证书需要位于运行客户端的用户的“受信任的根证书颁发机构”存储中。如果您从 Thawte 或其他类似的 CA 获得“生产”级别的服务器证书,它就已经被世界上大多数机器所信任。

但是,根据错误消息(其中证书的主题专有名称包含“OU=For Test Purposes Only. No assurances.”)判断,您的证书是测试证书,因此您需要将 CA 证书添加到您的“受信任的根证书颁发机构”手动存储。根证书通常可以从 CA(在您的案例中是 Thawte)的网站上下载。

关于c# - WCF 新手 - 如何安装和使用 SSL 证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4579666/

相关文章:

c# - C# 7 基于元组的变量交换线程安全吗?

c# - 不同的委托(delegate)用途

c# - 使 DataContract 中的 DataMember 使用隐式转换为字符串运算符

go - 使用 golang 将 DSA key 解析为 tls 配置对象

c# - 从 DataGrid 中自动删除新行

c# - 通用权限管理器模式

c# - 在不更改 URI 模板反序列化的情况下使用自定义 WCF 正文反序列化

c# - 如何从 Azure Web 应用程序与 IIS 中本地托管的 WCF 服务进行通信?

.htaccess - 从 https ://123-reg hosting htaccess file 中删除 html 扩展时出现问题

java - 拥有恒定的KeyStore会降低安全性吗?