先说说历史。。。
这意味着我对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中的证书处理,我不知道在哪里可以找到解决方案。