Asp.net core 继续使用过期的证书

笑问苍*_*问苍天 10 c# ssl-certificate asp.net-core

最近,我的本地主机证书已过期,我已去“sertmgr.msc”删除所有本地主机证书并重新启动 VS 并向 Windows 添加新的本地主机证书。但是当我再次运行我的应用程序时,仍然使用旧的过期证书而不是新证书,有谁知道如何解决这个问题?我已经运行了下面的命令显示。

dotnet dev-certs https --clean
dotnet dev-certs https --trust
Run Code Online (Sandbox Code Playgroud)

证书管理中的过期证书

Ped*_*las 11

我设法解决了这个问题:

  1. 在你做任何事情之前,清理旧证书并生成一个新的可信证书。

    dotnet dev-certs https --clean
    dotnet dev-certs https --trust
    
    Run Code Online (Sandbox Code Playgroud)
  2. 如果上述过程失败,请在重试干净/信任命令之前手动删除证书

  3. 获取您遇到问题的 Web 应用程序的用户机密 ID。在您的项目文件夹中搜索 UserSecrets.UserSecretsIdAttribute(" 并获取 GUID。

  4. 转到%APPDATA%\Microsoft\UserSecrets并打开包含您遇到问题的项目的 GUID 的文件夹,并将其保持打开状态。

  5. 创建一个新的 Asp .Net Core 项目,获取它的secretsGUID,转到对应的秘密文件夹(%APPDATA%\Microsoft\UserSecrets\GUID),然后打开文件secrets.json. 你应该看到这样的东西

    {
      "Kestrel:Certificates:Development:Password": "8353f2ec-3cc0-4052-9776-9585b6abd346"
    }
    
    Run Code Online (Sandbox Code Playgroud)
  6. 从新创建的项目中复制该设置secrets.json并使用它来覆盖secrets.json损坏项目的开发密码

这样,我设法让我的旧项目使用新生成的证书。这是hacky,但它的工作原理

  • 太棒了,它正在工作。我刚刚删除了“%APPDATA%\Microsoft\UserSecrets”中的“Kestrel:Certificates:Development:Password”部分,一切都很好。谢谢,真的有帮助。 (7认同)
  • 删除 UserSecrets 文件夹是一个技巧,非常感谢 (7认同)
  • 当我删除“Kestrel:Certificates:Development:Password”时我也解决了,我相信删除 UserSecrets 文件夹也可以。 (3认同)
  • 步骤 3 - 用户机密 ID 应位于 .csproj 文件中。右键单击项目 -> 编辑项目文件将其打开。 (2认同)

小智 8

对于我在 Visual Studio 2022 上使用 Angular 的 ASP.NET Core 项目:

dotnet dev-certs https --clean
dotnet dev-certs https --trust
dotnet dev-certs https --check
Run Code Online (Sandbox Code Playgroud)

然后我停止了 Visual Studio 并删除了该项目的.key文件.pem

C:\Users\[your_user]\AppData\Roaming\ASP.NET\Https
Run Code Online (Sandbox Code Playgroud)


Kin*_*tic 6

根据佩德罗的回答,

我用了:

dotnet dev-certs https --clean
dotnet dev-certs https --trust
Run Code Online (Sandbox Code Playgroud)

清理/替换旧证书。

然后我去了:

%APPDATA%\Microsoft\UserSecrets
Run Code Online (Sandbox Code Playgroud)

并删除了在那里找到的所有文件夹。

现在我的应用程序运行没有抱怨。创建一个新的 .net core 6 应用程序并运行它并没有创建一个新文件夹,所以我不知道它是否不再需要。