如何使用Amazon Elastic Beanstalk加密web.config节并部署到多台服务器

aga*_*ian 6 asp.net web-config amazon-web-services amazon-elastic-beanstalk

我正在使用AWS Elastic Beanstalk部署网站,部署到负载平衡的Web场中非常容易。

现在,我想对web.config中已部署站点的某些部分进行加密,无论是在部署之前还是之后。

关于如何通过RSA使用Aspnet_regiis.exe工具对部分进行加密的文章很多,但是,问题是在处理Web场时,因为您需要将私钥导出到其他服务器。

从本文http://msdn.microsoft.com/zh-cn/library/ff647398.aspx中可以看到:

Web服务器场方案如果要在Web服务器场中的多个服务器上部署相同的加密配置文件,则应使用RSAProtectedConfigurationProvider。该提供程序使您可以轻松地在一台服务器计算机上加密数据,然后导出解密数据所需的RSA私钥。然后,您可以将配置文件和导出的密钥部署到目标服务器,然后重新导入密钥。

但是,我的问题是,在负载平衡的环境中,服务器会由于自动缩放规则而上下波动,因此我需要一个过程来自动管理密钥,即在新部署的服务器上导入私钥用于加密Web.config。

是否有人这样做或可以提供一些见识?

aga*_*ian 5

按照@kukido的建议,您需要做的是创建一个.ebextension文件,其内容如下。

commands:
  encryptConfig:
    command: aspnet_regiis.exe -pe "connectionStrings" -app /
    cwd: %windir%\\Microsoft.NET\\Framework64\\v4.0.30319
Run Code Online (Sandbox Code Playgroud)


kuk*_*ido 1

您可以利用容器命令导入私钥吗?每次实例初始化时都会执行该命令。一旦您开始将密钥保存在持久存储(例如 S3)中,那么自动缩放就不应该成为问题。

在运行 Windows 的 EC2 实例上自定义软件提供了有关容器命令的更多详细信息。