我们有一个ASP.NET MVC5应用程序需要两个证书:
可在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进行部署,但如果这有助于解决主要问题,则可以使用其他部署技术。
目前,我们有一个丑陋的手动解决方法
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
IIS_IUSRS
证书私钥的Full control
权限(否则ASP.NET应用程序无法获取私钥)。 this post 显然,这极大地杀死了PaaS应该提供的抽象,因为任何时候实例扩展或被回收,我们必须做上述事情:( ...所以会对此有所帮助。
答案 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权限脚本