1 votes

Comment faire fonctionner ssl_preread_alpn_protocols pour les requêtes acme-tls avec nginx 1.14 ?

J'essaie de configurer Nginx pour qu'il prenne en charge Let's Encrypt avec TLS-ALPN-01 en utilisant déshydraté . Dans leur documentation, ils indiquent ce qui suit à l'équilibrage de la charge de Nginx pour qu'il dirige la demande vers un serveur qui peut servir le défi TLS-ALPN-01. Voici la configuration de Nginx :

stream {
  server {
    map $ssl_preread_alpn_protocols $tls_port {
      ~\bacme-tls/1\b 10443;
      default 443;
    }

    server {
      listen 443;
      listen [::]:443;
      proxy_pass 10.13.37.42:$tls_port;
      ssl_preread on;
    }
  }
}

Quand j'ai mis ça dans mon /etc/nginx/nginx.conf il s'est plaint de la directive stream. J'ai trouvé une information qui disait d'ajouter cette ligne en haut de ma configuration :

load_module /usr/lib/nginx/modules/ngx_stream_module.so;

Cela a permis de se débarrasser de cette plainte, mais avec cette configuration :

load_module /usr/lib/nginx/modules/ngx_stream_module.so;
user www-data;
worker_processes 4;
pid /run/nginx.pid;

events {
        worker_connections 768;
        # multi_accept on;
}

stream {
  server {
    map $ssl_preread_alpn_protocols $tls_port {
      ~\bacme-tls/1\b 10443;
      default 443;
    }

    server {
      listen 443;
      listen [::]:443;
      proxy_pass 10.13.37.42:$tls_port;
      ssl_preread on;
    }
  }
}

Je reçois cette erreur

nginx: [emerg] "map" directive is not allowed here in /etc/nginx/nginx.conf:13
nginx: configuration file /etc/nginx/nginx.conf test failed

Alors, que dois-je faire pour obtenir correctement ce map qui travaillent ? Dois-je charger un autre module ?

1voto

Wayne Werner Points 629

J'ai trouvé la solution sur un autre site .

Si vous voulez que nginx équilibre la charge des requêtes ALPN vers votre répondeur ALPN, et que le trafic https normal soit réparti ailleurs, vous devez commencer à dire à vos serveurs https normaux d'écouter sur un autre port (c'est-à-dire pas :443).

En suivant le guide, dans toutes mes déclarations de serveur en /etc/nginx/sites-enabled J'ai changé :443 a :3443 . Puis j'ai mis à jour la configuration ajoutée :

stream {
    map $ssl_preread_alpn_protocols $tls_port {
      ~\bacme-tls/1\b 10443;
      default 3443;
    }

    server {
      listen 443;
      listen [::]:443;
      proxy_pass 127.0.0.1:$tls_port;
      ssl_preread on;
    }
}

Maintenant, tout fonctionne A-OK, et je peux générer/renouveler des certs sans temps d'arrêt !

0voto

Michael Hampton Points 232226

map doit être dans le stream et non dans le bloc server bloc.

Il semble aussi que vous ayez un server à l'intérieur d'un autre bloc server qui ne fonctionnera pas non plus.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X