ssl_verify_client para todos os caminhos, exceto alguns

1

Eu tenho um servidor em execução em um subdomínio configurado da seguinte forma:

server {
  listen 80 default_server;
  listen [::]:80 default_server;

  server_name x.example.com;

  return 301 https://$server_name$request_uri;
}

server {
  listen 443 ssl;
  listen [::]:443 ssl;

  <ssl configuration from https://mozilla.github.io/server-side-tls/ssl-config-generator/?server=nginx-1.6.2&openssl=1.0.1t&hsts=no&profile=modern>

  ssl_client_certificate /etc/ssl/certs/root-ca.crt;
  ssl_verify_client on;
  ssl_verify_depth 2;

  root /var/www/html;
  index index.html index.htm;

  location / {
    try_files $uri $uri/ =404;
  }
}

Atualmente, estou usando minha própria CA raiz para a verificação do cliente e como o certificado principal do servidor. Gostaria de fazer a transição para o uso do certificado Let's Encrypt, mas isso é um problema, pois o processo Vamos Criptografar Exigirá o acesso a x.example.com/.well-known e não terá um certificado de cliente correspondente.

Eu tentei adicionar um segundo bloco de servidor, como recomendado, aqui , mas não consegui para que funcione:

server {
  listen 443 ssl;
  listen [::]:443 ssl;

  server_name x.example.com;

  <same Mozilla configuration--I've got it stored as a snippet>

  ssl_verify_client off;

  root /var/www/html;
  index index.html index.htm;

  location /.well-known {
    try_files $uri $uri/ =404;
  }
}

Qual é a maneira apropriada de fazer isso?

    
por Scott Colby 27.12.2016 / 06:03

1 resposta

2

Vamos codificar não procura desafios no HTTPS, então você pode simplesmente configurar algo assim:

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    server_name x.example.com;

    location /.well-known {
        try_files $uri $uri/ =404;
    }

    location / {
        return 301 https://$server_name$request_uri;
    }
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;

    <ssl configuration from https://mozilla.github.io/server-side-tls/ssl-config-generator/?server=nginx-1.6.2&openssl=1.0.1t&hsts=no&profile=modern>

    ssl_client_certificate /etc/ssl/certs/root-ca.crt;
    ssl_verify_client on;
    ssl_verify_depth 2;

    root /var/www/html;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
}
    
por 27.12.2016 / 10:07