使用 ASP .NET Core 2 和 Linux 上的证书保护数据保护密钥文件



我正在尝试使用ProtectKeysWithCertificate方法保护静态密钥,但是当代码在Linux(RHEL7(上运行时,我遇到了一些问题。如果我使用ProtectKeysWithCertificate("thumbprint")方法,它在/etc/ssl/certs 位置下找不到证书。所以我尝试在 Linux 上搜索本地计算机\根,并使用ProtectKeysWithCertificate()方法从证书存储中自行加载 X509 证书。这会加载证书进行加密,但它无法解密任何内容(我收到"无法检索解密密钥"错误(,并且每次服务重新启动时都会创建新的密钥文件。

我可以在 Linux 上保护静态数据密钥的唯一方法是使用 PFX 文件并提供我自己的密码,但这意味着我必须将密码以明文形式存储在某个地方,我真的不想这样做。

任何关于此的帮助或如何使其在 Linux 上运行将不胜感激!

我会发布我的答案,以防有人在 Linux 上寻找类似的东西。为了加载带有私钥的 X509 证书,我必须使用 Bouncy Castle .NET Core 库来读取私钥并获取 RSACryptoServiceProvider 对象。一旦我有了公共证书和私钥文件,我就使用.NET Core CopyWithPrivateKey(csp(方法获取带有私钥的X509证书的副本,然后与ProtectKeysWithCertificate((方法兼容。

最新更新