Вы абсолютно правы, что SSL-сертификат - это путь. И это не так уж сложно настроить, хотя это редко делается.
Важно помнить, что эта проблема состоит из двух компонентов. Во-первых, «как я могу заставить эту чертову штуку работать вообще», и, поскольку это система безопасности, во-вторых, «как мне настроить ее так, чтобы я не мог случайно сделать что-то, что мешало бы мне безопасность? "
Первое, что я хотел бы предложить, это написать отдельное приложение Rails для администратора и запустить его с другим веб-сервером на другом порту. (Если вы действительно хотите избежать ввода номера порта в URL для сайта администратора, используйте прокси-сервер перед обоими веб-серверами, который использует заголовок Host:
для перенаправления запросов на foo.com
на один сервер и admin.foo.com
к другому.) Это разделение поможет вам не случайно предоставить обычным пользователям доступ к функциям администратора и упростит настройку SSL.
Для сервера администратора установите его только для доступа SSL. Создайте новый сертификат подписи и разрешите подключение только сертификатам, подписанным сертификатом подписи. (Это зависит от веб-сервера; если вам действительно нужны подробности о том, как это сделать, возможно, вы захотите опубликовать новый вопрос, в котором будут указаны особенности используемого сервера и конфигурации.) Вы можете настроить страницу (на вкладке сайт без SSL или на странице, доступной для неаутентифицированных пользователей на сайте SSL), на которой веб-браузеры ваших администраторов автоматически генерируют и загружают сертификат, который вы можете подписать, который предоставит им доступ.
Сохраняйте копии всех сертификатов, которые вы подписываете, чтобы при необходимости аннулировать доступ вы могли поместить этот сертификат в список отзыва.