- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个 WCF 服务,它使用具有传输安全性的证书身份验证。该服务部署在windows服务中,使用wshttp绑定(bind)。
当我尝试在 Debug模式下或在本地机器上部署为服务后访问该服务时,我总是收到错误消息“HTTP 请求被禁止使用客户端身份验证方案匿名”
在折腾了一个星期之后,我偶然发现了这篇来自微软的知识库文章
http://support.microsoft.com/kb/2801679
KB 931125 Package installed more than 330 Third-party Root Certication Authorities. Currently, the maximum size of the trusted certificate authorities list that the Schannel security package supports is 16 kilobytes (KB). Having a large amount of Third-party Root Certication Authorities will go over the 16k limit, and you will experience TLS/SSL communication problems.
我尝试了他们删除第三方可信机构的解决方案,发现我什至无法浏览到 Google 或任何启用 https 的网站。
但解决方案有效,我能够调用我的 WCF 服务。
现在我已经从 KB 链接 http://support.microsoft.com/kb/931125 恢复了第三方可信机构因为我不能访问很多网站,而且 vpn,电子邮件不起作用。
恢复后,我再次无法访问我的 WCF 服务。
解决这个问题的最佳方法是什么?
我现在得到了解决方案,需要做以下事情
最佳答案
What is the best way to resolve this?
在 .Net 中,我们可以使用一个 CA 而不是整个商店的 330 多个。 Programming WCF Services Juval Lowy 在第 570 页左右讨论了使用服务器证书。Lowy 讨论了验证和 IEndpointBehavior
和 X509ServiceCertificateAuthentication
。
但是,我无法判断 WCF 是否具有 SslStream
和 ServicePointManager
中的 RemoteCertificateValidationCallback
?如果可用,请使用您需要的一个 CA 并从文件系统加载它:
static bool VerifyServerCertificate(object sender, X509Certificate certificate,
X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
try
{
String CA_FILE = "ca-cert.der";
X509Certificate2 ca = new X509Certificate2(CA_FILE);
X509Chain chain2 = new X509Chain();
chain2.ChainPolicy.ExtraStore.Add(ca);
// Check all properties
chain2.ChainPolicy.VerificationFlags = X509VerificationFlags.NoFlag;
// This setup does not have revocation information
chain2.ChainPolicy.RevocationMode = X509RevocationMode.NoCheck;
// Build the chain
chain2.Build(new X509Certificate2(certificate));
// Are there any failures from building the chain?
if (chain2.ChainStatus.Length == 0)
return true;
// If there is a status, verify the status is NoError
bool result = chain2.ChainStatus[0].Status == X509ChainStatusFlags.NoError;
Debug.Assert(result == true);
return result;
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
return false;
}
我没有想出如何默认使用这个链(上面的chain2
),这样就不需要回调了。也就是说,将它安装在 ssl 套接字上,连接就会“正常工作”。而且我没有弄清楚如何安装它以便将其传递到回调中。也就是说,我必须为回调的每次调用构建链。我认为这些是 .Net 中的架构缺陷,但我可能遗漏了一些明显的东西。
类似的答案出现在几个问题中,例如 Verify Remote Server X509Certificate using CA Certificate File .
关于.net - 通过 SSL : Issue with WCF access due to Third-party Trusted Root Certification Authorities 的 WCF 通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22773480/
我正在研究电子词典,我有 2 个表: 第一个表:Term +----+--------------+| id | term_text |+----+--------------+| 1 | h
题目地址:https://leetcode.com/problems/third-maximum-number/description/ 题目描述 Given a non-empty array
在计算源代码行(SLoC)的上下文中,每种编程语言上定义的“第三代规模”因素是什么? 最佳答案 事实证明,这可能是CLOC进行的专有计算。 资料来源:http://cloc.sourceforge.n
我确切地知道“第三方库”是什么,所以我认为这种情况下的“第三方”只是开发者以外的任意个人或公司? 这与“第一人称”、“第二人称”和“第三人称”语法观点有关吗? 存在“第三方”的事实表明也存在“第一方”
我有三个表:user、home、user_home。 在代码中我有实体用户和主页。 在存储库中,我想通过家庭地址获取用户。 我正在使用下一个代码: @Query("select u " +
在一次求职面试中,招聘人员问我“hibernate 有多少级缓存?” 所以我描述了级别 1 和级别 2。 他说的是正确的,但还有第三级缓存,例如缓存一些不经常更改的表的结果,如“CURRENCY”或“
如何添加>第三个之前元素而不添加新的任何类或 ID? 这是 JsFiddle . HTML: Ethernet Compputer Design CSS: .breadcrumb-ta
在研究工具 distutils 时,我偶然发现了术语“第三方模块”。这是什么意思? 最佳答案 第三方模块是由第三方(既不是您也不是 python 编写者 (PSF))编写的任何代码。 您可以使用它们向
在数据模型部分的官方 python 文档中,__ipow__ method定义为: object.__ipow__(self, other[, modulo]) 然后,文档解释说调用这些方法来实现扩充
有什么区别: x := make([]int, 5, 10) x := make([]int, 5) x := [5]int{} 我知道 make 分配一个数组并返回一个引
当我尝试使用以下命令安装约定时出错:npx Thirdweb@Latest Create--Contact。无法在包读取未定义的属性(正在读取‘(file:///C:/Users/parth/AppD
我有一个关于编程和英语语言的问题:在评论单行代码时是使用第三人称还是命令式。 假设在命令式语言中的以下代码行应该被注释: object.doSomething(); 我评论这一行的方法是使用第三人称将
据我了解,ctrl-d 和 ctrl-u 将窗口滚动到 scroll 中设置的行数选项,默认为窗口高度的一半。可以改成按窗口高度的三分之一滚动吗? 最佳答案 scroll 的默认值是动态的 — 在一个
据我了解,ctrl-d 和 ctrl-u 将窗口滚动到 scroll 中设置的行数选项,默认为窗口高度的一半。可以改成按窗口高度的三分之一滚动吗? 最佳答案 scroll 的默认值是动态的 — 在一个
我最近一直在尝试使用 Jest 学习单元测试,阅读文档和各种文章。 有一件事我一直没弄清楚: 我正在尝试测试一个以 os.platform() 为条件的 if 语句的 nodeJS 模块。 我的测试有
因为我在 Android 上做一些单元测试,我通常使用 Robotium . 这个工具的核心功能非常强大,但我制作了一些辅助类,我想将它们导出到一个单独的项目中,这样我就可以在我的所有项目中重复使用它
我对创建/设计(但很可能只是想象)三元计算机而不是二进制计算机的想法非常感兴趣。 如果我要这样做,我会使用一个平衡的 base-3 系统,所以一个 trit (trit 是 base-3 就像 bit
我开发了一项服务 (Service),它可以自动执行用户可以在另一个第三方站点 (3rd Party Site) 上执行的某些操作。 我的服务为用户提供以下功能: 用户在Service注册 用户向服务
我在 Angular 2 最终版本中对 observable(http.get 的结果)使用订阅方法。虽然 subscribe 方法的第一个参数是从后端获取数据的函数,第二个是在错误时执行的函数(如状
我正在为我们的客户构建一个API。我们称之为MY_API。 1)我们的客户端POST/user和json请求{用户名:'TEST',密码:'xxx'}。 2)MY_API将在第三方api(例如http
我是一名优秀的程序员,十分优秀!