我需要一个静态 IP 地址来处理来自已知来源(合作伙伴)的 SSL 流量。IP 需要静态的原因是合作伙伴需要这样做以保持 PCI 合规性。
我们的服务器位于 AWS 弹性负载均衡器 (ELB) 后面,它无法提供静态 IP 地址;这里有很多关于这个的话题。
我的想法是在 EC2 中创建一个实例,其唯一目的是成为一个拥有自己 IP 地址的反向代理服务器;接受 HTTPS 请求并将它们转发到负载均衡器。
有更好的解决方案吗?
我需要一个静态 IP 地址来处理来自已知来源(合作伙伴)的 SSL 流量。IP 需要静态的原因是合作伙伴需要这样做以保持 PCI 合规性。
我们的服务器位于 AWS 弹性负载均衡器 (ELB) 后面,它无法提供静态 IP 地址;这里有很多关于这个的话题。
我的想法是在 EC2 中创建一个实例,其唯一目的是成为一个拥有自己 IP 地址的反向代理服务器;接受 HTTPS 请求并将它们转发到负载均衡器。
有更好的解决方案吗?
我们的网站目前将发送到的请求重定向http://example.com
到https://example.com
——除此之外的所有内容都通过 SSL 提供。目前,重定向是通过 Apache 重写规则完成的。
然而,我们的网站正在处理金钱,因此安全性非常重要。以这种方式允许 HTTP 会带来比不打开或侦听端口 80 更大的安全风险吗?理想情况下,重定向对用户更友好一些。
(我知道 SSL 只是大量安全注意事项中的一个,所以请大胆假设我们至少在涵盖各种安全基础方面做得“非常好”。)
我开始了解 VPC,但没有看到好的内部 DNS 解决方案。例如,我们正在使用 VPC 中的其他服务器连接到的非 RDS 数据库服务器。我想按名称而不是 IP 连接。部分原因是我可以获得一个内部 10.xxx 地址,这可能更快。大多数情况下,它使配置更容易、更清晰、更灵活。
在过去(大约 2008 年),在 VPC 出现之前,我有一台运行 MaraDNS 的服务器,我们会在启动和更改实例时更新它,这是一个很大的痛苦,特别是因为服务器将获得自己的 DHCP 分配的内部地址当他们重新启动时,只是因为这是另一回事。我的一些运行不同系统的同事认为我是一个白痴,因为我做了所有这些努力——他们只是更新了 /etc/hosts 文件(这很好,直到出现中断并且他们所有的服务器都恢复了新的 IP)。
我应该查看 Route53(我们正在做所有公共 DNS 的地方)还是我遗漏了什么?
更新:2017 年——内部 DNS 现在是 Route 53 的一项功能。哇!
我的公司在 AWS 上有一个正在运行的业务 Web 服务,它使用通配符 SSL 证书(适用于 *.example.com)。多个合作伙伴有子域并需要 SSL(https: //partner1.example.com、https ://partner2.example.com等),我们为它们提供 HTML 或 JSON 响应。
我们的生产站点有一个面向 Web 的 ELB,它安装了我们的 SSL 证书。ELB 平衡并终止 SSL到我们 VPC 中的生产服务器实例集群。我们的网络应用知道如何根据子域名提供正确的合作伙伴 HTML/JSON。
我想尽可能简单地为我们的测试环境(例如 QA、Staging、Demo)复制它。但是测试环境和生产环境不能是同一个服务器实例;我需要知道,如果我搞砸了我们的测试环境,我不会终止生产。
理想情况下,处理生产流量的同一个 ELB 可以以某种方式将流量路由到我的测试服务器,也许如果它们使用已知的 IP 地址或 DNS 子域?我说这是不可能的吗?
我想我可以为每个测试环境设置一个带有 SSL 证书的 ELB,每个测试环境都“平衡”到一台服务器,但这似乎过于复杂,而且我猜也很昂贵。
所有实例、生产和测试都在我们的 VPC 中运行。但目前只有生产集群在 ELB 上设置了 SSL(终止 SSL)并将直接的 HTTP 请求传递给实例本身。
测试服务器接受 HTTP。我设置了公共弹性 IP 和 DNS 名称(staging.example.com、qa.example.com、demo.example.com)……但它们不受 SSL 保护。
测试服务器实例上几乎没有关键或客户数据,并且它们像任何面向 Web 的服务器一样受到保护和正确修补(我希望!!)。不过,我希望 SSL 不仅可以提高安全性,还可以让我的测试环境尽可能地与我的生产环境相匹配。
除了我们的登台服务器之外,其他环境都由具有 Apache 命名虚拟主机配置的单个实例(例如 demo 和 qa 都在同一台服务器上)支持。因此,对于测试,有很多站点,但只有少数服务器。
有没有一种方法可以让我的通配符 SSL 证书只安装在我的负载均衡器(或者可能是一个)上,或者其他一些允许我检测并将 HTTP 请求路由到正确的测试服务器的配置,基于 IP 或域名(甚至是 HTTP 标头)?
我知道这是一个复杂的问题。我非常了解 AWS、安全性和网络,但我仍在尝试找出 VPC 环境中的路由甚至内部 DNS,因此可能不知道我的选择。
我想在rc.local
(Ubuntu Natty) 中运行一个进程,但我无法确定它是否已运行。我加了
/bin/sleep 10
/usr/bin/killall PassengerWatchdog
/bin/echo "Killall returned with code $?"
该文件设置了执行位。脚本以#!/bin/sh
I would expect the echo to go开头/var/log/boot.log
这显然只是一个 hack,看看我是否可以解决问题。我怎么知道脚本是否执行了?