Question Comment diviser la configuration nginx sur plusieurs lignes?


Surtout lors de la configuration HPKP header (ou d’autres en-têtes longs en général), il serait utile de scinder une ligne dans une configuration nginx sur plusieurs lignes.

C'est le résultat souhaité:

pin-sha256="X3pGTSOuJeEVw989IJ/cEtXUEmy52zs1TZQrU06KUKg=";
pin-sha256="MHJYVThihUrJcxW6wcqyOISTXIsInsdj3xK8QrZbHec="; 
pin-sha256="isi41AizREkLvvft0IRW4u3XMFR2Yg7bvrF7padyCJg="; 
pin-sha256="I/bAACUzdYEFNw2ZKRaypOyYvvOtqBzg21g9a5WVClg="; 
pin-sha256="Y4/Gxyck5JLLnC/zWHtSHfNljuMbOJi6dRQuRJTgYdo="; 
pin-sha256="/oCVQg3nP3DroGpFdAbaiYzenycUftqrH3LAyaIal2g=";

Cependant, pour le navigateur, il ne devrait y avoir qu'une seule ligne:

pin-sha256="X3pGTSOuJeEVw989IJ/cEtXUEmy52zs1TZQrU06KUKg="; pin-sha256="MHJYVThihUrJcxW6wcqyOISTXIsInsdj3xK8QrZbHec="; pin-sha256="isi41AizREkLvvft0IRW4u3XMFR2Yg7bvrF7padyCJg="; pin-sha256="I/bAACUzdYEFNw2ZKRaypOyYvvOtqBzg21g9a5WVClg="; pin-sha256="Y4/Gxyck5JLLnC/zWHtSHfNljuMbOJi6dRQuRJTgYdo="; pin-sha256="/oCVQg3nP3DroGpFdAbaiYzenycUftqrH3LAyaIal2g=";

J'ai donc essayé certaines choses, mais je ne suis pas satisfait des résultats ...

Premier essai: il suffit de diviser

add_header Public-Key-Pins '
pin-sha256="X3pGTSOuJeEVw989IJ/cEtXUEmy52zs1TZQrU06KUKg=";
pin-sha256="MHJYVThihUrJcxW6wcqyOISTXIsInsdj3xK8QrZbHec=";
pin-sha256="isi41AizREkLvvft0IRW4u3XMFR2Yg7bvrF7padyCJg=";
pin-sha256="I/bAACUzdYEFNw2ZKRaypOyYvvOtqBzg21g9a5WVClg=";
pin-sha256="Y4/Gxyck5JLLnC/zWHtSHfNljuMbOJi6dRQuRJTgYdo=";
pin-sha256="/oCVQg3nP3DroGpFdAbaiYzenycUftqrH3LAyaIal2g=";
'

Cela fonctionne, mais avec curl Je peux voir que les navigateurs reçoivent l'en-tête avec tous les sauts de ligne ...

Deuxième essai: barre oblique inverse

En fait, dans l'article déjà lié, Scott Helme recommande ceci:

add_header Public-Key-Pins ' \
pin-sha256="X3pGTSOuJeEVw989IJ/cEtXUEmy52zs1TZQrU06KUKg="; \
pin-sha256="MHJYVThihUrJcxW6wcqyOISTXIsInsdj3xK8QrZbHec="; \
pin-sha256="isi41AizREkLvvft0IRW4u3XMFR2Yg7bvrF7padyCJg="; \
pin-sha256="I/bAACUzdYEFNw2ZKRaypOyYvvOtqBzg21g9a5WVClg="; \
pin-sha256="Y4/Gxyck5JLLnC/zWHtSHfNljuMbOJi6dRQuRJTgYdo="; \
pin-sha256="/oCVQg3nP3DroGpFdAbaiYzenycUftqrH3LAyaIal2g="; \
'

