Задать вопрос
@Ualde

Как разрешить только один вход по одному сертификату?

Ситуация такая.
Есть сервер на Nginx. Есть самоподписанные сертификаты.
Есть такой блок конфигурации сервера:
listen       443;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl on;
ssl_verify_client on;
ssl_certificate        /etc/nginx/ssl/server-bundle.crt;
ssl_certificate_key    /etc/nginx/ssl/server.nopass.key;
ssl_client_certificate /etc/nginx/ssl/ca.crt;
ssl_crl                /etc/nginx/ssl/ca.crl;


И собственно возник вопрос, как ограничить доступ к серверу так, чтобы по 1му сертификату была 1 сессия. И возможно ли такое вообще?
  • Вопрос задан
  • 536 просмотров
Подписаться 1 Оценить 30 комментариев
Решения вопроса 1
savostin
@savostin
Еще один программист
Если крайне нужно не пускать всех, кто залогинился раньше с тем же сертификатом, дальше nginx, то предлагаю такой костыль.

Приложение при "входе", т.е. там, где ставит cookie скажем с именем SESSION_KEY, создает папку (можно на ram диске, чтоб быстрее) с именем $client_serial (если нет такой) и в ней файл с именем $session_key. И удаляет все другие файлы в этой папке.
В Nginx:

if ($ssl_client_verify = "VERIFIED") {
   if(-f /ramdisk/sessions/$ssl_client_serial/) {
      if(!-f /ramdisk/sessions/$ssl_client_serial/$cookie_SESSION_KEY/) {
         return 403;
      }
   }
}

Ну там проверить не пришла ли бяка в $cookie_SESSION_KEY и пр.
P.S. Только в качестве идеи.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
POS_troi
@POS_troi
СадоМазо Админ, флудер, троль.
Не совсем уверен в том чего вы желаете получить на выходе, но могу предположить и предложить ознакомится с данной ссылкой habrahabr.ru/post/213741
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы