3

我正在实施一个安全系统(使用 .Net Core 2.0 ),其中需要生成密钥对(公共和私有)并将公共密钥传输给接收者。目前我确实生成了密钥对(使用 .Net Core Crypto 库)并将私钥保存在数据库中。我需要在 AWS EC2 实例中托管它。

我知道这是一种不好的做法(将私钥存储在数据库中),我需要在安全保险库(AWS?)中生成这些密钥并将私钥保存在保险库本身中。当需要解密时,应用程序需要获取对应的私钥。

我浏览了许多AWS 文档,但找不到满足我要求的明确答案。如果有人可以为我提供一些关于如何实现这一目标的明确说明,那就太好了。

4

2 回答 2

5

您正确地指出,在数据库中自行存储机密是一种不好的做法。根据您希望通过应用程序提供的功能范围,您可以使用以下 AWS 产品之一:

AWS 密钥管理服务

如果您需要在 AWS 中生成密钥以及存储密钥,则密钥管理服务 (KMS) 是最接近的匹配项。是 AWS KMS 主页的链接以及文档。请记住,选择此选项会将密钥生成的确切机制限制为 AWS 开箱即用的任何内容。此外,KMS 的标准用例不包括大量生成密钥,这可能适用于您的应用程序。

AWS 参数存储

如果您决定在应用程序中包含密钥生成逻辑,并将存储部分留给 AWS,那么Parameter Store就是您的选择。为了向参数存储添加新密钥,您可以执行以下操作:

aws ssm put-parameter --name Generated_Public_Key --value "Generated_Private_Key" --type SecureString

当您的应用程序的客户端通过提供公钥需要先前创建的私钥时,您可以使用以下内容:

aws ssm get-parameter --name User_Provided_Public_Key --with-decryption

如果您决定在 AWS 之外寻找,请注意,Microsoft Azure 有一个类似于 Parameter Store 的产品,称为Azure Key Vault

于 2018-02-06T16:57:09.293 回答
1

你可以试试t-vault

https://github.com/tmobile/t-vault 它是一个建立在 hashcorp vault 之上的开源工具。它简化了应用程序的秘密管理。

这是一个快速演示

于 2018-02-09T22:53:51.690 回答