代码之家  ›  专栏  ›  技术社区  ›  Gerhardh

身份验证或解密失败

  •  1
  • Gerhardh  · 技术社区  · 6 年前

    先说说历史。。。

    这意味着我对C#和/或应用的安全机制不是很有经验。

             try
             {
                doc = XDocument.Load(uri);
             }
             catch (Exception e)
             {
               ...
             }
    

    这个 uri 包含“https://”和IP地址或主机名(“fritz.box”)或外部myfritz地址。

    Firefox只在为该证书添加了一个例外之后才喜欢它们。

    我用这些额外的代码行解决了这个问题:

       static int Main(string[] args)
       {
           System.Net.ServicePointManager.ServerCertificateValidationCallback +=
           delegate (object sender, System.Security.Cryptography.X509Certificates.X509Certificate certificate,
                                    System.Security.Cryptography.X509Certificates.X509Chain chain,
                                    System.Net.Security.SslPolicyErrors sslPolicyErrors)
           {
               return true; // ****Always accept
           };
           ...
    

    该程序是在windows7&10机器使用Visual Studio 2015。 之后,它被编译为单声道对覆盆子:

    dmcs /r:System.Xml.Linq /r:System.Web.Extensions Fritz_AHA_JSON.cs
    

    mono Fritz_AHA_JSON.exe
    

    这种解决办法好几年了。

    现在交换了路由器。而不是弗里茨!7390号信箱有个弗里茨!箱7590型号已安装。

    如果我使用Firefox从windows10访问新的路由器,在为证书添加了异常之后,一切都正常。

    如果我在Windows10上的VisualStudio15中使用相同的C代码访问路由器,一切又正常了。

    Fehlerbeschreibung: System.Net.WebException: Error getting response stream (Write: The authentication or decryption has failed.): SendFailure ---> System.IO.IOException: The authentication or decryption has failed. ---> Mono.Security.Protocol.Tls.TlsException: The authentication or decryption has failed.
      at Mono.Security.Protocol.Tls.RecordProtocol.ProcessAlert (AlertLevel alertLevel, AlertDescription alertDesc) [0x00000] in <filename unknown>:0
      at Mono.Security.Protocol.Tls.RecordProtocol.InternalReceiveRecordCallback (IAsyncResult asyncResult) [0x00000] in <filename unknown>:0
      --- End of inner exception stack trace ---
      at Mono.Security.Protocol.Tls.SslStreamBase.AsyncHandshakeCallback (IAsyncResult asyncResult) [0x00000] in <filename unknown>:0
      --- End of inner exception stack trace ---
      at System.Net.HttpWebRequest.EndGetResponse (IAsyncResult asyncResult) [0x00000] in <filename unknown>:0
      at System.Net.HttpWebRequest.GetResponse () [0x00000] in <filename unknown>:0
      at System.Xml.XmlUrlResolver.GetEntity (System.Uri absoluteUri, System.String role, System.Type ofObjectToReturn) [0x00000] in <filename unknown>:0
      at Mono.Xml2.XmlTextReader.GetStreamFromUrl (System.String url, System.String& absoluteUriString) [0x00000] in <filename unknown>:0
      at Mono.Xml2.XmlTextReader..ctor (Boolean dummy, System.Xml.XmlResolver resolver, System.String url, XmlNodeType fragType, System.Xml.XmlParserContext context) [0x00000] in <filename unknown>:0
      at System.Xml.XmlTextReader..ctor (Boolean dummy, System.Xml.XmlResolver resolver, System.String url, XmlNodeType fragType, System.Xml.XmlParserContext context) [0x00000] in <filename unknown>:0
      at System.Xml.XmlReader.Create (System.String inputUri, System.Xml.XmlReaderSettings settings, System.Xml.XmlParserContext inputContext) [0x00000] in <filename unknown>:0
      at System.Xml.XmlReader.Create (System.String inputUri, System.Xml.XmlReaderSettings settings) [0x00000] in <filename unknown>:0
      at System.Xml.Linq.XDocument.Load (System.String uri, LoadOptions options) [0x00000] in <filename unknown>:0
      at System.Xml.Linq.XDocument.Load (System.String uri) [0x00000] in <filename unknown>:0
      at AVM_AHA.Program.GetSessionId (System.String URL, System.String benutzername, System.String kennwort) [0x00000] in <filename unknown>:0
    

    mozroots --import --ask-remove
    

    但效果并不好:

    Mozilla根导入器-版本3.2.8.0下载并导入受信任的 Mozilla的MXR的根证书。版权所有2002,2003 Motus 技术。版权所有2004-2008 Novell。BSD许可。

    ' http://mxr.mozilla.org/seamonkey/source/security/nss/lib/ckfw/builtins/certdata.txt?raw=1 '... 无法使用提供的信息检索文件。

    安装在Raspi上的Mono版本是

    Mono-JIT编译器版本3.2.8(Debian 3.2.8+dfsg-4+rpi1)

    问题是从更换路由器开始的。没有更新树莓皮。

    奇怪的是,我的验证回调似乎没有被调用。 我加了一些 Console.Writeln() true 但在控制台上看不到任何东西。 在窗户里我能看到多余的线条。

    对我来说,这意味着在验证证书之前问题已经发生了。 由于我不太熟悉Mono中的证书处理,我不知道在哪里可以找到解决方案。

    0 回复  |  直到 6 年前