首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenIddict误差与AddSigningCertificate

OpenIddict误差与AddSigningCertificate
EN

Stack Overflow用户
提问于 2017-04-19 05:10:21
回答 2查看 1.9K关注 0票数 1

我正在尝试登录证书(OpenIddict),但在尝试使用拇指指纹时出现了错误:

代码语言:javascript
复制
options.AddSigningCertificate(Configuration["Certificate"]/* db b9 12 .... 22 */);

而错误是:

应用程序启动异常: System.Security.Cryptography.CryptographicException: OpenCSP失败,错误代码为2148073494。

在这一行:

代码语言:javascript
复制
app.UseOpenIddict();

如果我尝试使用X509Certificate2,我也会得到错误:

代码语言:javascript
复制
var cert = new X509Certificate2(Configuration["Certificate"]/*path to file.cer*/);
options.AddSigningCertificate(cert);

而错误是:

System.InvalidOperationException:证书不包含所需的私钥。

同一行app.UseOpenIddict();

我使用的证书与https协议使用的证书相同。这样可以吗?我的活动令牌随机消失(当我试图刷新令牌时得到invalid_token )。我发现如果使用AddEphemeralSigningKey,就会发生这种情况,因为当删除连接(因为IIS空闲超时)时,所有令牌都丢失了。正因为如此,我正在尝试使用AddSigningCertificate

还有别的办法吗?有人能告诉我,证书有什么问题吗?谢谢。

我使用的是ASP.NET核心1.1.1。

我为IIS用户添加了.cer文件的读取权限。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-20 08:45:28

我用SelfCert (https://s3.amazonaws.com/pluralsight-free/keith-brown/samples/SelfCert.zip)创建的新证书解决了我的问题。

然后,我将证书添加到项目源代码中,并调用AddSigningCertificate:

代码语言:javascript
复制
            if (this.env.IsDevelopment())
                options.AddEphemeralSigningKey();      
            else
                options.AddSigningCertificate(new FileStream(Directory.GetCurrentDirectory() + "/Resources/cert.pfx", FileMode.Open), "pass");

我还必须为IIS用户添加完整的权限。阅读和执行权利是不够的。

就是这样。它起作用了。

票数 3
EN

Stack Overflow用户

发布于 2018-11-21 19:31:14

在机器个人商店使用证书。

您必须对站点的应用程序池进行权限处理。

去找机务经理。

在个人文件夹中,右键单击证书并选择All Task>Manage private keys (不确定英文选项,我的os是西班牙语)

在安全窗口中添加应用程序池用户,您可以在站点或应用程序的基本配置中看到它。

代码语言:javascript
复制
IIS APPPOOL\here_your_app_pool_name

则可以在启动时使用

代码语言:javascript
复制
 options.AddSigningCertificate("here cert thumbprint, look for it in cert info");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43486879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档