繁体   English   中英

Mono C#HTTP(XMLRPC.NET)失败:客户端证书或服务器证书问题?

[英]Mono C# HTTPs (XMLRPC.NET) failure : client certificate or server certificate issue?

解决了与XMLRPC.NET + HTTPs有关的问题后,我使用此XMLRPC客户端/服务器示例解决方案在Windows上进行了一些成功的测试,但无法使客户端(在Mono Linux上运行)连接到服务器(在Windows 7上运行) 。 我正在使用自行生成的证书进行测试(包括客户端和服务器),但是不适用于Linux上的客户端。

如您所见,客户端代码在启动时会生成X509证书:

System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatePolicy();
IStateName proxy = XmlRpcProxyGen.Create<IStateName>();
XmlRpcClientProtocol cp = (XmlRpcClientProtocol)proxy;
cp.Url = "https://127.0.0.1:5678/";
cp.ClientCertificates.Add(new System.Security.Cryptography.X509Certificates.X509Certificate(@"C:\path\to\your\certificate\file\my.cer"));
cp.KeepAlive = false;

它旨在接受所有证书,甚至不受信任。 但是尽管如此,它仍然无法正常工作。

另外,使用wget进行的一些测试表明, wget https://www.google.com/成功地联系并下载了证书,但在我的情况下, wget https://192.168.1.3:5678/甚至没有--no-check-certificate

有人对发生的事情有想法吗? 非常感谢你。

快速解答:您的.cer文件不包含私钥,因此不能用于客户端证书。

更长的答案

那么它在Windows上如何工作? CryptoAPI将查询其证书存储区,以查看是否存在与证书匹配的私钥。 如果这样做,它将自动加载

在Mono上如何工作? 最简单的解决方案是创建一个X509Certificate2实例,该实例加载PKCS#12文件(即通常以.pfx或.p12为后缀)。 该文件(如果生成正确)将同时包含X.509证书和私钥-允许Mono在此上下文中使用证书。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM