我应该使用什么证书存储来存储 signing/encrypting JWT 令牌的证书?

What certificate store should I use to store a certificate for signing/encrypting JWT tokens?

我正在我的 Web 应用程序中添加对 JWT 令牌的支持,并且我有一个 X509 证书,它需要它来签署这些令牌。

我拒绝使用我们用于 HTTP 的相同证书的想法(参见 Can I use the Private Key Certificate of Web App to sign JWT?)。

我认为自签名证书应该可以解决问题,事实上我看不到信任网络在这种情况下有任何优势(这并不意味着没有任何优势,我只是看不到想想任何一个)。

Web 应用程序 运行 在 Web 服务器场上。我目前的计划是生成一个自签名证书并将 X509 证书放入每台机器上 Windows 中的证书存储中。我们的 IT 部门正在检查,但他们认为他们可以使用组策略将其推广到农场中的所有 Web 服务器。所以这似乎是一个可行的计划。

windows 中的证书存储区让我很困惑。我认为有两种选择:

1) 将它放在"My" IIS 应用程序池运行 下的用户的存储中。有很多应用程序池,因此证书可能会出现在许多商店中。

2) 将其放在 LocalMachine 存储下,然后为 IIS 用户授予对特定证书的显式访问权限。

3) 其他想不起来了

这些类型的证书是否有 "correct" 位置,如果有,它在哪里?

通常用于签署证书的 CertificateStore 是 My 商店。我通常将它们放在 LocalMachine 位置,但将它们放在应用程序池身份本身的证书存储中可能更安全。

然后我将仅授予应用程序池对该证书的只读访问权限(右键单击证书,然后 'All Tasks' > 'Manage Private Keys',然后添加您的应用程序池身份并提供 'Read' 权限。