The certificate that was used has a trust chain that cannot be verified问题
今天调用wcf程序的时候发现证书有问题。报的错误如下 The certificate that was used has a trust chain that cannot be verified. Replace the certificate or change the certificateValidationMode. A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider 查找证书发现是自己的证书没有问题,服务器也是没有问题。 后来发现只要在客户端的代码添加一句话就好了。 ServiceReference1.TransportServiceClient proxy = new WCFTest2.ServiceReference1.TransportServiceClient();
proxy.ClientCredentials.UserName.UserName = "xxxx";
proxy.ClientCredentials.UserName.Password = "xxxx";
proxy.ClientCredentials.ServiceCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.None; //重点
原因是我的证书放的位置不对,X509CertificateValidationMode有以下几种方式
None 未执行任何证书验证。
PeerTrust 如果证书位于被信任的人的存储区中,则有效。
ChainTrust 如果该链在受信任的根存储区生成证书颁发机构,则证书有效。
PeerOrChainTrust 如果证书位于被信任的人的存储区或该链在受信任的根存储区生成证书颁发机构,则证书有效。
Custom 用户必须插入自定义 X509CertificateValidator 以验证证书。
那这个配置主要是在服务器端的配置服务器上。
服务器的web.config配置
<clientCertificate >
<certificate findValue="XuanhunClient"
storeLocation="CurrentUser"
storeName="My"
x509FindType="FindBySubjectName"/>
<authentication certificateValidationMode="None" trustedStoreLocation="CurrentUser" />
</clientCertificate>
服务器里面是用的none,那么客户端也需要用None.这里需要保持一致。
但针对https里面加证书了,因为这个证书是在iis的站点增加的。所以不需要增加。
就只要用
ServiceReference1.TransportServiceClient proxy = new WCFTest2.ServiceReference1.TransportServiceClient();
proxy.ClientCredentials.UserName.UserName = "xxxx";
proxy.ClientCredentials.UserName.Password = "xxxx";
Util.SetCertificatePolicy();
就好了。
The certificate that was used has a trust chain that cannot be verified问题的更多相关文章
- 解决Azure 消息队列ServiceBus提示证书不信任无权限的问题
笔者在C# 消息队列-Microsoft Azure service bus 服务总线中使用Azure消息队列,最近偶尔会遇到请求数据不入队列的问题,查找日志,问题如下: 异常:X. certific ...
- 一步步改造wcf,数据加密传输-匿名客户端加密传输
一步步改造wcf,数据加密传输-匿名客户端加密传输 百度搜索wcf加密传输,资料挺多,真真正正能用的确不多. 一是本来就很复杂,而是各位大神给的资料不足.本人今天来提供一个简易方法. 匿名客户端加密传 ...
- Android HTTPS(2)HttpURLConnection.getInputStream异常的原因及解决方案
Common Problems Verifying Server Certificates InputStream in = urlConnection.getInputStream(); getIn ...
- SSL 通信及 java keystore 工具介绍
http://www.javacodegeeks.com/2014/07/java-keystore-tutorial.html Table Of Contents 1. Introduction 2 ...
- (原创) mac 10.9.2 eclipse 的 CDT 的 异常的修复
测试平台:macbook air 2012 , os x 10.9.2 , eclipse 4.3 在升级了 10.9 之后,eclipse 的CDT 无法正常使用了 异常表现: 1. 文 ...
- mac下配置gdb调试golang
mac下配置gdb调试golang 原文链接 https://sourceware.org/gdb/wiki/BuildingOnDarwin Building GDB for Darwin Crea ...
- 【Mac】【创建钥匙串】
1 Mac在钥匙串创建系统证书失败 https://blog.csdn.net/lllkey/article/details/79423596 问题: 在Eclipse的Debug,使用gdb的时候, ...
- [原]Chef_Server and Chef_WorkStation and Chef_Client Install Guide[by haibo]
一.Prerequisite OS : CentOS-7.0-1406-x86_64-DVD.iso Time Server : NTP Server SERVER NAME IP PLAN ...
- h5定位geolaction无法调试解决方法
昨天接到一个在h5获取经纬度的需求,看了文档后,代码其实很简单,但在浏览器上调试就比较蛋疼了... 代码: function successfulCallback(position) { consol ...
随机推荐
- SQL删除重复数据,保留一条
例如: id name value 1 a pp 2 a ...
- Use weechat (IRC client) on OS X. MacBook Pro
Weechat is a console IRC client. It is opensource and very easy to use. I use weechat in my Linux PC ...
- How to make workflow chart using several tools in Linux?
Just as what I said, I usually use yED to make workflow chart and markdown as the language to write ...
- jquery ready方法实现原理 内部原理
jquery ready方法实现原理 内部原理 今天闲来无事研究研究jquery.ready()的内部实现,看JQ的源码一头雾水,由于自己很菜了,于是翻了翻牛人的播客,讲述详细,收获颇多. 先普及一下 ...
- [ios-必看] WWDC 2013 Session笔记 - iOS7中的多任务【转】
感谢:http://onevcat.com/2013/08/ios7-background-multitask/ http://www.objc.io/issue-5/multitasking.htm ...
- labview 调用 matlab script的神坑! Error 1050 occurred at LabVIEW
显示变量没有被定义,原因是clear 关键字的问题,去掉即可!!! 未找到 文件路径,定位: 文件路径中不能有中文路径
- 使用prismjs为网站添加代码高亮功能
prismjs 是一款轻量.可扩展的代码语法高亮库,使用现代化的 Web 标准构建,使用 Prismjs 可以快速为网站添加代码高亮功能,支持超过113中编程语言,还支持多种插件,是简洁.高效的代码高 ...
- Photoshop像素级画笔工具
1.直线工具 2.选择颜色,选择像素 dd
- Float 的那些事
css float 定义元素浮动到左侧或者右侧.其出现的本意是让文字环绕图片而已. left.right.inherit(从父级元素获取float值).none 一.浮动的性质 1. 包裹性 disp ...
- 使用Asponse.Cell解决Excel科学计数法问题
//fileName --文件路径 public DataSet DataSetGetDataFromExcel(string fileName) { DataSet dataset = new Da ...