自签名 IdentityServer4 签名凭据在生产中是否足够好?

问题描述

我们使用的是 IdentityServer4,我们的版本从文件系统中的 PFX 文件或 Windows 证书存储中加载签名密钥。使用证书有效。问题是 - 应该在生产中使用哪个证书颁发者?

是否推荐使用来自公共 CA 的证书?或者有一个自签名证书(根本没有 CA)就足够了,比如它可以用 IIS 管理器创建?

在我们的测试中,我们发现客户端仍然可以验证访问令牌中的签名,即使签名证书在客户端上没有有效的 CA 链。

在文档中,它说您还可以使用原始密钥材料而不是证书: http://docs.identityserver.io/en/latest/topics/crypto.html#token-signing-and-validation 在这种情况下,将没有任何 CA 链。

这让我假设,当客户端加载公共签名密钥(通过 HTTP(s) 端点)时,CA 链信息可能不会被传递。是对的吗?通过 HTTPs 的加载机制,您还拥有一个组合的安全机制。

所以我的结论是,对于签名证书,自签名证书与来自 VeriSign 的证书一样安全。这能得到证实吗?

解决方法

签名和验证令牌不涉及证书。只有私钥和公钥(RSA 或 ECDSA 密钥)。

但是,证书可用于将密钥“导入/传输”到 .NET 中。因此,我们不关心谁颁发了证书。

导入密钥时,一种方法是将持有公钥 + 私钥的证书捆绑在一起,并将其存储在 PKCE#12 文件(.pfx/.p12 扩展名)中。然后将该文件加载到 .NET 中。在 .NET 5 之前使用密钥有点困难。

更重要的是,您可以以安全的方式管理和部署私钥,并且它会随着时间的推移而持久化。

或者,您可以添加对密钥轮换的支持。