我安装了最新版的mono mon -V给了我:
Mono JIT compiler version 4.8.0 (Stable 4.8.0.495/e4a3cf3 Wed Feb 22 18:30:58 UTC 2017)
从发行说明(http://www.mono-project.com/docs/about-mono/releases/4.8.0/)开始,我说:
要使用它,必须将环境变量MONO_TLS_PROVIDER设置为 值“btls”,如下所示:
我没有这样做。 我遇到了一种检查是否使用1.2(http://mono.1490590.n4.nabble.com/Still-stuck-in-a-bad-place-with-TLS-1-2-support-td4669106.html)的方法 当我跑步时,我得到:
TLS 1.2,最现代的加密版本
所以我的问题是,说我不需要做什么只是安装最新的单声道并且默认值为1.2是否正确?
答案 0 :(得分:1)
验证TLS 1.2是否正常工作的最佳方法是尝试连接到仅限TLS 1.2的服务。
wget -q https://bugzilla.xamarin.com/attachment.cgi?id=16785 -O Program.cs
mcs Program.cs /r:System.Net.Http.dll
mono Program.exe
结果:
发送TLS警报时出错(致命:InternalError):System.IO.IOException:身份验证或解密失败。 ---> System.IO.IOException:无法从传输连接读取数据:由对等方重置连接。 ---> System.Net.Sockets.SocketException:通过对等方重置连接
这次再次使用BTLS(无需再次编译):
export MONO_TLS_PROVIDER="btls"
mono Program.exe
结果:
OK!
正如您所看到的,BTLS尚未默认。是的,还有其他方法可以确定这一点,例如查看调用的堆栈跟踪,但这个是最简单的方法,因为如果端点仅支持TLS 1.2并且您尝试使用过时的TLS连接它,则会导致异常1.0或1.1。
BTW,代码来自我的 bug report 。上面的结果是使用Mono 4.9.1完成的,它应该与4.8相同。