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

时间:2013-08-21 23:28:25

标签: asp.net amazon-web-services web-config elastic-beanstalk

我正在使用AWS Elastic Beanstalk部署网站,并且可以非常轻松地部署到负载均衡的Web场中。

现在,我想要为我已部署的站点加载web.config中的某些部分,无论是在部署之前还是之后。

有很多文章介绍了如何使用RSA来加密某个部分的Aspnet_regiis.exe工具,但问题是当您处理Web服务器场时,因为您需要将私钥导出到其他服务器。

从这篇文章http://msdn.microsoft.com/en-us/library/ff647398.aspx中可以看到:

  

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

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

有没有人这样做或能提供一些见解?

2 个答案:

答案 0 :(得分:4)

根据@kukido的建议,您需要创建一个包含以下内容的.ebextension文件。

commands:
  encryptConfig:
    command: aspnet_regiis.exe -pe "connectionStrings" -app /
    cwd: %windir%\\Microsoft.NET\\Framework64\\v4.0.30319

答案 1 :(得分:1)

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

Customizing the Software on EC2 Instances Running Windows有关于容器命令的更多详细信息。