Requer certificados de cliente SSL de todos os clientes remotos (não locais)?

2

Eu tenho um servidor nginx ao qual gostaria de adicionar a autenticação de certificado SSL do cliente. Eu uso um sistema (GitLab) que precisa chamar a si mesmo internamente por commit hooks e afins. Existe uma maneira de configurar o SSL com o SSL do cliente para todos os clientes remotos (não locais)?

Eu gostaria de fazer com que o GitLab pudesse se chamar sem um certificado de cliente, mas todos os clientes remotos devem autenticar com um certificado SSL de cliente.

    
por Naftuli Kay 15.07.2013 / 23:54

1 resposta

1

Sem saber nada sobre o GitLab, parece que seria bastante fácil fazer isso com hosts virtuais. Crie dois hosts virtuais, um com autenticação de cliente TLS para acesso do cliente e um segundo para acesso local do GitLab. Por exemplo:

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;
}

Coloque qualquer configuração que deva ser compartilhada por ambos os hosts virtuais dentro de shared.conf para evitar duplicação.

    
por 16.07.2013 / 14:12

Tags