我正在尝试使用ProtectKeysWithCertificate
方法保护静态密钥,但是当代码在Linux(RHEL7)上运行时,我遇到了一些问题。如果我使用ProtectKeysWithCertificate("thumbprint")
方法,它在/ etc / ssl / certs位置下找不到证书。因此,我尝试在Linux上搜索Local Machine \ Root,并使用ProtectKeysWithCertificate()
方法从证书存储区中自行加载X509证书。这样就加载了用于加密的证书,但是它无法解密任何内容(我收到“无法检索解密密钥”错误),并且每次服务重新启动时都会创建新的密钥文件。
我可以在Linux上保护静态数据密钥的唯一方法是使用PFX文件并提供我自己的密码,但这意味着我必须将密码以明文形式存储在某个地方,我真的不想这样做。
在此方面的任何帮助或如何使其在Linux上正常工作将不胜感激!
答案 0 :(得分:0)
我将发布答案,以防有人在Linux上寻找类似的东西。要使用私钥加载X509证书,我必须使用Bouncy Castle .NET Core库读取私钥并获取RSACryptoServiceProvider对象。拥有公共证书和私钥文件后,我使用.NET Core CopyWithPrivateKey(csp)方法来获取带有私钥的X509证书的副本,然后与ProtectKeysWithCertificate()方法兼容。