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

时间:2018-09-06 14:51:00

标签: linux asp.net-core .net-core data-protection

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

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

在此方面的任何帮助或如何使其在Linux上正常工作将不胜感激!

1 个答案:

答案 0 :(得分:0)

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