【问题标题】:C# Web Api Looking for PFX Cert even though it shouldn't beC# Web Api 正在寻找 PFX 证书,即使它不应该是
【发布时间】:2021-01-07 17:11:40
【问题描述】:

我正在开发一个 C# web api (.NET 5.0),直到最近才使用 pfx 文件来签署 JWT。我们切换到 HMAC,因为我们不想再使用 pfx 文件。我移动了 pfx 文件,因此系统找不到它们(因为它们不应该被引用)但是当我尝试运行我的应用程序时,我得到了这个异常:

   at Internal.Cryptography.Pal.CertificatePal.FromBlobOrFile(ReadOnlySpan`1 rawData, String fileName, SafePasswordHandle password, X509KeyStorageFlags keyStorageFlags)
   at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(String fileName, String password, X509KeyStorageFlags keyStorageFlags)
   at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(String fileName, String password)
   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Certificates.CertificateConfigLoader.LoadCertificate(CertificateConfig certInfo, String endpointName)
   at Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader.LoadDefaultCert()
   at Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader.Reload()
   at Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader.Load()
   at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl.<BindAsync>d__32.MoveNext()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult()
   at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl.<StartAsync>d__29`1.MoveNext()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
   at Microsoft.AspNetCore.Hosting.GenericWebHostService.<StartAsync>d__31.MoveNext()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult()
   at Microsoft.Extensions.Hosting.Internal.Host.<StartAsync>d__9.MoveNext()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult()
   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.<RunAsync>d__4.MoveNext()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.<RunAsync>d__4.MoveNext()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.Run(IHost host)
   at NtgVisionService.Program.Main(String[] args) in C:\repos_test\MyService\Program.cs:line 12

应用程序不应该寻找 pfx 文件(当我调试时,startup.cs 中的所有代码似乎都运行良好),但它在 CreateHostBuilder(args).Build().Run(); 的 Program.cs 中抛出了这个奇怪的异常。显然,我的同事没有同样的问题,所以我假设我的机器有点奇怪,也许是我的 Windows 10 设置搞砸了?也许是一个注册表项或类似的东西?在这一点上,欢迎对可能发生的事情提出任何想法(无论听起来多么奇怪)。

【问题讨论】:

    标签: c# asp.net-core startup hmac pfx


    【解决方案1】:

    原来这是因为我在 Windows 中设置了环境变量:

    ASPNETCORE_Kestrel__Certificates__Default__Password: MyPsWd123
    ASPNETCORE_Kestrel__Certificates__Default__Path: C:\keys\myproductcert.pfx
    

    清除这些并重新启动解决了问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-04
      • 2013-07-29
      • 1970-01-01
      • 1970-01-01
      • 2011-06-20
      • 2013-09-10
      • 2018-09-09
      • 2013-06-07
      相关资源
      最近更新 更多