WebAPI(使用.Net构建)托管在服务器上,并使用HTTPS从iOS和Android应用程序调用。证书或其他方面未进行任何更改。 iOS应用程序工作正常,使用相同的api的Web应用程序工作正常,但从今天早上开始使用API的所有Android应用程序(仅在Android版本5x或更低版本上运行)都盯着这个错误。
android.runtime.JavaProxyThrowable: System.AggregateException: One or more errors occurred. ---> System.Net.WebException: Error: TrustFailure (The authentication or decryption has failed.) ---> System.IO.IOException: The authentication or decryption has failed. ---> System.IO.IOException: The authentication or decryption has failed. ---> Mono.Security.Protocol.Tls.TlsException: Invalid certificate received from server.
检查证书,证书链,一切。没有问题。如果证书无效,则其他应用程序不应该正常工作以及为什么会突然发生。有人可以指向哪里看。我搜索了这个网站,发现了一些线程,但他们的解决方案需要更改Android应用程序代码。这不能那么快地完成(和部署)。为什么突然间,如果有人可以对它有所启发。甚至在我们的测试Android设备中也没有更新任何内容。
通过ssllab测试服务器,并在Android模拟中进行握手:
答案 0 :(得分:0)
解决了这些较旧的Android版本的应用程序现在正常工作。我必须在证书管理器中的所有位置禁用COMODO根证书COMODO RSA Certification Authority with SHA1 key afe5d244a8d1194230ff479fe2f897bbcd7a8cb4
。显然Windows更新添加了这个并且它在某种程度上相互冲突,并且没有从服务器发送中间证书(在第二个证书链中,第一个链是好的)。通常,如果没有发送中间证书,客户端会从发行者处下载,但Android mono框架显然不会这样做。
感谢Adm Selec https://community.qualys.com/thread/15295提供解决方案。