diff --git a/ArchiSteamFarm/Runtime.cs b/ArchiSteamFarm/Runtime.cs index 42f335c82..6a1b67788 100644 --- a/ArchiSteamFarm/Runtime.cs +++ b/ArchiSteamFarm/Runtime.cs @@ -127,6 +127,21 @@ namespace ArchiSteamFarm { } } + // TODO: Remove me once BTLS in Mono 4.8+ is fixed + internal static bool RequiresNoCertificateValidation() { + if (!IsRunningOnMono) { + return false; + } + + Version monoVersion = GetMonoVersion(); + + if (monoVersion?.Major != 4) { + return false; + } + + return monoVersion.Minor >= 8; + } + private static Version GetNetVersion() { uint release; using (RegistryKey registryKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey("SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v4\\Full\\")) { diff --git a/ArchiSteamFarm/WebBrowser.cs b/ArchiSteamFarm/WebBrowser.cs index 2c02d91da..7829b02d3 100644 --- a/ArchiSteamFarm/WebBrowser.cs +++ b/ArchiSteamFarm/WebBrowser.cs @@ -54,6 +54,10 @@ namespace ArchiSteamFarm { // Don't use Expect100Continue, we're sure about our POSTs, save some TCP packets ServicePointManager.Expect100Continue = false; + if (Runtime.RequiresNoCertificateValidation()) { + ServicePointManager.ServerCertificateValidationCallback += (s, ce, ca, p) => true; + } + #if !__MonoCS__ // We run Windows-compiled ASF on both Windows and Mono. Normally we'd simply put code in the if // However, if we did that, then we would still crash on Mono due to potentially calling non-existing methods