首页 > 解决方案 > Mono 5.14.0 和 TLS 1.2“没有这样的 TLS 提供程序 btls”

问题描述

如果我使用 HttpClient 和Mono 5.14.0连接到TLS 1.0 - 1.2端点,我会收到异常“No such TLS Provider: 。”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。看这里

如果我查看MonoTlsProviderFactory.cs以了解这种行为,我会偶然发现这条线,我不明白。

internal extern static bool IsBtlsSupported ();

看到这里,有一个MONO_FEATURE_BTLS符号是 btls 的条件。但是我怎么知道我的 Mono 版本是不是用这个符号编译的呢?

有类似的情况,但使用的是较旧的 Mono 版本

标签: c#sslmonotls1.2libtls

解决方案


推荐阅读