将IdentityServer 4部署到Azure VM时找不到证书

时间:2017-06-20 04:08:33

标签: azure .net-core identityserver4

我在将IdentityServer 4(ASP.NET Core 1.1)部署到Azure VM(Windows Server 2012 R2)时遇到此问题。

crit: IdentityServer4.Hosting.IdentityServerMiddleware[0]
      Unhandled exception: Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException: The system cannot find the file specified
         at System.Security.Cryptography.CngKey.Open(String keyName, CngProvider provider, CngKeyOpenOptions openOptions)
         at System.Security.Cryptography.CngKey.Open(String keyName, CngProvider provider)
         at Internal.Cryptography.Pal.CertificatePal.GetPrivateKey[T](Func`2 createCsp, Func`2 createCng)
         at Internal.Cryptography.Pal.CertificatePal.GetRSAPrivateKey()

这将适用于本地开发计算机,我无法弄明白为什么。我在VM上的My(本地计算机)存储上安装了证书。

任何人都可以帮忙解决这个问题。感谢。

2 个答案:

答案 0 :(得分:8)

我在这里找到了解决方案:

http://www.daves-blog.net/post/2014/06/16/X509Certificate-The-System-cannot-find-the-file-specified.aspx

显然,我需要在应用程序池上启用加载用户配置文件。但是,错误现在改为:

crit: IdentityServer4.Hosting.IdentityServerMiddleware[0]
  Unhandled exception: Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException: Keyset does not exist
     at System.Security.Cryptography.CngKey.Open(String keyName, CngProvider provider, CngKeyOpenOptions openOptions)
     at System.Security.Cryptography.CngKey.Open(String keyName, CngProvider provider)
     at Internal.Cryptography.Pal.CertificatePal.GetPrivateKey[T](Func`2 createCsp, Func`2 createCng)
     at Internal.Cryptography.Pal.CertificatePal.GetRSAPrivateKey()

现在看看这个问题。

好的,所以问题是阅读证书的许可。我们所要做的只是转到证书并为IIS_IUSRS授予读取(仅限 )。

现在可行。

答案 1 :(得分:4)

如果有人想知道如何让IIS用户访问证书

  1. 创建/购买证书。确保它有私钥。
  2. 将证书导入"本地计算机"帐户。最好使用证书MMC。 请务必选中"允许导出私钥"
  3. 基于此,IIS 7.5应用程序池的标识使用以下之一。

    • IIS 7.5网站在ApplicationPoolIdentity下运行。打开MMC =>添加证书(本地计算机)管理单元=>证书(本地计算机)=>个人=>证书=>右键单击感兴趣的证书=>所有任务=>管理私钥=>添加\n并授予其IIS AppPool\AppPoolName。替换" AppPoolName "使用应用程序池的名称(有时为Full control
    • IIS 7.5网站在NETWORK SERVICE下运行。使用证书MMC,添加" NETWORK SERVICE"完全信任"本地计算机\个人"。
    • IIS 7.5网站正在" MyIISUser"本地计算机用户帐户。使用证书MMC,添加" MyIISUser" (新的本地计算机用户帐户)对“34”本地计算机\个人"中的证书上的完全信任。
  4. 上述内容摘自here