在AWS Elastic Beanstalk部署中将证书自动部署到Windows证书存储区?

时间:2014-04-10 00:00:35

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

我们有一个ASP.NET MVC5应用程序需要两个证书:

  1. X509椭圆曲线证书及其对应的私钥(* .PFX)
  2. X509椭圆曲线证书(* .CER)
  3. 可在Windows Server 2012 R2的证书存储区中使用("本地计算机"帐户,"个人"存储)。为了澄清这些证书,MVC5应用程序的代码使用这些证书,而 没有使用SSL / TLS / HTTPS

    问题:如何配置AWS Elastic Beanstalk,以便在部署MVC5应用程序后,它已在证书存储区中拥有这些证书和私钥? AWS已自动配置EC2 Windows服务器通过Elastic Beanstalk配置,以便ASP.NET应用程序在IIS_IUSR用户权限下在IIS中运行,因此我们还需要授予IIS_IUSR访问证书私钥的权限。我不清楚IIS_IUSR是否真的遵循最小特权原则,或者我是否授予错误帐户权限 - 但它确实有效(见下文)。我们目前正在通过适用于Visual Studio 2013的AWS Toolkit进行部署,但如果这有助于解决主要问题,则可以使用其他部署技术。


    目前,我们有一个丑陋的手动解决方法

    • 远程访问每个实例,并在每个实例中执行以下操作
    • 上传证书文件(* cer和* pfx)
    • 手动运行批处理文件以将其加载到证书库中(还必须将它们添加到根存储区,因为它们是自签名证书)。批处理文件类似于
    certutil -f -addstore Root OurCert-SS.cer // just a CER version of the PFX below 
    certutil -f -addstore Root RemoteCert-SS.cer 
    certutil -f -p test -importPFX MY OurCert-SS.pfx 
    certutil -f -addstore MY RemoteCert-SS.cer
    
    • 手动打开MMC =>证书(本地机器)=>授予IIS_IUSRS证书私钥的Full control权限(否则ASP.NET应用程序无法获取私钥)。 this post
    • 中的详细信息

    显然,这极大地杀死了PaaS应该提供的抽象,因为任何时候实例扩展或被回收,我们必须做上述事情:( ...所以会对此有所帮助。

1 个答案:

答案 0 :(得分:1)

你有没有解决这个问题?

您可以执行此处所述的内容https://forums.aws.amazon.com/thread.jspa?messageID=591375,忽略网页绑定部分并添加class ElapsedTimeFormatter: NSNumberFormatter { lazy var dateFormatter: NSDateFormatter = { let dateFormatter = NSDateFormatter() dateFormatter.dateFormat = "HH:mm" return dateFormatter }() override func stringFromNumber(number: NSNumber) -> String? { let timeInterval = NSTimeInterval(number) return dateFormatter.stringFromDate(NSDate(timeIntervalSinceReferenceDate: timeInterval)) } } 的权限。

我以为我会更新我们最终做的事情。

我们设置了一个ebextension来从s3加载证书,然后分配所需的权限。我意识到我们没有.cer文件来处理,所以这可能不适合你。

let formatter = ElapsedTimeFormatter()
let s = formatter.stringFromNumber(6300)
// Output: s = "01:45"

感谢power link for power shell权限脚本