dotnet dev-certs证书不受信任。

25

我正在阅读Adam Freeman的书《Pro ASP.Net Core 3》。我已经到了https的介绍部分。他指导我们使用Powershell,并按照以下顺序运行这些命令:

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

当我运行clean命令时,我收到以下信息:

"HTTPS development certificates successfully removed from the machine."

但是当我运行trust命令时,我会得到以下信息:

"未找到具有跨安全分区访问密钥的有效 HTTPS 证书。将运行以下命令以修复此问题:'sudo security set-key-partition-list -D localhost -S unsigned:,teamid:UBF8T346G9' 此命令将使证书密钥可在安全分区间访问,并可能提示您输入密码。有关更多信息,请参见:https://aka.ms/aspnetcore/2.1/troubleshootcertissues"

"未找到具有跨安全分区访问密钥的有效 HTTPS 证书。将运行以下命令以修复此问题:'sudo security set-key-partition-list -D localhost -S unsigned:,teamid:UBF8T346G9' 此命令将使证书密钥可在安全分区间访问,并可能提示您输入密码。有关更多信息,请参见:https://aka.ms/aspnetcore/3.1/troubleshootcertissues"
"请求信任 HTTPS 开发人员证书。如果证书以前未被信任,则将显示确认提示框。单击提示框上的“是”以信任该证书。信任 HTTPS 开发人员证书时出错。"

我尝试了以下方法:
  • 运行dotnet dev-certs https,结果显示"A valid HTTPS certificate is already present."
  • 以管理员身份运行powershell。但我收到了同样的错误。本书说我可能会收到几个对话框,但我没有收到。
  • dotnet --version显示版本为3.1.200。
我需要做什么才能让证书正常工作?

3
已经存在有效的HTTPS证书。看起来开发人员证书已经生成,您可以尝试通过将其从“当前用户>个人>证书”复制到证书管理器UI中的“当前用户>受信任的根证书颁发机构>证书”中手动信任该证书,使用ASP.NET Core HTTPS development certificate友好名称。然后检查它是否适用于您。 - Fei Han
太好了!成功了!嗨@ROBERTRICHARDSON,很高兴听到解决方法有所帮助。我写了一篇文章,你可以接受它作为答案,这将帮助其他社区成员快速找到此案例并解决类似问题。 - Fei Han
我在Mac上遇到了同样的循环块......但我不是Mac的粉丝,在我们的混合java / dotnet-core环境中,由于PC网络政策被严格锁定,开发人员被分配了Mac电脑。为什么我的电脑在骗我? :). “HTTPS开发证书已成功从计算机中移除。” - granadaCoder
未来的读者。有人在这里提出了一个“更大的锤子”想法:https://github.com/dotnet/AspNetCore.Docs/issues/14581#issuecomment-535280484。dotnet tool uninstall --global dotnet-dev-certs dotnet tool install --global dotnet-dev-certs dotnet dev-certs https --trust(对于Mac不起作用,供参考,但我在这里留下了线索)。 - granadaCoder
4个回答

34

好的...我在下面的github链接中找到了一个MAC超级提示。

(它可能会翻译到PC端...但我无法测试)

https://github.com/dotnet/sdk/issues/10422

在macOS上遇到了相同的问题。解决方法是在钥匙串中,在“系统”下删除旧的本地主机证书,并通过文档中描述的dotnet命令重新创建它。它将被放置在“登录”下面。

所以为了更好地描述上面的引用,我在这里添加了一个屏幕截图(下面带有洋红色/紫红色/粉色圆圈),提供一个“这就是它在Mac上”的参考.....描述上面文本的内容。

我的步骤如下:

dotnet dev-certs https --clean

dotnet dev-certs https --check

// (DO THE MANUAL keychain-old-localhost removal NOW (image below) 
// (before running the below terminal commands)

dotnet dev-certs https --check

dotnet dev-certs https 

dotnet dev-certs https --trust

输入图像描述


1
这个完美地运行了!我自己永远也想不出来。 - Merkle Groot
@MerkleGroot 我明白你的感受。你觉得自己就像处在被米诺陶尔(Minotaur)占据的迷宫中,试图将问题解决。请回报你使用的是 Mac 还是 PC。 - granadaCoder
1
这是一台Mac电脑,而我并不是Mac专家。 - Merkle Groot
Mac是我最不喜欢的操作系统(强调“最不喜欢”)。我会使用win10,也会使用“真正的Linux”(例如Ubuntu,带有“cinnamon”桌面环境),但Mac操作系统并不是我的菜。然而,在我现在的公司,开发人员可以在Mac上获得“管理员权限”,但不能在PC上获得。因此,我必须出于必要而在其中一种操作系统上生活。 - granadaCoder

6

我需要做什么才能让证书正常工作?

由于某些原因,dotnet CLI 可能会在我们使用 dotnet dev-certs https --trust 命令信任 HTTPS 开发证书时抛出异常。

作为解决方法,我们可以尝试以下步骤手动信任证书。

  1. 运行 dotnet dev-certs https 命令生成 HTTPS 证书(如果您没有生成它)

  2. 通过从证书管理器 UI 中的 当前用户 > 个人 > 证书 复制带有ASP.NET Core HTTPS development certificate友好名称的证书并将其复制到当前用户 > 受信任的根证书颁发机构 > 证书中,如下所示。

    enter image description here


1
对我来说这个方法可行: 1)使用 certmgr.msc 备份所有 localhost 证书,然后将它们删除。 2)运行 dotnet dev-certs https 后出现了“未找到跨安全分区访问的有效 HTTPS 证书...” 的错误提示。 3)我将一个仍然有效的 ASP.NET Core HTTPS 开发证书当前用户 > 受信任的根证书颁发机构 > 证书 复制到 当前用户 > 个人 > 证书 中。 至少这个方法可以让 dotnet run 正常工作。 - surfmuggle

3

以下命令对我有效:

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

enter image description here


3

这是一个棘手的问题,对于ASP.NET Core网站项目,我尝试了几种方法都没有成功。我在Mac上使用VS Code(macOS 12.6.7)。

当我在VS Code终端中运行以下命令时,它对我有效:

  • 确保一个干净的ASP.NET Core项目:dotnet clean
  • 清除现有证书:dotnet dev-certs https --clean
  • 创建一个新的证书:dotnet dev-certs https --trust

现在,我可以使用dotnet run运行项目,并重新加载浏览器。

附注:如果你懒得话,你也可以像这样链接这些命令:dotnet clean && dotnet dev-certs https --clean && dotnet dev-certs https --trust


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接