0

If I connect to an TLS 1.0 - 1.2 endpoint with a HttpClient and Mono 5.14.0 I get the exception "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 ()

If I change the TLS Provider to legacy I can only connect to an Endpoint with TLS 1.0, an Endpoint with TLS 1.0 - 1.2 doesn't work.

MONO_TLS_PROVIDER=legacy

I don't understand how the provider blts is unknown, since Mono 4.8.0 is the provider btls from the BoringSSL project included. see here.

If I take a look at MonoTlsProviderFactory.cs to understand this behavior, I stumble upon the line, which I don't understand.

internal extern static bool IsBtlsSupported ();

see here and there is the MONO_FEATURE_BTLS symbol which is a condition for btls. But How can I know if my Mono version is compiled with this symbol?

There are similar cases but with an older Mono version

hdev
  • 5,399
  • 1
  • 41
  • 55
  • Does your Mono's bistro include a `Mono.Btls.Interface` assembly in the GAC? – SushiHangover Feb 28 '19 at 15:54
  • @SushiHangover how can I proof this? – hdev Mar 01 '19 at 11:10
  • It may have been updated, but I do recall mono not supporting TLS 1.2 a couple of years ago. I used a small node.js reverse proxy in my solution to allow my mono app to call out to a TLS1.2-only endpoint on the web. Not pretty. – muszeo Mar 04 '19 at 04:54

0 Answers0