在 Visual Studio 中进行本地开发和身份验证时,我始终收到以下错误:
AuthenticationException:由于证书链中的错误,远程证书无效:NotValidTime、UntrustedRoot
其中,当使用
HttpClient
从我们的项目之一调用我们的后端端点之一 (localhost
) 时,就会发生这种情况,所以这一切都发生在本地。
该证书从去年的这个日期开始签署/有效,一年后现已失效。我团队中的其他开发人员都没有收到它或遇到相同的问题。
然后我尝试了很多东西,其中包括:
dotnet dev-certs https --clean
、dotnet dev-certs https
和 dotnet dev-certs https --trust
,成功更新/重新创建了 2023 年到期的证书 - 但仍然不起作用/仍然收到相同的错误。我们没有集中的身份验证程序 - 它分布在系统的各个地方和场景中,因此我无法使用像
if #DEBUG... //then ignore certificates
这样的解决方法。我需要正确生成有效的证书。
清除以下文件夹中的所有私钥就可以解决问题(我只有一个,我刚刚重命名,就解决了问题):
C:\Users\{User}\AppData\Roaming\ASP.NET\Https
归功于这个 SO-post 答案 的解决方案。
就我而言,我的域的 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);
删除有问题的本地主机证书:
控制面板 -> Internet 选项 -> 内容选项卡。
按照此处的说明为每个本地主机站点重新创建新证书,注意端口号:
首先输入这两个命令
dotnet dev-certs https --clean
dotnet dev-certs https --trust
然后删除该路径下的所有文件:
C:\Users\{User Name}\AppData\Local\Google\Chrome\User Data\Default\Local Storage\leveldb