C# 使用dotnetcore HttpClient复制特定证书卷曲
我正在尝试复制dotnetcore中的curl命令,以连接到kubernetes集群(从内部) 下面的curl命令有效。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
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
类的转储吗?