【问题标题】:Visual Studio 2017 gives 'Adding the Certificate to The Trusted Root Certificates store failed with the following Errror'Visual Studio 2017 给出“将证书添加到受信任的根证书存储失败并出现以下错误”
【发布时间】:2018-05-04 22:07:21
【问题描述】:

我正在尝试在 SSL 模式设置为 true 的情况下运行 ASP MVC 应用程序,并且每当我运行该应用程序时,都会提示我信任 IIS Express SSL 证书。单击是时,它会给出错误消息“将证书添加到受信任的根证书存储失败,并出现以下错误。访问被拒绝'。我正在以管理员模式运行我的 Visual Studio 2017。我还通过 MMC 删除了 localhost 证书。 有没有其他人遇到过这个问题。

SOLN:这对我有用。 删除了所有本地主机证书。在添加/删除程序中运行修复 IIS Express。将 localhost 证书从 Personal/Certificate 复制并粘贴到 Trusted Root Certificates,它不再抱怨了。

【问题讨论】:

  • 你可以使用 Jexus Manager 来做同样的事情,JexusManager.com
  • @LexLi 谢谢,但我希望它能与现有系统一起工作。
  • 是的,它对我有用。 stackoverflow.com/questions/56276414/…
  • 使用 Visual Studio 2019 - 它将 localhost 证书放置在 Personal/Certificate 中。只需点击 Windows 键 => 运行 => MMC => 插入证书。删除 Trusted Root Certificates 中的 localhost 证书,然后将 localhost 从 Personal/Certificate 拖到 Trusted。感谢其他答案,但现在似乎更简单了。
  • 删除本地主机证书,然后重新安装 IIS Express 对我有用。

标签: visual-studio ssl ssl-certificate iis-express


【解决方案1】:

注意:从问题中添加 OP 的解决方案作为答案。

这对我有用。删除了所有本地主机证书。在添加/删除程序中运行修复 IIS Express。将 localhost 证书从 Personal/Certificate 复制并粘贴到 Trusted Root Certificates,它不再抱怨了。

修复/重新安装 IIS Express 似乎并没有真正解决这个问题(从 IIS Express 10 开始),真正的解决方案是将 localhost 证书添加到 Trusted Rood 证书。

这篇博文详细介绍了如何执行此操作:https://blogs.iis.net/robert_mcmurray/how-to-trust-the-iis-express-self-signed-certificate

总之,

  • 通过控制面板中的“管理计算机证书”或在 cmd 提示符下运行 certlm 打开证书管理器
  • 在 Personal>Certificates 下导出 localhost 证书并将其保存到磁盘
    • 不要导出私钥!只需导出公钥。
  • 在受信任的根证书颁发机构下,右键单击证书并导入刚刚导出的证书

