我有一个使用 RSA 加密某些数据的 Web API。告诉我如何正确地将密钥传递给 API,使其可靠且安全?在当前实现中,密钥作为.pem文件传输,并且其路径在配置文件中指示。
在我看来,从实现的角度来看,这种方法是极其不正确的,我想知道最佳实践,如何解决此类问题?
我有一个使用 RSA 加密某些数据的 Web API。告诉我如何正确地将密钥传递给 API,使其可靠且安全?在当前实现中,密钥作为.pem文件传输,并且其路径在配置文件中指示。
在我看来,从实现的角度来看,这种方法是极其不正确的,我想知道最佳实践,如何解决此类问题?
一般来说,此类数据通常存储在ASP.NET Core Secret Store中,而不是存储在服务器上的单独文件中。
https://learn.microsoft.com/en-us/aspnet/core/security/app-secrets?view=aspnetcore-8.0&tabs=windows
如果您懒得阅读文档,则可以这样做:
打开 cmd 并指定 Web API 项目所在的文件夹,该文件夹应包含.csproj文件 。大致如下所示:
接下来,输入命令来初始化存储:
之后,您可以将您的秘密存储在此存储中:
初始化存储并添加机密后,配置您的IСconfiguration以使用机密存储:
现在,在控制器中或应用程序中需要密钥的任何其他位置,我们得到它:
让我们初始化必需的字段:
现在在类构造函数中:
如果密钥是用 Base64String 编码的字节数组(这对于加密密钥来说很常见),那么您可以稍微修改密钥获取:
我们还初始化键的字段,仅类型为 byte[]:
在类的构造函数中,收到后,我们将添加一个方法将值转换为字节数组:
现在这个键可以在类中“注入”它的任何地方使用