gpt4 book ai didi

c# - 我们可以使用 HttpClient 发送未签名的客户端证书吗?

转载 作者:行者123 更新时间:2023-11-30 18:21:18 25 4
gpt4 key购买 nike

我看过有关如何将 WebRequestHandlerHttpClient 结合使用的代码示例,以便在我的 http 请求中嵌入证书(请参阅下面的代码片段)。但是,我刚刚使用自签名证书对此进行了测试,但它无法正常工作。根据this post如果没有受信任的证书,此方法将不起作用。

如果我通过浏览器或 Postman 发送证书,我可以在服务器上看到证书,但不能以编程方式发送。

如果 HttpClientWebRequestHandler 在作为请求的一部分发送之前执行任何类型的证书验证,有人可以确认或拒绝吗?

快速反编译没有显示任何明显的东西,但在请求管道中有很多东西在起作用。

示例代码:

        var cert = new X509Certificate2(rawCert);


//This call fails, cannot check revocation authority.
//Specific error: The revocation function was unable to check
//revocation for the certificate.
//X509CertificateValidator.ChainTrust.Validate(cert);

var certHandler = new WebRequestHandler()
{
ClientCertificateOptions = ClientCertificateOption.Manual,
UseDefaultCredentials = false
};
certHandler.ClientCertificates.Add(cert);
var Certificateclient = new HttpClient(certHandler)
{
BaseAddress = new Uri("https://web.local")
};

var response = await Certificateclient.GetAsync("somepath");

最佳答案

要使用自签名证书,您可以添加 using System.Net.Security;

添加处理程序回调方法

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

并在调用 API 之前设置:

ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate);

参见:

https://es.stackoverflow.com/a/153207/86150

https://social.msdn.microsoft.com/Forums/es-ES/130308da-4092-4f21-8355-ee3c77a22f97/llamar-web-service-con-certificado?forum=netfxwebes

关于c# - 我们可以使用 HttpClient 发送未签名的客户端证书吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35688380/

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