Client cert & nginx

Задача:

Ограничить доступ средствами nginx к определенному разделу сайта только по выданному пользователю сертификату.

Расписывать генерацию и подписание клиентских сертификатов в OpenSSL нет смысла этого полно, можно глянуть здесь. Настройка nginx для ssl – тут

Возможный путь решения:

ssl_verify_client optional – pазрешает проверку клиентских сертификатов. Результат проверки доступен через переменную $ssl_client_verify. Параметр optional (доступен в nginx 0.8.7+) запрашивает клиентский сертификат, и если сертификат был предоставлен, проверяет его. Результат проверки клиентского сертификата: SUCCESS, FAILED и, если сертификат не был предоставлен – NONE.

Далее в конфиге nginx для виртуального хоста

# Защищаемая директория
location /private {
  # если клиентский сертификат не прошел проверку отдаем 403
  if ($ssl_client_verify != SUCCESS) { return 403; }
  ....
}

Links:



Комментарии