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

Требовать SSL-сертификаты клиентов от всех удаленных (не локальных) клиентов?

У меня есть сервер nginx, на который я хотел бы добавить аутентификацию SSL-сертификата клиента. Я использую систему (GitLab), которая должна вызывать к себе изнутри хуки фиксации и тому подобное. Есть ли способ настроить SSL с клиентским SSL для всех удаленный (не местные) клиенты?

Я хотел бы сделать так, чтобы GitLab мог вызывать сам себя без сертификата клиента, но все удаленные клиенты должны проходить аутентификацию с помощью клиентского SSL-сертификата.

Не зная ничего о GitLab, похоже, что это было бы довольно легко сделать с виртуальными хостами. Создайте два виртуальных хоста: один с аутентификацией клиента TLS для клиентского доступа, а второй - для локального доступа из GitLab. Например:

server {
  # Listen on your externally accessible address
  listen        10.0.0.1:443;
  ssl on;
  server_name example.com;

  ssl_certificate      /etc/nginx/certs/server.crt;
  ssl_certificate_key  /etc/nginx/certs/server.key;
  ssl_client_certificate /etc/nginx/certs/ca.crt;
  ssl_verify_client on;

  include shared.conf;
}

server {
  # Listen on localhost or some internal-only address
  listen        127.0.0.1:443;
  ssl on;
  server_name localhost;

  ssl_certificate      /etc/nginx/certs/server.crt;
  ssl_certificate_key  /etc/nginx/certs/server.key;
  ssl_client_certificate /etc/nginx/certs/ca.crt;
  ssl_verify_client optional;

  include shared.conf;
}

Поместите любую конфигурацию, которая должна использоваться обоими виртуальными хостами внутри shared.conf чтобы избежать дублирования.