joelverhagen / TorSharp

Use Tor for your C# HTTP clients. Use Privoxy or .NET 6+ SOCKS support to proxy HTTP traffic.
MIT License
328 stars 62 forks source link

TorSharpToolFetcher issue: The requested security protocol is not supported #104

Open AlizerUncaged opened 1 year ago

AlizerUncaged commented 1 year ago

I get the following error

System.NotSupportedException: The requested security protocol is not supported.
   at System.Net.ServicePointManager.ValidateSecurityProtocol(SecurityProtocolType value)
   at System.Net.ServicePointManager.set_SecurityProtocol(SecurityProtocolType value)
   at Knapcode.TorSharp.TorSharpToolFetcher.EnableSecurityProtocols() in /_/src/TorSharp/TorSharpToolFetcher.cs:line 229

here's my code, copied right from the ReadMe

    public async Task SetupTor()
    {
        _logger.LogInformation($"Downloading tor...");
        using (var httpClient = new HttpClient())
        {
            var fetcher = new TorSharpToolFetcher(_settings, httpClient);
            await fetcher.FetchAsync();
        }
    }

screenshot image

I use .NET 7, my host OS is Windows 11 x64

AlizerUncaged commented 1 year ago

I was able to fix this by settings EnableSecurityProtocolsForFetcher to false in my _settings_ following #28, however it seems 1.8.4 should resolve this issue but seems like the fallback doesn't work...?

i-lamrani commented 1 year ago

Hello your can resolve your issue by adding this parameters to the settings EnableSecurityProtocolsForFetcher = false; and and use HttpClient with a handler that ignore ssl validations like this : var handler = new HttpClientHandler(); handler.ClientCertificateOptions = ClientCertificateOption.Manual; handler.ServerCertificateCustomValidationCallback = (httpRequestMessage, cert, cetChain, policyErrors) => { return true; }; // download tools await new TorSharpToolFetcher(_settings, new HttpClient(handler)).FetchAsync();

joelverhagen commented 1 year ago

What platform is this occurring on? I would like to know: OS version (Linux distribution and version if applicable) .NET version (with dotnet --info)