ASP.NET Core HttpClient принимает все сертификаты только для localhost, в противном случае ведет себя нормально - PullRequest
0 голосов
/ 16 ноября 2018

Я пытаюсь повторить обычную проверку сертификата для чего-либо, кроме запросов к localhost

    public static readonly HttpClient _httpClient = new HttpClient(new HttpClientHandler()
    {
        AllowAutoRedirect = false,
        MaxConnectionsPerServer = int.MaxValue,
        UseCookies = false,
        ServerCertificateCustomValidationCallback = ValidateLocalhostCertificate
    });

    private static bool ValidateLocalhostCertificate(HttpRequestMessage arg1, X509Certificate2 arg2, X509Chain arg3, SslPolicyErrors arg4)
    {
        if (arg1.RequestUri.Host == "127.0.0.1")
        {
            return true;
        }
        else
        {
            // default validation
        }
    }

Я пишу приложение ASP.NET Core, используя этот ответ для обратногозапросы прокси, сделанные из определенных поддоменов локальным службам (например, 1.mywebsite.com переходит к 127.0.0.1:1001, 2.mywebsite.com переходит к 127.0.0.1:1002 и т.любой другой способ сделать это

Я предполагаю, что client => mywebsite over 443 является безопасным, и единственный «небезопасный» бит с использованием ответа, указанного выше, будет происходить локально на сервере, когда онигнорирует недействительные сертификаты локальных сервисов (которые все работают строго по https, что-то, что я не могу изменить) - если это неверно, поправьте меня!

Я пытался просмотреть исходный код ядра, но я изо всех сил пытаюсь выяснить, как HttpClient обычно проверяет сертификаты

1 Ответ

0 голосов
/ 21 ноября 2018

Во время выполнения проверяет сертификат перед вызовом обратного вызова.

Таким образом, сертификат уже проверен, и вы можете просто проверить arg4 на наличие ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...