如何在HttpClient中使用证书?

托本·尼尔森

我需要使用我们合作伙伴之一的Web API。他们的API要求我使用证书进行连接。

我不想在我们的服务器(VM)上安装证书。这与我们的凤凰服务器策略适得其反。

我尝试以编程方式使用证书。问题是我得到一个错误:

AuthenticationException:根据验证过程,远程证书无效。

HttpClient使用以下代码创建我的代码:

_certificate = new X509Certificate2(_certificateFile);
var handler = new WebRequestHandler();
handler.ClientCertificates.Add(_certificate);
var client = new HttpClient(handler) { BaseAddress = new Uri(_url) };

我可以通过覆盖证书验证来使其工作:

ServicePointManager.ServerCertificateValidationCallback += delegate { return true; };

但是,这看起来很糟糕。

我已验证我的端点与证书中的CN相匹配

是否AuthenticationException仅仅是因为证书未安装在证书存储区中?

如果是,我可以使用代码临时安装证书并在以后将其删除吗?

李Lex

“远程证书无效”表示.NET Framework认为合作伙伴的Web服务的服务器端证书无效(如果没有安装必要的根/中间证书,则非常正常)。

您可以通过更改来取消默认检查ServerCertificateValidationCallback,但是您应该实施自己的检查,以确保以合理的方式验证其证书以避免攻击。

您还应该使用HttpClientHandler.ServerCertificateValidationCallback,以便您的自定义验证器仅在此特定HttpClient实例的范围内生效,而在您应用的其他位置不起作用,

https://docs.microsoft.com/zh-cn/dotnet/api/system.net.http.httpclienthandler.servercertificatecustomvalidationcallback?view=netframework-4.8

但是,他们提供给您的证书(通常是客户端证书)是由其Web服务而不是在您的计算机上本地验证的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在HttpsURLConnection中使用证书身份验证?

如何在Smack 4.2中使用证书

如何在Java SE中使用证书进行加密

如何在Rest-Assured Java中使用证书进行HTTPS GET调用

如何在浏览器中使用证书的私钥对文档签名(CAPICOM替代)?

Java HttpClient错误,找不到SSL证书,在代码中使用证书作为String?

如何在 Pivotal Cloud Foundry 中使用证书启动 HTTPS Node JS 服务器?

如何使用证书从xcode创建.ipa?

在密钥库中使用证书保存私钥 - Android

在.net5中使用证书

如何在Apache HttpClient中使用SSL客户端证书?

如何在Universal Windows App中使用System.Net.Http.HttpClient取消自签名证书

如何使用证书 pkcs7 签署 xml - Java

如何使用证书golang发送https请求

如何使用证书而不是密码进行身份验证?

我导出到哪种证书文件格式,以便可以在Azure Pipelines中使用证书?

如何在HttpClient中使用Fiddler?

在 .NET Core C# 中使用证书加密和解密

使用证书从PowerShell连接到Azure

Javascript:使用证书调用 API

Postgres HA Standby不使用证书

如何使用Python使用证书颁发机构对公钥进行身份验证?

使用Ansible K8S模块:如何使用证书进行身份验证

如何使用证书签署xml文档以及需要什么类型的解决方案?

Wicd + wpa_supplicant如何:不使用证书(PEAP + MSCHAP)?启用日志记录?

如何在 Eclipse 中使用 p12 证书?

如何在Cloudfront中使用Amazon ACM证书?

如何在Mac上的Java中使用SSL证书

如何在HTTPS中使用客户端证书?