.net core .Net Core在AWS中存储私钥

.net core .Net Core在AWS中存储私钥,.net-core,aws-sdk,pki,secure-coding,.net Core,Aws Sdk,Pki,Secure Coding,我正在实现一个安全系统(使用.Net Core 2.0),其中需要生成密钥对(公共和私有)并将公钥传输给接收方。目前,我确实生成了密钥对(使用.Net核心加密库),并将私钥保存在数据库中。我需要在一个AWS EC2实例中托管这个 我知道这是一种糟糕的做法(将私钥存储在数据库中),我需要在安全保险库(AWS?)中生成这些密钥,并将私钥保存在保险库中。当需要解密时,应用程序需要检索相应的私钥 我查阅了许多资料,但找不到符合我要求的明确答案。如果有人能为我提供一些关于如何实现这一目标的明确指示,那将是

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

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


我查阅了许多资料,但找不到符合我要求的明确答案。如果有人能为我提供一些关于如何实现这一目标的明确指示,那将是非常棒的

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

AWS密钥管理服务 如果您需要在AWS中生成密钥和存储密钥,则密钥管理服务(KMS)是最匹配的。是指向AWS KMS主页的链接,以及。请记住,选择此选项会将密钥生成的确切机制限制为AWS提供的任何现成的机制。此外,KMS的标准用例不包括在高容量中生成密钥,这对于您的应用程序来说是可能的

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

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 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提供了一个类似于参数存储的产品,名为。

您可以尝试

它是一个构建在hashicorp vault之上的开源工具。它简化了应用程序的秘密管理

这里有一个快速的例子