Включение HTTPS в Rack, Puma и Sinatra?

У меня есть веб-приложение Ruby, созданное с помощью Sinatra, Rack и Puma. Я использую Sinatra для реализации контроллеров (шаблон MVC), каждый из которых обрабатывает свой маршрут, а каждый класс контроллера расширяет Sinatra::Base. Я бы хотел включить TLS, чтобы все подключения к серверу обслуживались по HTTPS.

Моя стойка config.ru выглядит так:

require 'sinatra'
require 'rack'

# Start my database ...

run Rack::URLMap.new(
    '/api/foo' => FooController.new,
    '/api/bar' => BarController.new
)

Стойка автоматически забирает Puma.

Как включить HTTPS? Для начала я счастлив использовать самозаверяющий сертификат, но как я могу настроить сервер с действующим сертификатом? Ничто из этого не кажется хорошо задокументированным, что меня очень расстраивает. Могу ли я упустить из виду вариант, который я могу просто установить на верхнем уровне в моем файле конфигурации Rack, что-то вроде set :ssl => true, может быть?

Подобные, но бесплодные сообщения SO: Как заставить Sinatra работать через HTTPS / SSL? Как включить SSL для автономного приложения Sinatra?


person Boon    schedule 14.04.2017    source источник
comment
Вы хотите включить ssl без веб-сервера Nginx или Apache?   -  person Vishnu J    schedule 23.04.2017


Ответы (1)


Поскольку вы упомянули, что используете Puma, вы можете найти это в их документации:

Нужна немного безопасности? Используйте сокеты SSL!

$ puma -b 'ssl://127.0.0.1:9292?key=path_to_key&cert=path_to_cert'

В производственных развертываниях выделенный балансировщик нагрузки (например, nginx, HAProxy, AWS ELB) обычно отвечает за завершение SSL и перенаправляет простой HTTP-трафик на серверы приложений по внутренней сети. Эти мощные веб-серверы обычно намного быстрее, стабильнее и лучше проверяются.

person Adam Byrtek    schedule 29.04.2017