首页 > 解决方案 > 使用自签名证书连接到服务器

问题描述

我一直在研究如何通过 xamarin 应用程序使用在我的本地主机上执行的 web api。Web api 运行完美,我可以使用 Web 浏览器向我的 sql 服务器添加数据或从中获取数据,但如果我尝试将 xamarin 连接到它,我总是收到身份验证错误(Mono.Btls.MonoBtlsException:Ssl 错误:1000007d:SSL例程:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED)。我基本上是这样做的。我关注了这篇文章:

http://xamarininterviewquestion.blogspot.com/2019/06/ssl-certificate-and-public-key-pinning.html

所以它肯定不起作用,我想尝试另一种方式;

将 TLSConfig DangerousAcceptAnyServerCertificateValidator 设置为 true。因为知道如果我能够测试它,我会很高兴。

那很酷,但由于我不是专业人士,所以我不知道如何实施;

var httpHandler = new HttpClientHandler();
// Return `true` to allow certificates that are untrusted/invalid
httpHandler.ServerCertificateCustomValidationCallback = 
    HttpClientHandler.DangerousAcceptAnyServerCertificateValidator;

我得到“DangerousAcceptAnyServerCertificateValidator”没有定义。

提前谢谢大家,如果我不清楚,对不起。

标签: asp.net-web-apixamarin.formsssl-certificateself-signed-certificate

解决方案


DangerousAcceptAnyServerCertificateValidator根据其文档,不适用于 Xamarin 平台。

但从字面上看,您可以编写相同的代码,例如,

var handler = new HttpClientHandler();
handler.ServerCertificateCustomValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;
HttpClient client = new HttpClient(handler);

https://stackoverflow.com/a/64741829/11182


推荐阅读