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

Можно ли выполнить аутентификацию сертификата клиента без использования HTTPS на веб-сервере?

(Обратите внимание: этот вопрос является одним из многих вопросов типа «почему бы вам просто не попробовать это?». Конечно, я буду, но, поскольку я не нашел очевидного ответа с помощью поиска в Google, я подумал, что мог бы облегчить задачу для кто-то, кому это может понадобиться позже, спросив на ServerFault)

Мое веб-приложение обслуживается через HTTPS за некоторыми балансировщиками нагрузки и в некоторых случаях позволяет пользователям аутентифицироваться с использованием клиентских сертификатов. Теперь меня спрашивают, хочу ли я разгрузить шифрование / дешифрование SSL на балансировщики нагрузки, чтобы я работал с обычным HTTP-сайтом (и, следовательно, с более простой отладкой и настройкой), в то время как балансировщик нагрузки выполнял бы HTTPS для пользователей. Бесплатные дополнительные циклы ЦП, безусловно, звучат хорошо, однако я не уверен, что смогу проверять сертификаты клиентов пользователей.

Можно ли использовать клиентские сертификаты без полноценного HTTPS-сайта?

Это зависит от того, как вы используете клиентские сертификаты для аутентификации и авторизации пользователей. Допускаете ли вы кого-либо с сертификатом, подписанным кем-то, кого вы знаете, или он должен быть подписан, а CN должен соответствовать чему-то конкретному или равняться пользователю в группе? Ваш текущий веб-сервер обрабатывает авторизацию или ваше приложение?

Типичный способ сделать это - разорвать соединение SSL на балансировщике нагрузки. Этот балансировщик нагрузки будет «полноценным сайтом HTTPS», и его нужно будет настроить для запроса сертификата клиента. Затем ваш loadbalancer проверит, был ли сертификат подписан доверенным центром сертификации. Затем loadbalancer добавит детали из сертификата SSL, такие как DN, в виде заголовков HTTP в простой HTTP-запрос к вашему приложению. Затем ваше приложение проверит эти HTTP-заголовки и авторизует пользователя на основе доверия между приложением и балансировщиком нагрузки. Я видел это со всеми основными балансировщиками нагрузки, такими как F5, ZXTM и даже HTTP-сервером Apache.