解决了我与XMLRPC.NET + HTTPs相关的问题后,我用这个XMLRPC客户端/服务器样本解决方案在Windows上做了一些成功的测试,但无法让客户端(在Mono Linux上运行)连接到服务器(在Windows 7上运行)。我正在使用自己生成的证书进行测试(无论是在客户端还是在服务器端),但它在Linux上不适用于客户端。Mono C#HTTPs(XMLRPC.NET)失败:客户端证书或服务器证书问题?
正如你所看到的,客户端代码生成上启动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
。
有没有人有什么想法?非常感谢你。
嗨,谢谢,poupou。所以如果我理解的很好,在Mono上,我需要创建一个PKCS文件(使用makecert?),然后使用'X509Certificate2'类加载这个文件? – virrea
Mono的makecert可以创建PKCS#12文件。旧版本(不确定更新版本)的Microsoft makecert不能。但是**是**一旦您获得了PKCS#12文件,那么您将可以使用'X509Certificate2'来读取它(使用可选的密码来保护私钥) – poupou