У меня есть сервер 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
чтобы избежать дублирования.