如何添加服务器证书自定义验证



当我调用外部服务时,我必须发出以下错误无法建立SSL连接,请参阅内部异常。经过长时间的搜索,我发现我必须将servercertificatecustomvalidationcallback添加到HttpClient中我的代码是这样的

public class ApiClient
{
private readonly HttpClient _apiClient;
public ApiClient(HttpClient apiClient)
{
_apiClient = apiClient;
}

/// <summary>
/// Method to get summary data
/// </summary>
/// <returns>summary Dto</returns>
public async Task<SummaryDto> GetSummary()
{
var response = await _apiClient.GetAsync("summary");
var result = await response.Content.ReadAsStringAsync();
if (response.IsSuccessStatusCode)
return JsonConvert.DeserializeObject<SummaryDto>(result);
return null;
}
}

和内部启动文件:

services.AddHttpClient<ApiClient>((sp, config) =>
{
config.BaseAddress = new Uri(Configuration["ServiceBaseUrl"]);
config.DefaultRequestHeaders.Accept.Clear();
config.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
});

我的问题是如何添加servercertificatecustomvalidationcallback

你可以在。net Core中这样实现。

在Startup.cs

services.AddHttpClient<ApiClient>((sp, config) =>
{
config.BaseAddress = new Uri(Configuration["ServiceBaseUrl"]);
config.DefaultRequestHeaders.Accept.Clear();
config.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
}).ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler
{
ServerCertificateCustomValidationCallback = (httpRequestMessage, cert, cetChain, policyErrors) =>
{
//Your Validation Logic Here
return true; //OR false;
}
});

最新更新