当我尝试从 SPA 请求我的 Web API 时,我在 ASP.NET Core 中收到
net::ERR_CERT_AUTHORITY_INVALID
错误。
解决此问题的第一个解决方案是从浏览器
Advanced
- Proceed to localhost (unsafe)
访问我的 ASP.NET Core 地址,然后来自我的 SPA 的请求将起作用。但是每次我开始做我的项目时,我都必须重复这个过程。
我找到的另一个解决方案是this。简而言之,解决方案是运行命令:
dotnet dev-certs https --trust
。我在 Windows 上,所以根据链接文章On Windows it'll get added to the certificate store
.
但是在我运行命令后,我仍然在请求中遇到
net::ERR_CERT_AUTHORITY_INVALID
问题。我能做些什么呢?
运行命令
dotnet dev-certs https --trust
将在您的设备中创建一个自签名证书。该证书将颁发给localhost
域。在我的例子中,在运行它之后,证书被创建但它没有被添加到“受信任的根证书颁发机构”。
要添加证书,您需要打开
certmgr.msc
(win+r并运行certmgr.msc
),然后转到“个人”证书并使用正确的到期时间。如果在那里找不到证书,可以转到浏览器并单击不安全连接图标,然后打开无效证书并转到“详细信息”选项卡并单击“复制到文件...”,这也应该创建.cer
证书。
接下来,转到“受信任的根证书颁发机构”并在那里导入证书。完成后,证书将在您的本地计算机上有效。您可能需要重新启动浏览器和服务。
按顺序做
从 AppData\Roaming\ASP.NET\https 中删除您的密钥和 pem
在您的应用程序中,通过 NuGet 包添加对 Microsoft.AspNetCore.Authentication.Certificate 的引用。然后在 Startup.ConfigureServices 方法中这样写:
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(
CertificateAuthenticationDefaults.AuthenticationScheme)
.AddCertificate();
// All other service configuration
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseAuthentication();
// All other app configuration
}
检查这个目录是否存在。sudo apt-get install libnss3-tools
创建目录。ls $HOME/.pki/nssdb
导出证书然后mkdir $HOME/.pki/nssdb
dotnet dev-certs https
和
sudo -E dotnet dev-certs https -ep /usr/local/share/ca-certificates/aspnet/https.crt --format PEM
重启浏览器
中的更多详细信息(也适用于 Ubuntu 和其他 Linux 发行版)。
我按照这些步骤操作,但它并没有阻止 Chrome 中出现的“不安全”消息。然后我尝试评论以下行 //app.UseHttpsRedirection();在 startup.cs 中的 Configure() 方法中,它解决了问题。