C# ASP.NET Core HttpClient仅接受本地主机的所有证书,否则行为正常

C# ASP.NET Core HttpClient仅接受本地主机的所有证书,否则行为正常,c#,.net,asp.net-core,.net-core,C#,.net,Asp.net Core,.net Core,我正在尝试对本地主机的请求以外的任何内容复制正常的证书验证 public static readonly HttpClient _httpClient = new HttpClient(new HttpClientHandler() { AllowAutoRedirect = false, MaxConnectionsPerServer = int.MaxValue, UseCookies = false, Serv

我正在尝试对本地主机的请求以外的任何内容复制正常的证书验证

    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核心应用程序,用于将特定子域的代理请求反向发送到本地服务(例如,
1.mywebsite.com
转到
127.0.0.1:1001
2.mywebsite.com
转到
127.0.0.1:1002
,等等)

请不要建议使用IIS URL重写或任何其他方法进行此操作

我假设client=>mywebsite over 443是安全的,使用上面链接的答案的唯一“不安全”位将发生在服务器本地,当它忽略本地服务的无效证书时(这些证书都严格在https上运行,我无法更改)-如果这是不真实的,请纠正我


我已经尝试搜索核心源代码,但我很难找到HttpClient通常如何在调用回调之前验证证书


所以证书已经检查过了,您可以只检查
arg4
是否有错误。

或者您可以签署并安装自己的本地主机证书,而不要弄乱代码。@Jasen我最初尝试过,但没有成功。如果我做了什么,我星期一再试试wrong@Jasen是的,没有System.Net.Http.HttpRequestException:无法建立SSL连接,请参阅内部异常。-->System.Security.Authentication.AuthenticationException:根据验证过程,远程证书无效。证书是受信任的根等