注意:将问题中原作者的解决方案添加为答案。
这是对我有效的方法。删除了所有本地主机证书,运行“Add/Remove Programs”中的IIS Express修复程序。将localhost证书从“Personal/Certificate”复制并粘贴到“Trusted Root Certificates”,就不会再有错误提示了。
重新安装/修复IIS Express似乎无法真正解决此问题(截至IIS Express 10),真正的解决方法是将本地主机证书添加到受信任的根证书。
如何执行此操作的详细信息已在以下博客文章中介绍:https://blogs.iis.net/robert_mcmurray/how-to-trust-the-iis-express-self-signed-certificate
总之,
对我来说,只需要运行CMD > certlm并删除个人文件夹内的本地主机证书即可。
在终端中运行:
dotnet dev-certs https -c
这将让您知道是否有任何有效的自签名证书。
然后,您可以运行:
dotnet dev-certs https --check --trust
这将让你知道是否有任何可信的自签名证书。
如果你有过期或不受信任的开发证书,你可以运行:
dotnet dev-certs https --clean
这将删除证书。
如果您想添加证书/受信任的证书,则可以运行以下命令:
dotnet dev-certs https --trust
这将创建一个自签名证书并尝试将其添加到“受信任的根证书颁发机构”文件夹中。
如果失败了,则需要手动将证书添加到“受信任的根证书颁发机构”文件夹中。
手动添加证书:
第一步是在Windows的“此处输入以搜索”部分键入“运行”,一旦打开运行,键入“mmc”,然后点击确定。这将拉起控制台根。
然后您必须单击:文件 -> 添加/删除快照 -> 证书 -> 添加,然后单击确定。这将带您进入当前用户的证书。
展开个人文件夹,然后单击证书文件夹。 滚动直到找到一个名为“localhost”的证书
现在你可以尝试将localhost文件复制并粘贴到“受信任的根”文件夹中。如果成功,则完成!您可以通过运行以下命令来验证是否已工作:
dotnet dev-certs https --check --trust.
如果仍然存在不受信任的证书问题,您需要按照以下步骤操作:
右键单击本地主机证书,然后单击“所有任务”,再单击“导出…”。我们需要先将证书导出,然后才能将其导入到“受信任的根证书颁发机构”文件夹中。
按照证书导出向导进行操作。您不需要更改默认设置,只需一直单击“下一步”,直到达到“要导出的文件”屏幕。单击“浏览”,并选择桌面作为目的地,并将文件命名为“localhost”。单击“下一步”,然后完成。这将在桌面上创建一个名为localhost.cer的文件。
现在,在桌面上双击localhost.cer文件。弹出窗口应该出现,请单击其中的“安装证书…”按钮。
确保将存储位置设置为“本地计算机”,然后单击下一步。
然后选择“将所有证书放入以下存储区”,单击“浏览”,然后选择“受信任的根证书颁发机构”,最后单击“完成”。
最后一步是确保证书现在已被信任,因此在终端窗口中运行以下命令:
dotnet dev-certs https --check --trust
您应该收到一条回复,显示:找到了受信任的证书。这意味着您可以继续进行!
您不再需要桌面上的证书,因此可以删除该文件。
在使用Win 10和Visual Studio 2019 Community Edition版本16.1.1的过程中,我尝试了各种解决方案,经过一周的努力终于解决了以下问题:
修复IISExpress 10(程序 -> 程序和功能)将创建新的本地主机证书,也位于:Certificates(本地计算机)- > Personal
然后通过以下方法将该证书导出到文件中:
然后将该证书导入到:Certificates(本地计算机)- > Trusted Root Certification Authorities
我还尝试使用“dotnet dev-crts https --trust”,但它对我没有用,并且始终产生以下错误:
因此,总之,确保只有一个位于Certificates(本地计算机)- > Trusted Root Certification Authorities中的本地主机证书
更新:我刚刚意识到,在多次修改Web应用程序后,出现了不同的错误,我不得不重新完成整个过程才能使其正常工作!
这是我的第一次回答。我使用这种方法解决了这个问题。
然后转到个人 -> 证书,找到本地主机。
将本地主机拖到可信根证书颁发机构 -> 证书中。
现在结构列表问题已解决,因为一开始它不允许在用户证书中导入。
因此,现在再次输入证书,但不要选择“管理计算机证书”,而是选择管理用户证书,并将其从个人文件夹拖放到受信任的根证书颁发机构 -> 证书文件夹。
注意:如果您从个人中删除了本地主机,则只需通过首先在Chrome上打开Visual Studio项目,在地址栏左侧查看证书详细信息,然后导出该证书并将其导入个人 -> 证书文件夹即可。
我是一个完全的新手,经过一段时间的努力和阅读许多帖子后,我想分享我找到的解决方案。它与sanjeev发布的非常相似,但更详细,因此如果您是新手(像我),则可以更快地解决它。
如果您在Visual Studio 2019和Win 10上遇到此问题,请在MMC中删除所有本地主机证书: (1)在cmd>以管理员身份运行>键入“mmc”并按Enter。 (2)文件>添加/删除快捷方式... (3)选择“证书”,然后单击添加按钮 (4)选择“计算机帐户”和“本地计算机”选项 (5)单击并扩展“证书”下的控制台根文件夹 (6)删除不同文件夹中的所有本地主机证书
然后在控制面板>程序和功能中找到IIS 10.0 Express,并在列表中右键单击并选择“Repair”。这将在证书的“个人”文件夹(在先前使用的MMC窗口中)创建一个新的本地主机证书 - 不要忘记刷新以查看此新证书
复制(右键单击证书)位于“个人”文件夹中的此证书,并将其粘贴到文件夹“受信任的根证书颁发机构”>“证书”中
从“个人”文件夹中删除本地主机证书。应该只有一个本地主机证书,位于“受信任的根证书颁发机构”文件夹中
完成上述步骤后,它应该可以正常工作,希望您会发现这很有用
$cert = New-SelfSignedCertificate -DnsName "localhost", "localhost" -CertStoreLocation "cert:\LocalMachine\My" -NotAfter (Get-Date).AddYears(5);
$thumb = $cert.GetCertHashString();
For ($i=44300; $i -le 44399; $i++) {
netsh http delete sslcert ipport=0.0.0.0:$i
};
For ($i=44300; $i -le 44399; $i++) {
netsh http add sslcert ipport=0.0.0.0:$i certhash=$thumb appid=`{214124cd-d05b-4309-9af9-9caa44b2b74a`}
};
$StoreScope = 'LocalMachine';
$StoreName = 'root';
$Store = New-Object -TypeName System.Security.Cryptography.X509Certificates.X509Store -ArgumentList $StoreName, $StoreScope; $Store.Open([System.Security.Cryptography.X509Certificates.OpenFlags]::ReadWrite);
$Store.Add($cert);
$Store.Close();
来源:https://steffbeckers.eu/blog/iis-express-localhost-ssl-certificate-reset
我的错误实际上是“未安装asp.net开发人员证书”,但我认为以下解决方案在这种情况下仍然有效。请在命令提示符中执行以下命令。
dotnet dev-certs https --trust --check
echo Trust check: %errorlevel%
dotnet dev-certs https --trust -ep "%APPDATA%\ASP.NET\https\TestCert.pfx" -p TestPassword
echo Trust/Export: %errorlevel%
参考: https://github.com/Microsoft/DockerTools/issues/147#issuecomment-420433974
您可以使用PowerShell将证书从个人存储区移动到受信任的(根)存储区。
$cert = (Get-Childitem cert:\LocalMachine\My | Where-Object { $_.subject -eq 'localhost' }).Thumbprint
copy-item -path cert:\LocalMachine\My\$cert -Destination cert:\LocalMachine\Root\