Вы правы, клиентский сертификат TLS (SSL) на задней стороне шлюза API мог бы справиться с этим, но ELB в настоящее время не поддерживает сертификаты на стороне клиента при работе в режиме http .
В сообщениях на форуме поддержки AWS персонал AWS упоминает о рассмотрении этой возможности как о запросе функции, но:
К сожалению, в данный момент мы не можем предоставить ETA для этого.
https://forums.aws.amazon.com/thread.jspa?threadID=58561&start=0&tstart=0
Конечно, если бы ELB работал в режиме TCP вместо HTTP, то ваши веб-серверы могли бы обрабатывать все SSL, включая проверку сертификата на стороне клиента, но режим TCP не имеет тех же преимуществ, что и режим HTTP в ELB.
Мое решение для этого — HAProxy, работающий на отдельном экземпляре, выполняющий те же функции, что и ELB, включая терминацию SSL и проверку сертификата клиента. Экземпляр открыт для всего мира через порт 443, но только соединения SSL, в которых представлен сертификат клиента шлюза API, могут продолжать согласование SSL и выполнять фактический HTTP-запрос, который передается одному из серверных экземпляров.
HAProxy — это очень компактный код, и у меня есть системы, которые ежедневно обрабатывают сотни тысяч запросов с помощью SSL на экземплярах t2.micro. Я также успешно протестировал его на новых инстансах t2.nano, которые стоят ‹ 5 долларов в месяц за машину, что не составляет труда, и некоторые из них скоро будут запущены в производство на системах с относительно низким трафиком... просто следите за своим кредитным балансом, чтобы знать, когда вам нужно увеличить его.
Вы также можете разместить экземпляры HAProxy за ELB в режиме TCP с включенным прокси-протоколом, если вы хотите, чтобы внешний интерфейс с выходом в Интернет обеспечивался ELB, с несколькими экземплярами HAProxy между ELB. и серверы приложений. Это обычная конфигурация для меня, потому что HAProxy имеет возможность HTTP-маршрутизации, позволяющую выбирать внутреннюю группу серверов для каждого запроса, так что, например, example.com/api
может находиться на одном наборе серверов, а example.com/blog
может быть в другом наборе, все под одним и тем же доменным именем. (Это также надежный способ интеграции контента S3 без проблем с перекрестным происхождением, поскольку прокси-сервер может, например, перенаправлять запросы для определенных путей в корзину S3).
Конечно, HAProxy также может сам ограничивать количество запросов в секунду, а также количество разрешенных одновременных запросов и даже может ставить в очередь невыполненные запросы, выпуская их по одному на внутренние серверы в качестве других запросов. закончить и открыть свободный слот.
person
Michael - sqlbot
schedule
07.01.2016