AuthenticationException:由于证书链中的错误,远程证书无效:UntrustedRoot、NotValidTime

问题描述 投票:0回答:4

在 Visual Studio 中进行本地开发和身份验证时,我始终收到以下错误:

AuthenticationException:由于证书链中的错误,远程证书无效:NotValidTime、UntrustedRoot

其中,当使用

HttpClient
从我们的项目之一调用我们的后端端点之一 (
localhost
) 时,就会发生这种情况,所以这一切都发生在本地。

该证书从去年的这个日期开始签署/有效,一年后现已失效。我团队中的其他开发人员都没有收到它或遇到相同的问题。

然后我尝试了很多东西,其中包括:

我们没有集中的身份验证程序 - 它分布在系统的各个地方和场景中,因此我无法使用像

if #DEBUG... //then ignore certificates
这样的解决方法。我需要正确生成有效的证书。

c# visual-studio asp.net-web-api ssl-certificate
4个回答
9
投票

清除以下文件夹中的所有私钥就可以解决问题(我只有一个,我刚刚重命名,就解决了问题):

C:\Users\{User}\AppData\Roaming\ASP.NET\Https

归功于这个 SO-post 答案 的解决方案。


5
投票

就我而言,我的域的 SSL 证书已过期。因此,请检查您的域名证书到期日期。 解决办法是更新域名证书。

Temporary solution:
跳过 SSL 证书验证。

var handler = new HttpClientHandler();
handler.ClientCertificateOptions = ClientCertificateOption.Manual;
handler.ServerCertificateCustomValidationCallback = 
    (httpRequestMessage, cert, cetChain, policyErrors) =>
{
    return true;
};

var client = new HttpClient(handler);

参考:https://stackoverflow.com/a/46626858/672891


4
投票

删除有问题的本地主机证书:

控制面板 -> Internet 选项 -> 内容选项卡。

  1. 单击证书并删除不再需要的证书。
  2. 单击清除 SSL 状态按钮。

按照此处的说明为每个本地主机站点重新创建新证书,注意端口号:

https://improveandrepeat.com/2020/05/recreate-the-self-signed-https-certificate-for-localhost-in-iis-express


0
投票

首先输入这两个命令

dotnet dev-certs https --clean
dotnet dev-certs https --trust

然后删除该路径下的所有文件:

C:\Users\{User Name}\AppData\Local\Google\Chrome\User Data\Default\Local Storage\leveldb
© www.soinside.com 2019 - 2024. All rights reserved.