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:根据验证过程,远程证书无效。证书是受信任的根等