【问题标题】:Unable to configure HTTPS endpoint. No server certificate was specified, and the default developer certificate could not be found无法配置 HTTPS 端点。未指定服务器证书,找不到默认的开发者证书
【发布时间】:2019-04-17 10:27:36
【问题描述】:

我正在开发一个配置了 HTTPS 的结构应用程序。尽管我安装了有效的证书,但它会引发异常。

【问题讨论】:

    标签: asp.net-core .net-core asp.net-core-2.1 kestrel


    【解决方案1】:

    this blog 的这些指示对我有用

    1. dotnet dev-certs https --clean
    2. dotnet dev-certs https -t
    3. 重启VS

    【讨论】:

    • 如果失败(就像我的情况一样,请查看@Stephen 的答案 (stackoverflow.com/a/57301251/1796) - 这对我有用。
    • 除了这些步骤之外,我还需要重新启动 VS
    • @AndrewBullock 已更新以包含该步骤,谢谢。
    • 遵循了这个但仍然有问题 - 然后按照@hikarikuen 的建议 (stackoverflow.com/a/64776368/5101) - 从 Windows 证书存储中清除了 localhost 个人证书,然后重新运行上述命令,一切正常。
    • 像魅力一样工作!在 windows 中需要以管理员身份使用命令提示符
    【解决方案2】:

    我在 OSX 上,dotnet dev-certs https --cleansudo dotnet dev-certs https --clean 不适合我。最后,我能够通过以下步骤修复它。

    1. 进入钥匙串访问
    2. 解锁系统钥匙串
    3. 删除localhost证书
    4. 运行dotnet dev-certs https -t

    您现在应该可以正常运行了。

    编辑:

    如果在遵循上述答案后,您确实遇到了错误,显示为There was an error saving the HTTPS developer certificate...,请查看此答案https://stackoverflow.com/a/56709117/621827

    【讨论】:

    • 下次以 sudoer 运行,dotnet ev-certs https --clean ;) 另外,相信你的证书,他们通常只会抱怨是有原因的。
    • @Pogrindis 我确实以sudo 的身份运行,但它仍然无法正常工作。我不得不从钥匙串中手动删除它来解决这个问题。
    • 你是个活生生的救星。
    • 此解决方案适用于带有 .NET Core 2.1(.301) 的 OS X 10.14.6
    • 这个解决方案在 macOS Monterey 12.1 M1 上也适用于我
    【解决方案3】:

    解决方案

    (对于 Windows,不确定其他操作系统是否存在类似的问题/解决方案)

    在命令提示符或 Powershell 终端中:

    • 运行 certmgr.msc 并删除 Personal\CertificatesTrusted Root Certification Authorities\Certificates 下的所有 localhost 证书。
    • 然后运行一次dotnet dev-certs https -t 以创建并信任新的开发证书。
    • 通过运行 dotnet dev-certs https --check --verbose 进行验证,或者再次尝试调试您的 ASP.NET 应用程序。

    在创建新证书之前,您可能还需要运行 dotnet dev-certs https --clean

    【讨论】:

    • 谢谢。对于我来说,我需要删除 certmgr.msc -> Personal\Certficates 中的所有“localhost”证书。我已经尝试了所有其他“东西”,但直到我这样做了它才起作用。
    • +1。 Personal\Certificates 下有很多垃圾本地主机证书,即使在运行干净之后也是如此。谢谢。
    • 在我的情况下还需要清理证书管理器下的证书。您能否重写您的答案以首先提供解决步骤?以目前的形式,很可能有些人在达到实际解决方案之前就离开了。 (我可以为此编辑您的答案,但除了作者之外,任何人都无法做出太大的改变。)
    【解决方案4】:

    对我来说,问题是通过运行解决的:

    1. dotnet dev-certs https --clean
    2. dotnet dev-certs https --verbose

    【讨论】:

      【解决方案5】:

      我在使用 Visual Studio 的 Windows 10 系统上遇到了这个问题。问题似乎是 GUI 中用于清除 HTTPS 本地证书的命令失败,并出现我无法再重现的错误消息。

      我的解决方案是打开当前 Windows 帐户的 certmgr 并删除所有个人 localhost 证书。那里有大约 20 个证书,因为我已经尝试过多次重新创建它们。删除所有这些证书后,我再次运行了我的 .Net 核心 HTTPS API,一切正常!

      总而言之,为当前用户打开您的 certmgr 并清除所有个人/本地主机证书。

      【讨论】:

      • 在其他答案无效之后,这对我有用。清除了 Personal 和 Trusted Root Certs 下的两组 localhost。
      【解决方案6】:

      对我来说,删除 file:\\%APPDATA%\Microsoft\SystemCertificates\My\Certificates 下的文件并在 cmd dotnet dev-certs https -t 中运行解决了我的问题。

      【讨论】:

      • 似乎 certmgr.msc 无法删除这些文件,因此手动删除它们解决了问题
      • 它对我有用。谢谢@Veleirian
      【解决方案7】:

      在 Windows 中, dotnet dev-certs https --clean 对我不起作用,我必须手动删除这些 localhost 证书。

      1. 打开 certmgr.msc
      2. 删除“受信任的根证书颁发机构/证书”下的所有 localhost 证书
      3. 运行dotnet dev-certs https -t

      【讨论】:

        【解决方案8】:

        我遇到了类似(但不完全相同)的问题。
        对于 2.1,您必须配置您的证书。
        我现在完全在 appsettings.json 中执行此操作。
        你可以在这里找到我的帖子:
        Configure self hosting Kestrel App with certificate for https (internet web server)

        只看一下解决方案...

        【讨论】:

          【解决方案9】:

          打开 RUN ,然后输入 mmc.exe,然后

          双击证书

          删除两个文件夹中的本地主机证书

          然后打开你的powershell

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

          【讨论】:

            【解决方案10】:

            如果dotnet dev-certs https --clean 不起作用。

            1. 打开运行并打开 mmc.exe
            2. 在 MMC 中的文件菜单中单击添加/删除管理单元。
            3. 在添加/删除管理单元窗口中,找到可用管理单元中的证书并将其添加到选定的管理单元中
            4. 选择用户帐户
            5. 在控制台根目录 -> 证书当前用户 -> 个人点击证书
            6. 您将看到为当前用户颁发和安装的证书列表。不要删除或更改任何您不知道的证书,仅删除与自签名 localhost ASP.NET Core 相关的证书。

            【讨论】:

              【解决方案11】:

              我有同样的问题和清洁 -> 然后安装证书对我有帮助(这里有另一个答案)。你也可以issue a certificate 作为生产服务器。很有帮助。

              【讨论】:

                【解决方案12】:

                不确定这是否对其他人有帮助,但我在我的 Mac 上确实遇到了这个问题。我在 Dropbox 中有项目,因此它在机器之间共享,在“第二台”机器上,我必须进入并手动删除“obj”和“bin”文件夹,然后重新运行应用程序,一切正常

                【讨论】:

                  【解决方案13】:

                  如果您想使用非开发环境,请不要忘记只有在 env 是开发环境时才会自动添加用户密码。

                  您可以使用 AddUserSecrets 方法来解决这个问题:

                  public static IHostBuilder CreateHostBuilder(string[] args) =>
                          Host.CreateDefaultBuilder(args)
                              .ConfigureWebHostDefaults(webBuilder =>
                              {
                                  webBuilder.ConfigureAppConfiguration((hostingContext, builder) =>
                                  {
                                      var env = hostingContext.HostingEnvironment;
                                      if (env.IsEnvironment("Local"))
                                      {
                                          builder.AddUserSecrets<Startup>();
                                      }
                                  })
                                  .UseStartup<Startup>();
                              });
                  

                  另见:https://docs.microsoft.com/en-us/aspnet/core/security/app-secrets?view=aspnetcore-3.1&tabs=windows#access-a-secret

                  【讨论】:

                  • 不需要创建局部变量,可以内联写检查条件
                  【解决方案14】:

                  我遇到了同样的问题。 问题是该项目使用的是 .net 4.6.1 而不是 .net core。

                  【讨论】:

                    【解决方案15】:

                    我在命令提示符下运行它。顺便说一句,我正在使用 Window 10 dotnet 开发证书 https dotnet dev-certs https -t

                    【讨论】:

                    • 请小心使用这些命令后确保您重新启动Visual Studio
                    【解决方案16】:
                    1. dotnet tool uninstall --global dotnet-dev-certs --version(必需版本)
                    2. dotnet 工具安装 --global dotnet-dev-certs
                    3. dotnet dev-certs https --trust

                    更多详情请访问 GitHub 问题页面here 以及官方文档Here

                    【讨论】:

                      【解决方案17】:

                      我遇到了这个问题,我的解决方案是重新启动。当我这样做然后重新打开 Visual Studio 2019 时,它要求我接受新的 SSL 证书。之后,我就可以运行我的程序了。

                      【讨论】:

                        【解决方案18】:

                        更多细节 - 如果您通常以普通(非管理员)用户身份登录,请勿在管理员命令提示符下运行“dotnet dev-certs https”命令如果您有单独的管理员级别身份。在正常登录下的正常命令提示符下运行它们。问我怎么知道的。 :-P

                        如果您从提升的命令提示符(使用明显独立的管理员身份)运行这些命令,您将遇到以下情况:

                        • “dotnet dev-certs https --trust”可以正常工作
                        • “dotnet dev-certs https --check --verbose”会告诉你一切都很好
                        • 当您尝试启动调试器时,VS Code 将继续显示“无法配置 HTTPS 端点...”错误
                        • 您将继续从浏览器收到“证书不受信任”警告。

                        如果您看到这些问题,请从普通命令提示符运行“dotnet dev-certs https”命令。为我修好了。希望这可以帮助某人,而无需花费我在这方面所做的时间!

                        【讨论】:

                          【解决方案19】:

                          如果您正在访问此页面,并且如果您像我一样不幸尝试了此页面上提到的所有解决方案/方法但没有任何效果,那么您可能想知道我做了什么并解决了我的问题。

                          无论我删除了多少次本地主机证书,我都从我的 ASP.NET Core Web 应用程序中收到此错误。

                          然后,我通过这个命令使用 Powershell 创建了一个自签名证书。 [我从互联网上的某个地方复制了这个 PowerShell sn-p。不记得出处了。]

                            $cert = New-SelfSignedCertificate -DnsName mydemowebapp.net -CertStoreLocation cert:\LocalMachine\My
                            $pwd = ConvertTo-SecureString -String "MyPassword" -Force -AsPlainText
                            Export-PfxCertificate -Cert $cert -FilePath C:\temp\cert.pfx -Password $pwd
                          

                          然后,在我的 appsertings.Development.json 中,我添加了这个条目。

                            "Kestrel": {
                              "EndPoints": {
                                "Https": {
                                  "Url": "https://localhost:5000",
                                  "Certificate": {
                                    "Path": "C:\\temp\\cert.pfx",
                                    "Password": "MyPassword",
                                    "AllowInvalid": "true"
                                  }
                                }
                              }
                            }
                          

                          运行应用程序,砰!问题解决了。我使用了与我在 LaunceSettings 中找到的 URL https://localhost:5000 相同的 URL。

                          我讨厌这样的解决方案,但至少我可以用这样的解决方案继续我的开发。我不知道最近到底发生了什么,我不得不面对这个问题。那是windows更新吗?或者是其他东西?我不知道。我以前没有遇到过这个问题,直到最近。 是的,我记得在 Kestrel 而不是 IIS 中运行网站。

                          【讨论】:

                            【解决方案20】:

                            我在“Startup.cs”文件中注释了以下行,它对我有用。

                            app.UseHttpsRedirection();
                            

                            【讨论】:

                            • 评论不是修复
                            • 注释掉这可能有助于解除阻塞,在我的项目中这不是问题,必须手动更新 properties/launchSettings.json,从那里删除 https url "applicationUrl": "localhost:5094 ",我知道这不是解决办法,但在开发时仅使用 http 是有效的
                            猜你喜欢
                            • 2020-05-01
                            • 2021-10-27
                            • 2022-10-17
                            • 2022-01-01
                            • 2021-09-23
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 2013-11-03
                            相关资源
                            最近更新 更多