Cependant, dans mon cas, cela vient d’ajouter les barres obliques et de les renvoyer au navigateur, donc cela ne fonctionne pas.

Alors, comment puis-je faire cela?

Prime

Bien sûr, les commentaires pour chaque ligne seraient un ajout formidable:

pin-sha256="X3pGTSOuJeEVw989IJ/cEtXUEmy52zs1TZQrU06KUKg="; # current ECDSA
pin-sha256="MHJYVThihUrJcxW6wcqyOISTXIsInsdj3xK8QrZbHec="; # current RSA (nginx 1.11.0)
pin-sha256="isi41AizREkLvvft0IRW4u3XMFR2Yg7bvrF7padyCJg="; # backup ECDSA 1
pin-sha256="I/bAACUzdYEFNw2ZKRaypOyYvvOtqBzg21g9a5WVClg="; # backup ECDSA 2
pin-sha256="Y4/Gxyck5JLLnC/zWHtSHfNljuMbOJi6dRQuRJTgYdo="; # backup RSA 1
pin-sha256="/oCVQg3nP3DroGpFdAbaiYzenycUftqrH3LAyaIal2g="; # backup RSA 2

10
2018-05-31 17:28


origine


Pourrait utiliser le module Lua ou Perl? - Alexey Ten
Quoi? Comment puis je faire ça? Mais à côté de cela, je veux plutôt une solution pour cela directement dans le fichier de configuration nginx. Je veux dire que ce n'est pas une requête si extraordinaire de pouvoir utiliser plusieurs lignes pour une directive de configuration ... du moins, c'est ce que je pensais. - rugk
Cela pourrait encore être dans votre fichier de configuration. C'est juste une question si votre nginx est compilé avec l'un de ces modules activé. - Alexey Ten
Actuellement, il n'est pas compilé avec ces modules (à moins qu'ils ne soient dans le jeu de modules par défaut compilé par nginx), mais je pourrais certainement compiler une version avec un tel module ... Si cela aide à résoudre ce "problème". - rugk


Réponses:


Vous devrez peut-être envisager une imbrication de variable qui ressemblera à ceci:

set $PKP '';
set $PKP '${PKP}pin-sha256="X3pGTSOuJeEVw989IJ/cEtXUEmy52zs1TZQrU06KUKg=";'; # current ECDSA
set $PKP '${PKP}pin-sha256="MHJYVThihUrJcxW6wcqyOISTXIsInsdj3xK8QrZbHec=";'; # current RSA (nginx 1.11.0)
set $PKP '${PKP}pin-sha256="isi41AizREkLvvft0IRW4u3XMFR2Yg7bvrF7padyCJg=";';  # Backup ECDSA 1
set $PKP '${PKP}pin-sha256="I/bAACUzdYEFNw2ZKRaypOyYvvOtqBzg21g9a5WVClg=";';  # Backup ECDSA 2
set $PKP '${PKP}pin-sha256="Y4/Gxyck5JLLnC/zWHtSHfNljuMbOJi6dRQuRJTgYdo=";'; # backup RSA 1
set $PKP '${PKP}pin-sha256="/oCVQg3nP3DroGpFdAbaiYzenycUftqrH3LAyaIal2g=";';  # Backup RSA 2

add_header Public-Key-Pins $PKP;

4
2018-06-06 14:03



C'est vraiment une bonne idée et ça marche. C'est plus une solution de contournement, mais c'est certainement une façon de le faire. - rugk


la ; est le séparateur

afin que vous puissiez mettre les choses sur plusieurs lignes, il suffit de terminer la dernière ligne uniquement avec le ;


0
2017-12-07 00:50



C'est ce que j'ai essayé dans First try: Just split it si je comprends bien. Le problème était que le client avait reçu l'en-tête avec tous les sauts de ligne. - rugk
alors votre seul espoir est de tout mettre sur une seule ligne. laissez votre éditeur envelopper si cela vous dérange - MrE