为什么我的 localhost 自签名 SSL 证书在 Chrome 中突然无效?

KSw*_*t87 17 asp.net google-chrome localhost ssl-certificate visual-studio-2022

我刚刚再次开始处理一个大约一个月没有接触过的 .NET 项目,突然在我的本地主机环境中,当我尝试启动我的应用程序时,出现了 ERR_CERT_AUTHORITY_INVALID 错误。我使用 dotnet dev-certs 命令重新生成 localhost 证书,但奇怪的是 Chrome 似乎是从其他地方获取此 localhost 证书。在“开发人员工具”窗格中,我看到了这一点(注意有效期):

在此输入图像描述

我不知道为什么它显示无效的有效期,因为我今晚刚刚生成了一个新的本地主机证书,并且今晚我已经多次破坏了 Chrome 的 SSL 缓存。以下证书同时出现在 certmgr 的“个人”>“证书”和“受信任的根证书颁发机构”部分中。

在此输入图像描述

有人可以帮助我理解为什么 Chrome 认为我的本地主机证书来自无效的权威机构以及如何纠正这个问题吗?最后一个有效版本来自完全相同的位置(尽管我认为可能是其他东西生成的,因为我不记得使用 dotnet dev-certs CLI 命令来创建原始证书)。

ste*_*amb 22

经过我花了很多时间寻找解决方案,最终我能够按照以下步骤解决它。希望这能节省您的时间。

  1. 在 Chrome 中打开开发工具,转到“安全”选项卡,然后单击“查看证书”
  2. 转到详细信息选项卡并单击复制到文件...
  3. 然后将弹出“证书导出向导”窗口,单击“下一步”按钮继续。
  4. 保留DER编码选项,点击下一步,选择浏览,保存并将证书命名为localhost.cer。您应该在刚才选择的保存路径上看到您保存的证书。
  5. chrome://settings/将其复制到浏览器 URL 框中打开。
  6. Privacy and security在侧面菜单中选择Security>>>AdvancedManaged Certificates
  7. 将弹出证书窗口,如下所示。选择“受信任的根证书颁发机构”选项卡,然后单击“导入...” 在此输入图像描述
  8. 导入刚刚在步骤 4 中保存到所选路径的本地主机证书。
  9. 单击“浏览”导入 locahost.cer,然后单击“是”完成导入证书过程。
  10. 关闭所有内容并重新启动 Chrome 浏览器。如果使用 dotnet run 命令提示符运行项目,请记住重建并重新运行项目,以使更改在浏览器中生效。现在您应该能够使用安全标签访问任何本地主机网站网址。


KSw*_*t87 5

嗯,这是非常愚蠢的。在昨晚浪费了几个小时和今晚一两个小时尝试在博客等中找到的修复之后,类似 StackOverflow 问题的答案表明我应该尝试修复我的 Visual Studio 安装。果然,这样做就解决了问题。

在修复我的 Visual Studio 安装并加载我遇到 HTTPS 问题的项目后,我从 VS2022 收到一个如下所示的对话框(从 bing.com/images 剪下来,因为我在尝试修复此问题时关闭了对话框)并且我选择“是”。

在此输入图像描述

这添加了一个新证书,但奇怪的是,它仅将其添加到 certmgr 中的受信任根证书颁发机构,而不是个人,而我从 dotnet dev-certs CLI 命令生成的证书创建了两个;一个在“受信任的根证书颁发机构”中,另一个在“个人”中。下面的屏幕截图显示了两个证书;“IIS Express 开发证书”是解决该问题的证书,也是通过修复 VS2022 创建的证书。

在此输入图像描述

我不知道为什么VS2022在证书过期后没有提示我更新证书。从好的方面来说,假设这个问题在 Visual Studio 的未来迭代中永远不会得到解决,在经历了这次经历之后,我确信到 2027 年 10 月 3 日,我会记住今天发生的一切,并且我必须修复我的如果我想避免由于本地主机 SSL 证书过期而浪费时间,请安装 VS20XX。

  • 修复安装,包括同意信任过程中生成的新开发证书,并没有为我解决这个问题。 (3认同)