如果我使用HttpClient和 Mono 5.14.0 连接到 TLS 1.0-1.2 端点,则会出现异常“没有这样的TLS提供程序:btls
。”
No such TLS Provider: `btls'.
at Mono.Net.Security.MonoTlsProviderFactory.LookupProvider (System.String name, System.Boolean throwOnError)
as Mono.Net.Security.MonoTlsProviderFactory.CreateDefaultProviderImpl ()
at Mono.Net.Security.MonoTlsProviderFactory.InitializeInternal ()
如果我将TLS提供程序更改为旧版,则只能连接到TLS 1.0的端点,而TLS 1.0-1.2的端点不起作用。
MONO_TLS_PROVIDER=legacy
我不知道提供者blts是如何未知的,因为Mono 4.8.0是包含的BoringSSL项目中的提供者btls。参见here。
如果我看一下MonoTlsProviderFactory.cs来了解这种行为,我会偶然发现这是我不理解的。
internal extern static bool IsBtlsSupported ();
请参见here,其中有MONO_FEATURE_BTLS
符号是btls的条件。但是我怎么知道我的Mono版本是否用这个符号编译?
也有类似的情况,但具有较旧的Mono版本