Назад | Перейти на главную страницу

Amazon AWS: SSL в нашей тестовой среде

У моей компании есть работающий бизнес-веб-сервис на AWS, который использует SSL-сертификат с подстановочными знаками (работает для * .example.com). Несколько партнеров имеют субдомены и нуждаются в SSL (https://partner1.example.com, https://partner2.example.comи т. д.), и мы отправляем им ответы в формате HTML или JSON.

На нашем производственном сайте есть веб-интерфейс ELB, на котором установлен наш сертификат SSL. Балансы ELB и отключает SSL в кластер экземпляров производственных серверов в нашем VPC. Наше веб-приложение знает, как обслуживать правильный партнерский HTML / JSON на основе имени субдомена.

Я хочу как можно проще воспроизвести это для наших тестовых сред (например, QA, Staging, Demo). Но тестовая и производственная среды не могут быть одними и теми же экземплярами серверов; Мне нужно знать, что я не убью производство, если испорчу нашу тестовую среду.

В идеале тот же ELB, который обрабатывает производственный трафик, мог бы каким-то образом направлять трафик на мои тестовые серверы, возможно, если бы они использовали известный IP-адрес или поддомен DNS? Правильно ли я, что это невозможно?

Полагаю, я мог бы настроить ELB с сертификатом SSL для каждый тестовая среда, каждый «балансирующий» на один сервер, но это кажется слишком сложным и, как я полагаю, дорогим.

Все экземпляры, производственные и тестовые, работают в нашем VPC. Но в настоящее время только производственный кластер имеет SSL, настроенный на ELB (который завершает SSL) и передает прямые HTTP-запросы самим экземплярам.

Тестовые серверы принимают HTTP. У меня настроены общедоступные эластичные IP-адреса и DNS-имена (staging.example.com, qa.example.com, demo.example.com) ... но они не защищены SSL.

На экземплярах тестовых серверов почти нет критических данных или данных о клиентах, и они защищены и исправлены должным образом, как и любой веб-сервер (я надеюсь !!). Тем не менее, я хотел бы, чтобы SSL не только для дополнительной безопасности, но и чтобы моя тестовая среда максимально соответствовала моей производственной среде.

Во всех случаях, кроме нашего промежуточного сервера, другие среды поддерживаются одним экземпляром (например, demo и qa на одном сервере) с конфигурациями виртуальных хостов Apache. Итак, для теста много сайтов, но только несколько серверов.

Есть ли способ, которым я могу установить свой SSL-сертификат с подстановочными знаками только на моем балансировщике нагрузки (или, возможно, еще на одном), или в какой-либо другой конфигурации, которая позволяет мне обнаруживать и направлять HTTP-запрос на правильный тестовый сервер на основе IP или доменное имя (или даже HTTP-заголовок)?

Я знаю, что это сложный вопрос. Я хорошо разбираюсь в AWS, безопасности и сетях, но все еще пытаюсь выяснить маршрутизацию и даже внутренний DNS в среде VPC, поэтому могу не знать о своих возможностях.

Честно? Я бы сказал, вы слишком много думаете об этом. Просто используйте несколько ELB и поместите на них сертификаты * .example.com. На самом деле это не слишком дорого. Во всем вашем стеке ELB, вероятно, будет одним из самых дешевых компонентов. Это также позволяет вам раскручивать стеки из одного и того же Шаблон CloudFormation или система обеспечения. Вы можете использовать сертификат на любом количестве ELB.

Мы столкнулись с проблемой, очень похожей на вашу, и решили сделать именно то, что я описал выше. В итоге мы сэкономили деньги, потому что ELB просто не является значимым предсказателем наших ежемесячных затрат, и для взлома решения потребовалось бы гораздо больше времени в заработной плате, даже если бы это было возможно. С ELB вы платите только за то, что используете по трафику, поэтому QA и демонстрационные среды просто не будут стоить даже близко к стоимости производственной нагрузки. В примере, описанном в этой ссылке, 100 ГБ трафика в месяц стоит 18 долларов. Это как три кофе Starbucks.

Еще одно преимущество: это также намного проще отлаживать. Не нужно беспокоиться о странных правилах торговли людьми или тому подобном.