Как использовать SSL на Amazon Elastic Load Balancer с сервером Gunicorn EC2?
Я инженер-самоучка, поэтому я учусь всему этому на ходу. Долгое время я использовал базовую аутентификацию для своих пользователей.
Многие разработчики советуют против такого подхода, поскольку каждый запрос будет содержать имя пользователя и пароль в виде открытого текста. Любой, обладающий необходимыми навыками, может прослушать соединение между моим iOS-приложением и моим сервером Django/Gunicorn и получить свой пароль.
Я не хотел бы подвергать риску учетные данные моего пользователя, поэтому я хотел бы реализовать более безопасный способ аутентификации.
SSL кажется наиболее приемлемым вариантом. Мой сервер не обслуживает никакой статический контент или что-то сумасшедшее. Все, что делает сервер - это отправляет и получает ответы "json" из моего приложения для iOS. Вот моя текущая топология.
Приложение для iOS ------> Amazon Elastic Load Balancer -------> EC2 Экземпляры, выполняющие HTTP Gunicorn.
Gunicorn работает на порту 8000. У меня есть запись CNAME от GoDaddy для DNS Elastic Load Balancer DNS.
Поэтому вместо того, чтобы использовать длинный DNS для отправки запросов, я просто использую server.example.com.
Для взаимодействия с моими серверами я отправляю и получаю запросы на server.example.com:8000/
Эта установка работает и была твердой. Однако мне нужно иметь более безопасный способ. Я хотел бы установить SSL между моим iOS-приложением и Elastic Load Balancer. Как я могу сделать это?
Поскольку я отправляю только json-ответы на свое приложение, нужно ли мне покупать сертификат в ЦС или я могу создать свой собственный? (поскольку браузеры не будут взаимодействовать с моими серверами. Мои серверы предназначены только для отправки ответов json в мое приложение iOS).
1 ответ
Ваш ELB может прослушивать любой порт, который вы укажете, и предназначаться для любого порта на вашем сервере. Для обратной совместимости я бы предложил использовать другой порт (например, 8001) в качестве защищенного порта и обмениваться данными через безопасное соединение в новой версии вашего приложения. Вы добавляете прослушиватель в свой балансировщик нагрузки, загружаете сертификат для server.example.com (через веб-интерфейс) и вуаля, теперь вы можете использовать безопасное соединение между вашими пользователями и вашим ELB. Вы даже можете использовать тот же порт для запроса вашего внутреннего сервера из ELB.
Как разработчик, я также хотел бы предложить еще больше повысить безопасность, например, используя аутентификацию на основе сеанса вместо повторной отправки имени пользователя и пароля пользователя при каждом запросе.