证书和mozroots的单声道问题

时间:2010-07-19 22:08:34

标签: .net security firefox mono ssl-certificate

我在单声道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

2 个答案:

答案 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)