gpt4 book ai didi

https - 如何在非 Windows 平台上忽略 "System.Net.Http.CurlException: Peer certificate cannot be authenticated with given CA certificates"?

转载 作者:行者123 更新时间:2023-12-04 15:31:03 24 4
gpt4 key购买 nike

我已经在 Microsoft Azure 中部署了一个 Kubernetes 集群,并想使用 https 从 .Net Core c# 程序调用一些 REST API。在不受信任的 CA 中部署集群时使用的证书。当我在 Mac 上运行此程序时,出现以下错误:“System.Net.Http.CurlException:对等证书无法使用给定的 CA 证书进行身份验证”

在 Windows 上,我可以设置自定义 ServerCertificateValidationCallback 以忽略错误:

    WinHttpHandler winHttpHandler = new WinHttpHandler();
winHttpHandler.ServerCertificateValidationCallback = ValidateServerCertificate;

public static bool ValidateServerCertificate(
HttpRequestMessage request,
X509Certificate certificate,
X509Chain chain,
SslPolicyErrors sslPolicyErrors)
{
return true;
}

但是,这在非 Windows 平台上的 .Net Core 下不受支持。

如何忽略其他平台上的错误?

最佳答案

您可以使用 .NET Core 执行此操作。我们在 1.1、2.0 和 2.1 中一直在这样做。

这可以通过构建 HttpHandler 来完成。并将其传递到 HttpClient构造函数。 HttpHandler有一个 ServerCertificateCustomValidationCallback ,您可以覆盖它以执行自定义证书验证。

样本:

private HttpClient SampleBuildHttpClient()
{
return new HttpClient(
new HttpClientHandler
{
ServerCertificateCustomValidationCallback = MyCallback,
});
}

private bool MyCallback(HttpRequestMessage reqMsg, X509Certificate2 cert, X509Chain certChain, SslPolicyErrors policyErrors)
{
//custom validation
return true;
}

关于https - 如何在非 Windows 平台上忽略 "System.Net.Http.CurlException: Peer certificate cannot be authenticated with given CA certificates"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43256337/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com