C# 使用dotnetcore HttpClient复制特定证书卷曲

C# 使用dotnetcore HttpClient复制特定证书卷曲,c#,curl,.net-core,C#,Curl,.net Core,我正在尝试复制dotnetcore中的curl命令,以连接到kubernetes集群(从内部) 下面的curl命令有效。 curl-v--cacert/var/run/secrets/kubernetes.io/servicecomport/ca.crt-H“授权:持票人$(cat/var/run/secrets/kubernetes.io/servicecomport/token)”https://kubernetes/ 这是我尝试使用HttpClient private HttpClie

我正在尝试复制dotnetcore中的curl命令,以连接到kubernetes集群(从内部)

下面的curl命令有效。

curl-v--cacert/var/run/secrets/kubernetes.io/servicecomport/ca.crt-H“授权:持票人$(cat/var/run/secrets/kubernetes.io/servicecomport/token)”https://kubernetes/

这是我尝试使用
HttpClient

private HttpClient GetClient()
{
    const string certPath = "/var/run/secrets/kubernetes.io/serviceaccount/ca.crt";
    const string tokenPath = "/var/run/secrets/kubernetes.io/serviceaccount/token";
    const string baseAddress = "https://kubernetes";
    var handler = new HttpClientHandler
    {
        ClientCertificateOptions = ClientCertificateOption.Manual,
        SslProtocols = SslProtocols.Tls12
    };
    handler.ClientCertificates.Add(
       new X509Certificate2(certPath));

    var token = File.ReadAllText(tokenPath);
    var httpClient = new HttpClient(handler)
    {
        BaseAddress = baseAddress,
        DefaultRequestHeaders =
        {
            {"Authorization", $"Bearer {token}"}
        }
    };
    return httpClient;
}

public void Test()
{
    var client = GetClient();
    var result = client.GetStringAsync("/").GetAwaiter().GetResult();
    Console.WriteLine(result);
}
这个异常并没有太大帮助,我也不确定我在哪里误解了我的HttpClient

以下是例外情况的详细信息

System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.Http.CurlException: SSL connect error
   at System.Net.Http.CurlHandler.ThrowIfCURLEError(CURLcode error)
   at System.Net.Http.CurlHandler.MultiAgent.FinishRequest(StrongToWeakReference`1 easyWrapper, CURLcode messageResult)
   --- End of inner exception stack trace ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()
   at System.Net.Http.HttpClient.<FinishSendAsync>d__58.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()
   at System.Net.Http.HttpClient.<GetContentAsync>d__32`1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
System.Net.Http.HttpRequestException:发送请求时出错。-->System.Net.Http.Exception:SSL连接错误
位于System.Net.Http.CurlHandler.ThrowIfCURLEError(CURLcode错误)
位于System.Net.Http.CurlHandler.MultiAgent.FinishRequest(strongTowakReference`1 EasyRapper,CURLcode messageResult)
---内部异常堆栈跟踪的结束---
在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()中
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()中
在System.Net.Http.HttpClient.d_u58.MoveNext()上
---来自引发异常的上一个位置的堆栈结束跟踪---
在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()中
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()中
在System.Net.Http.HttpClient.d_u32`1.MoveNext()中
---来自引发异常的上一个位置的堆栈结束跟踪---
在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()中
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中

感谢您的指点。

第一行说
SSL connect error
有点模糊,您能提供
HttpClient
类的转储吗?第一行说
SSL connect error
有点模糊,您能提供
HttpClient
类的转储吗?