我在执行使用VS11(2.0 / 4.0配置文件)编译的内容时遇到TLS问题,使用Arch Linux上的mono 2.10.8:
"获取响应流时出错(写入:身份验证或解密失败。):SendFailure"
有时甚至:
"获取响应流时出错(写入:BeginWrite失败):SendFailure" (很少这样)
它的好奇之处在于它可以在Arch Linux VM中运行,但不能在它应该运行的实际服务器上运行(也运行Arch Linux)。我在两者上运行相同的certmgr导入(使用/不使用--machine),也尝试使用mozroot和我使用相同的二进制文件/相同的配置。我甚至现在使用ServicePointManager.ServerCertificateValidationCallback hack(可在http://www.mono-project.com/UsingTrustedRootsRespectfully#Approach_.23-1:_Actively_ignore_security_concerns_.3D获得)并且它确实获得了验证器回调并且总是返回true但是异常不会消失。
我感到困惑的是同一个二进制文件在同一个发行版中的VM如何工作,并且具有相同的单声道版本。我已经尝试过打开这些东西,看看它是否加载了不同的文件,但没有引起我的注意。在弄乱ServicePointManager之后,我甚至不理解如何安装该错误。我认为之后应该完全忽略证书问题。
我也尝试过strace -e open certmgr来查看它存储这些东西的位置。显然它位于〜/ .config / .mono / certs / AddressBook /中,文件夹内容在VM和服务器上是相同的,所以这似乎也不是问题。
我有什么想法可以找出导致这个问题的原因吗?
编辑:
删除全局证书存储区和本地证书存储区并从头开始后,在仅导入所需的特定证书后,它似乎立即在VM中工作。在服务器上做同样的事情有时会令人震惊,但大部分时间都会失败。
即。这个bug是随机发生的。我开始怀疑这可能不像我想的那么简单。