You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地IIS部署含Identity Server的ASP.NET Angular项目无法访问证书如何解决

问题原因

你本地调试或文件夹发布后直接运行时,程序使用你当前登录的Windows用户身份执行,可正常访问CurrentUser\My路径下的证书存储。但IIS中的网站默认使用对应应用程序池的内置服务账号运行,该账号既无法访问你的个人用户证书存储,也没有证书私钥的读取权限,因此抛出找不到证书的异常。

解决方案

方案1(推荐):将证书安装到本地计算机存储区

  • 重新创建自签名证书到本地计算机存储,执行以下PowerShell命令(需要管理员权限):
    New-SelfSignedCertificate -DnsName "my-subdomain.azurewebsites.net" -CertStoreLocation "cert:\LocalMachine\My"
  • 修改appsettings.json中的IdentityServer配置,调整存储位置为本地计算机:
"IdentityServer": {
  "Key": {
    "Type": "Store",
    "StoreName": "My",
    "StoreLocation": "LocalMachine",
    "Name": "CN=my-subdomain.azurewebsites.net"
  },
  "Clients": {
    "MarketPlace": {
      "Profile": "IdentityServerSPA"
    }
  }
}
  • 为IIS应用程序池账号分配证书私钥读取权限:
    1. 按下Win+R输入certlm.msc,打开本地计算机证书管理器
    2. 依次展开「个人」→「证书」,找到主题为my-subdomain.azurewebsites.net的证书
    3. 右键点击证书,选择「所有任务」→「管理私钥」
    4. 点击「添加」,在对象名称输入框中填入IIS AppPool\你的应用程序池名称(替换为你网站对应的实际应用池名称),点击「检查名称」确认无误后保存
    5. 在权限列表中为刚添加的账号勾选「读取」权限,确认保存
  • 重启IIS对应应用池和网站即可正常访问

方案2:修改应用程序池运行身份为当前用户

如果你不想改动证书存储位置,可以直接调整IIS应用池的运行账号:

  • 打开IIS管理器,找到对应网站的应用程序池,右键选择「高级设置」
  • 找到「进程模型」→「标识」,点击右侧的设置按钮
  • 选择「自定义账户」,点击「设置」,输入你当前登录的Windows账号的用户名和密码,确认保存
  • 重启应用程序池和网站即可

注意事项

  • 确认证书在有效期范围内,自签名证书默认有效期为1年
  • 确认配置中的证书主题名称和证书实际主题完全一致,无多余空格或拼写错误

内容的提问来源于stack exchange,提问作者Huseyin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 00:57:03