Asp.net 核心继续使用过期的证书
Asp.net core keep using the expired certificate
最近,我的本地主机证书过期了,我已经去“sertmgr.msc”删除所有本地主机证书并重新启动 VS 并将新的本地主机证书添加到 windows。
但是什么时候我 运行 再次使用我的应用程序,仍然使用旧的过期证书而不是新证书,有人知道如何解决这个问题吗?
我已经 运行 下面显示的命令。
dotnet dev-certs https --clean
dotnet dev-certs https --trust
Expired Cert
Cert In Cert Manage
我假设您正在使用 IIS Express 来托管您的应用程序。如果是这样,听起来您缺少将证书链接到您的应用程序,如 this blog post:
中所述
从命令行转到 C:\Program Files (x86)\IIS Express
和 运行 以下命令,输入正确的端口号和新证书指纹:
IisExpressAdminCmd.exe setupsslUrl -url:https://localhost:PORT/ -CertHash:THUMB
我设法解决了这个问题:
在你做任何事情之前,清理旧证书并生成一个新的可信证书。
dotnet dev-certs https --clean
dotnet dev-certs https --trust
如果上述过程失败,manually remove the certificates 在重试 clean/trust 命令之前。
获取遇到问题的 Web 应用程序的用户机密 ID。在您的项目文件夹中搜索 UserSecrets.UserSecretsIdAttribute(" 并获取 GUID。
转到 %APPDATA%\Microsoft\UserSecrets
并打开包含您遇到的有问题的项目的 GUID 的文件夹并保持打开状态。
新建一个Asp.Net Core项目,获取其secrets
GUID,进入对应的secret文件夹(%APPDATA%\Microsoft\UserSecrets\GUID
),打开文件secrets.json
。你应该看到这样的东西
{
"Kestrel:Certificates:Development:Password": "8353f2ec-3cc0-4052-9776-9585b6abd346"
}
从新创建的项目 secrets.json
复制该设置,并用它覆盖损坏项目 secrets.json
上的开发密码
通过这种方式,我成功地让我的旧项目使用了新生成的证书。它很笨拙,但它确实有效
如果上述正确说明不起作用,您可以检查以下步骤:
- 打开运行并打开mmc.exe
- 从文件菜单的 MMC 内部单击 Add/Remove 管理单元。
- 在 add/remove 管理单元 window 中,在可用的管理单元中查找证书并将其添加到选定的
- 选择用户帐户
- 在控制台 root -> Certificates Current User -> Personal 点击 Certificates
- 您将看到为当前用户颁发和安装的证书列表。不要删除或更改您不知道的任何证书,仅删除与自签名本地主机相关的证书 ASP.NET 核心。
最近,我的本地主机证书过期了,我已经去“sertmgr.msc”删除所有本地主机证书并重新启动 VS 并将新的本地主机证书添加到 windows。 但是什么时候我 运行 再次使用我的应用程序,仍然使用旧的过期证书而不是新证书,有人知道如何解决这个问题吗? 我已经 运行 下面显示的命令。
dotnet dev-certs https --clean
dotnet dev-certs https --trust
Expired Cert Cert In Cert Manage
我假设您正在使用 IIS Express 来托管您的应用程序。如果是这样,听起来您缺少将证书链接到您的应用程序,如 this blog post:
中所述从命令行转到 C:\Program Files (x86)\IIS Express
和 运行 以下命令,输入正确的端口号和新证书指纹:
IisExpressAdminCmd.exe setupsslUrl -url:https://localhost:PORT/ -CertHash:THUMB
我设法解决了这个问题:
在你做任何事情之前,清理旧证书并生成一个新的可信证书。
dotnet dev-certs https --clean dotnet dev-certs https --trust
如果上述过程失败,manually remove the certificates 在重试 clean/trust 命令之前。
获取遇到问题的 Web 应用程序的用户机密 ID。在您的项目文件夹中搜索 UserSecrets.UserSecretsIdAttribute(" 并获取 GUID。
转到
%APPDATA%\Microsoft\UserSecrets
并打开包含您遇到的有问题的项目的 GUID 的文件夹并保持打开状态。新建一个Asp.Net Core项目,获取其
secrets
GUID,进入对应的secret文件夹(%APPDATA%\Microsoft\UserSecrets\GUID
),打开文件secrets.json
。你应该看到这样的东西{ "Kestrel:Certificates:Development:Password": "8353f2ec-3cc0-4052-9776-9585b6abd346" }
从新创建的项目
secrets.json
复制该设置,并用它覆盖损坏项目secrets.json
上的开发密码
通过这种方式,我成功地让我的旧项目使用了新生成的证书。它很笨拙,但它确实有效
如果上述正确说明不起作用,您可以检查以下步骤:
- 打开运行并打开mmc.exe
- 从文件菜单的 MMC 内部单击 Add/Remove 管理单元。
- 在 add/remove 管理单元 window 中,在可用的管理单元中查找证书并将其添加到选定的
- 选择用户帐户
- 在控制台 root -> Certificates Current User -> Personal 点击 Certificates
- 您将看到为当前用户颁发和安装的证书列表。不要删除或更改您不知道的任何证书,仅删除与自签名本地主机相关的证书 ASP.NET 核心。