【发布时间】:2022-07-05 20:52:44
【问题描述】:
我正在与hashicorp 建立联系。我们需要在 .net 中调用解密 api。要调用解密 API,我们需要在其中传递令牌。 但是令牌调用不同,它使用客户端证书和密钥进行身份验证。我们正在从 .net 应用程序调用令牌生成 url,但收到错误 ""{"errors":["client certificate must be provided"]}\n""。
var allKeyytes = File.ReadAllBytes(@"file.key");
var privateKey = new X509Certificate2(allKeyytes, "XXXXXX").PrivateKey as DSACryptoServiceProvider;
var certificate2 = new X509Certificate2(@"file.crt");
certificate2.CopyWithPrivateKey(privateKey);
HttpClientHandler handler = new HttpClientHandler();
handler.ClientCertificates.Add(certificate2);
using (HttpClient client = new HttpClient(handler))
{
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, vaultUrl);
HttpResponseMessage response = client.SendAsync(request).Result;
if (response.IsSuccessStatusCode)
{
var result = response.Content.ReadAsStringAsync().Result;
}
}
添加上述代码行后出现错误“System.Security.Cryptography.CryptographicException: '找不到请求的对象。”
请让我知道我做错了什么!
提前谢谢你。
【问题讨论】:
-
certificate2.CopyWithPrivateKey(provider);你没有使用结果。同样缺少using的providercertificate2request和response。而且调用.Result很可能会造成死锁,改用await
标签: c# .net .net-core console-application