use*_*915 5 https kestrel-http-server asp.net-core
我正在使用 appsettings.json 在 .netcore3.1 应用程序中配置 Kestrel。这是 appsettings.json 中的相关部分
"Kestrel": {
"Certificates": {
"Default": {
"Subject": "certificate name",
"Store": "MY",
"Location": "LocalMachine",
"AllowInvalid": true
}
}
},
"AllowedHosts": "*",
"Urls": "http://*:5010;https://*:5011"
Run Code Online (Sandbox Code Playgroud)
如果我启动应用程序,它会出现在两个端口上。但是,通过 HTTPS 访问它会将此异常转储到我的应用程序的控制台
Microsoft.AspNetCore.Server.Kestrel[0] 处理 0HLT41KHBJ13T 时未处理的异常。System.ComponentModel.Win32Exception (0x8009030D): System.Net.SSPIWrapper.AcquireCredentialsHandle(SSPIInterface secModule, String package, CredentialUse intent, SCHANNEL_CRED scc) 无法识别提供给包的凭据
但是,如果我以管理权限启动应用程序,它就可以工作。因此,证书很好(它具有所需的私钥),但仍然无法正常工作。只是为了好玩,我将证书导入到 LocalUser 存储中,即使没有管理员权限,应用程序也绝对可以访问该存储,但没有任何乐趣。
如果没有以管理权限运行,有什么想法会导致此失败?您可以看到证书位于证书存储中,而不是文件系统中,这排除了文件权限问题。
请注意这一点;用户也需要权限才能读取证书,就像读取文件一样。通常,SYSTEM帐户默认具有读取权限,但开发人员不具有对本地计算机存储中的证书的读取权限,除非他们是具有该权限的特权组的成员。
您可以进入证书存储并添加权限。
打开商店,右键单击证书。选择“所有任务” | “管理私钥”,添加用户读取权限,就像在资源管理器中添加文件权限一样。您还可以创建一个开发人员组,并以这种方式授予和撤销对开发人员证书的权限,只需直接管理一次证书权限。
归档时间: |
|
查看次数: |
1564 次 |
最近记录: |