【讨论】:

    【解决方案2】:

    我只需要运行 CMD > certlm 并删除个人文件夹中的 localhost 证书即可。

    【讨论】:

    • 这种事情让我成为一名MS开发人员很尴尬
    • 大多数情况下,您甚至可以直接从包管理中执行此操作。 +1 最简单的解决方案。
    【解决方案3】:

    在终端运行:

    dotnet dev-certs https -c
    

    这会让您知道您是否有任何有效的自签名证书。

    然后你可以运行:

    dotnet dev-certs https --check --trust
    

    这会让您知道您是否有任何受信任的自签名证书。

    如果您的开发证书已过期或不受信任,您可以运行:

    dotnet dev-certs https --clean
    

    这将删除证书。

    如果您想添加证书/受信任的证书,您可以运行

    dotnet dev-certs https --trust
    

    这将创建一个自签名证书并尝试将其添加到受信任的根证书颁发机构文件夹中。

    如果失败,您需要手动将证书添加到 Trusted Root Certification Authorities 文件夹。

    手动添加证书

    1. 第一步是在windows“run”上的“Type here to search”部分输入,一旦打开运行,输入“mmc”并点击ok。这将拉起控制台根目录。

    2. 然后您必须单击:文件 -> 添加/删除管理单元 -> 证书 -> 添加,然后单击确定。这会将您带到当前用户的证书

    3. 展开个人文件夹,然后单击证书文件夹。 滚动直到找到名为“localhost”的证书

    现在您可以将 localhost 文件复制并粘贴到 Trusted Root 文件夹中。如果这行得通,那么你就完成了!您可以通过运行以下命令来验证它是否有效:

       dotnet dev-certs https --check --trust.
    

    如果这不起作用并且您仍然拥有不受信任的证书,那么您将必须按照以下步骤操作。

    1. 右键单击本地主机证书,然后单击“所有任务”,然后单击“导出...” 我们需要先导出证书,然后才能将其导入 Trust Root 文件夹

    2. 按照证书导出向导进行操作。您不必更改默认值,因此只需继续单击下一步,直到到达“要导出的文件”屏幕。单击浏览并选择您的桌面作为目标并将文件命名为“localhost”。单击下一步,然后完成。这将在您的桌面上创建一个名为 localhost.cer 的文件

    3. 现在双击桌面上的 localhost.cer 文件。应该会出现一个弹出窗口,单击“安装证书...”按钮

    4. 确保将商店位置设置为“本地机器”,然后点击下一步。

    5. 然后选择“将所有证书放入以下存储”,点击浏览,然后选择“受信任的根证书颁发机构”并点击完成

    最后一步是确保证书现在是受信任的,因此在终端运行中:

     dotnet dev-certs https --check --trust
    

    您应该会收到一条回复,说明:找到了受信任的证书。这意味着您可以开始了!

    您不再需要桌面上的证书,因此您可以删除该文件。

    【讨论】:

    • 这让我得到了我需要去的大部分地方。对我来说,一个问题是选择 Personal 文件夹,右键单击 View > Options,然后选择 Physical Certificate Stores。之后我就可以进行导入了。但是感谢您发布此@William,它对我帮助很大。
    【解决方案4】:

    在为这个问题苦苦挣扎了一周(使用 Win 10 和 Visual Studio 2019 社区版 16.1.1 版)并尝试了各种解决方案后,我发现了以下问题:

    • 默认情况下,IISExpress 10 的 localhost 证书安装在: 证书(本地计算机)-> 个人

    • 修复 IISExpress 10(程序 -> 程序和功能)将在以下位置创建一个新的 localhost 证书:证书(本地计算机)-> 个人

    • 然后通过将证书保存到文件中来导出该证书:

    然后将该证书导入:证书(本地计算机)-> 受信任的根证书颁发机构

    • 然后正如user2988031 指出的那样:从证书(本地计算机)-> 个人中删除证书

    我也尝试使用“dotnet dev-crts https --trust”,但这对我不起作用并且总是产生以下错误:

    所以总结一下:让舒尔只有 1 个 localhost 证书在 证书(本地计算机)-> 受信任的根证书颁发机构

    更新:我刚刚意识到在修改网络应用程序几次后 出现了一个不同的错误,我不得不再次经历整个过程 为了让它工作!

    【讨论】:

      【解决方案5】:

      这是我第一次回答。我已经用这个方法解决了这个问题。

      1. 在开始菜单类型证书中,您将看到选项 (管理计算机证书) 而不是(管理用户证书)View Image
      2. 之后转到个人 -> 证书并找到本地主机

      3. 将 localhost 拖到受信任的根证书颁发机构 -> 证书

      4. 现在结构列表问题已解决,因为它首先不允许导入用户证书。

      5. 所以,现在再次开始键入证书,但不要管理计算机证书,而是转到 管理用户证书,然后从个人证书颁发机构到受信任的根证书颁发机构执行相同的拖放操作 -> 证书文件夹。

      注意:如果您已从个人中删除了 localhost,则只需通过首先在 chrome 上打开 Visual Studio 项目来导入它,您将在地址栏左侧看到证书详细信息,然后导出该证书并导入该证书证书到个人 -> 证书文件夹

      【讨论】:

      • 这对我有用,我更喜欢它,因为它不像其他一些答案那样涉及全面删除证书。
      • 非常感谢先生。对于 Visual Studio 2019,它适用于我。
      【解决方案6】:

      我对此完全是个菜鸟,想分享我在挣扎了一段时间并阅读了许多帖子后找到的解决方案。它与 sanjeev 发布的内容非常相似,但是更详细,因此如果您是新手(如我自己),您可以更快地解决它。

      如果您在使用 Visual Studio 2019 和 Win 10 时遇到此问题,请删除 MMC 中的所有 localhost 证书: (1) cmd>以管理员身份运行>输入“mmc”并回车 (2) 文件>添加/删除管理单元... (3) 选择“证书”并点击添加按钮 (4) 选择选项“计算机帐户”和“本地计算机” (5) 控制台根文件夹 > 单击并展开证书 (6) 删除不同文件夹下的所有localhost证书

      然后在“控制面板”>“程序和功能”列表中找到 IIS 10.0 Express,右键单击并选择“修复”。这将在证书的“个人”文件夹中创建一个新的本地主机证书(在之前使用的 MMC 窗口中 - 不要忘记刷新以查看这个新证书)

      复制(右键单击证书)位于“个人”文件夹中的此证书并将其粘贴到文件夹“受信任的根证书颁发机构”>“证书”

      从“个人”文件夹中删除本地主机证书。应该只有一个 localhost 证书,并且位于“受信任的根证书颁发机构”文件夹中

      在此之后,它应该可以正常工作了,希望你觉得这很有用

      【讨论】:

        【解决方案7】:

        我的错误实际上是“未安装 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

        【讨论】:

          【解决方案8】:

          这是另一个简单的分步解决方案,以防您提供的答案不清楚。

          第 1 步: 转到 Windows 开始并键入 Certificates,然后单击 Manage computer certificates。这将打开证书管理器窗口。

          第 2 步: 现在单击>Personal 文件夹上的箭头,然后单击Certificates 文件夹。现在选择并删除文件夹中的所有证书。

          【讨论】:

          • 这成功了!在尝试了上述所有答案之后......最终删除 localhost 证书对我有用。在我的情况下,我的机器经历了域更改,并且引用变得一团糟。
          【解决方案9】:

          您可以使用 powershell 将证书从个人存储移动到受信任的(根)存储。

          $cert = (Get-Childitem cert:\LocalMachine\My | Where-Object { $_.subject -eq 'localhost' }).Thumbprint
          copy-item -path cert:\LocalMachine\My\$cert -Destination cert:\LocalMachine\Root\
          

          【讨论】:

            【解决方案10】:

            如果有人在使用 docker 时遇到此错误,很可能这不是真正的问题,您必须查看输出才能找到它。 在我的情况下,它在.csproj 文件中缺少UserSecretID,但显示了此错误。

            【讨论】:

              【解决方案11】:

              我在从 Visual Studio 2019 升级到 2022 时遇到了这个问题。我之前已经从证书(本地计算机)-> 个人到证书(本地计算机)-> 受信任的根证书手动导出/导入 IIS Express 证书当局,解决 VS2019 的问题。

              我以为 VS2022 会对相同的证书感到满意,但事实并非如此 - 我开始收到上面显示的错误消息。

              我做了什么来解决它:

              1. 从个人和受信任的根目录中删除所有 localhost 证书(我为当前用户和本地计算机执行此操作)
              2. 修复 IIS Express,生成新证书
              3. 重新启动 VS2022,在调试模式下运行我的应用程序,并让 VS 处理证书的信任(当提示信任它时回复“是”) - 它成功地做到了,此后我没有遇到任何问题。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2011-02-24
                • 2012-12-19
                • 1970-01-01
                • 1970-01-01
                • 2021-06-27
                • 2016-08-30
                • 1970-01-01
                相关资源
                最近更新 更多