AWS中的.Net Core Store私钥

use*_*510 3 pki secure-coding aws-sdk .net-core

我正在实现一个安全系统(使用.Net Core 2.0),其中需要密钥对(公共和私有)生成并将公钥传输给收件人.目前我生成密钥对(使用.Net Core Crypto库)并将私钥保留在DB中.我需要在AWS EC2实例中托管它.

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

我浏览了许多AWS文档,但找不到符合我要求的明确答案.如果有人能够就如何实现这一点向我提供一些明确的指示,那就太好了.

The*_*mer 5

你指出在DB中自我存储秘密是一种不好的做法.根据您希望通过应用程序提供的功能范围,您可以使用以下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
Run Code Online (Sandbox Code Playgroud)

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

aws ssm get-parameter --name User_Provided_Public_Key --with-decryption
Run Code Online (Sandbox Code Playgroud)

如果您决定在AWS之外查看,只需注意一点,Microsoft Azure的产品类似于名为Azure Key Vault的参数存储.