gpt4 book ai didi

c# - 这是 CERTIFICATE_VERIFY_FAILED 异常的正确解决方案吗?

转载 作者:太空宇宙 更新时间:2023-11-03 14:28:57 25 4
gpt4 key购买 nike

所以我目前正在制作一个 Xamarin.Android 应用程序,一段时间以来它一直使用我制作的 REST API 来与数据来回通信。

不过,我最近将我的 SSL 证书切换到了 LetsEncrypt,这导致在尝试从我的应用程序与我的 API 通信时出现以下异常:

Ssl error:1000007d:SSL routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED

我认为这意味着它没有得到正确验证。我在下面找到了以下代码片段,它仅验证来 self 的域的请求并通过它,这有效。

但是我的问题是。这安全吗?这可能会导致中间人攻击,还是我没事?

ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicy) =>
{
if (sslPolicy == SslPolicyErrors.None)
return true;

if (sslPolicy == SslPolicyErrors.RemoteCertificateChainErrors &&
((HttpWebRequest)sender).RequestUri.Authority.Equals("MY_API_DOMAIN"))
return true;

return false;
};

最佳答案

您解决此问题的方法绝对不安全:只要请求针对 URL 中的特定域,您实际上就是在接受任意证书。这意味着中间攻击者可以简单地拦截到该特定服务器的所有流量,向您提供他自己的伪造证书并嗅探甚至修改数据,而您的应用程序不会注意到。

如果您的服务器在浏览器上没有问题,则很可能是您的应用程序/系统不信任 Let's Encrypt CA,或者(更有可能)您的服务器设置不正确并且没有发送所需的中间证书。请根据 SSLLabs 检查服务器并寻找诸如不完整链之类的问题。

关于c# - 这是 CERTIFICATE_VERIFY_FAILED 异常的正确解决方案吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54431583/

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