我在单声道VM上使用此命令
sudo mozroots --import --sync
似乎是从this site获得证书。
然后我尝试连接到我的ssl站点,我得到证书无效的例外。我使用firefox并看到该证书是在2010年发布的。我查看了该文件并查看其上次更新时间是2009-05-21 12:50
当在同一台机器上使用firefox时,我可以导航到我想要连接到的同一个URL,我没有遇到ssl问题。 (没有提醒也没有要求我将其添加到例外中)。
我在这里很困惑。如何更新mono以使用最新的证书?
-edit-我检查了谁签署了我想访问的网站的证书,他们的名字是在certdata。我想知道为什么mono说证书无效。
我尝试写这个,我对它要求我导入的3证书是肯定的
certmgr -ssl https://www.site.com/users/login --machine
我再次运行我的应用程序并收到此错误。谷歌搜索错误代码0xffffffff80092012 i found this。
看起来像是一个没有应用于2.6.4的修复bug。或者我可能做错了。我将ServerCertificateValidationCallback设置为我自己的东西,并为此应用程序返回true作为单声道修复。
System.Net.WebException:获取错误 响应流(写:The 验证或解密 失败了。):SendFailure ---> System.IO.IOException:The 验证或解密 失败。 ---> Mono.Security.Protocol.Tls.TlsException: 收到的证书无效 服务器。错误代码:0xffffffff80092012
答案 0 :(得分:3)
关于bug 606002的后续行动 - 这是忽略所述错误代码的代码。在初始化中调用一次
ServicePointManager.ServerCertificateValidationCallback += delegate(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors sslPolicyErrors) {
if (sslPolicyErrors == SslPolicyErrors.RemoteCertificateChainErrors) {
foreach (X509ChainStatus status in chain.ChainStatus) {
if (status.Status != X509ChainStatusFlags.RevocationStatusUnknown) {
return false;
}
}
return true;
}
return false;
};
答案 1 :(得分:2)