1 votes

SSLRequire - fonction de fichier

J'ai des problèmes avec Apache 2.2 et la petite documentation que j'ai pu trouver pour la fonction fichier de SSLRequire. J'essaie de vérifier la propriété email du certificat client dans une requête en utilisant SSLRequire .

L'option suivante dans le fichier httpd.conf fonctionne bien :

SSLRequire %{SSL_CLIENT_S_DN_Email} in { "mail@example.com" }

mais comme je l'ai lu dans la documentation, vous pouvez utiliser une liste de valeurs pour le filtre.

Citation de l'article documentation officielle :

file (nom de fichier) - Cette fonction prend un argument de type chaîne de caractères et l'étend au contenu du fichier. Elle est particulièrement utile pour pour faire correspondre ce contenu à une expression régulière, etc.

Donc, en suivant la documentation, j'ai mis ce qui suit dans le fichier httpd.conf :

SSLRequire %{SSL_CLIENT_S_DN_Email} in { file("/etc/httpd/mail-list") }

Le fichier mail-list ne contient qu'une seule ligne dont le contenu est le suivant mail@example.com (en essayant de simuler l'option qui fonctionne sans file ).

Mais lorsque j'essaie d'accéder à mon serveur HTTPS, je vois ce qui suit dans les journaux :

Failed expression: %{SSL_CLIENT_S_DN_Email} in { file("/etc/httpd/mail-list") }

Ce message apparaît normalement lorsque le motif ne peut pas être appliqué. Quelqu'un peut-il m'aider à utiliser cette fonctionnalité ?

2voto

Mathias R. Jessen Points 24807

Selon le ce vieux fil de discussion sur la liste de diffusion apache-modssl, file() lit le contenu du fichier dans une seule chaîne de caractères, de sorte que les caractères spéciaux (tels que les nouvelles lignes) dans le fichier référencé peuvent interrompre la chaîne de caractères. SSLRequire syntaxe.

Étant donné que ce message a été posté par l'auteur original de l'article mod_ssl Je pense que cette théorie est tout à fait exacte.

Essayez avec le contenu suivant dans /etc/httpd/mail-list :

"mail@example.com","mail@example.org","mail2@example.org"

sans nouvelle ligne à la fin

0voto

Marcel Klehr Points 111

File() lit effectivement le contenu du fichier dans une seule chaîne (comme l'a noté M. Jessen). Cependant, cela ne signifie pas que vous pouvez utiliser la syntaxe d'expression d'Apache à l'intérieur de ce fichier. Vous devrez utiliser une expression régulière pour rechercher à l'intérieur de la chaîne, car apache ne semble pas être capable de diviser une chaîne en fonction d'un délimiteur.

En guise de solution de contournement, vous pouvez utiliser AuthBasicFake et utiliser la variable en question comme nom d'utilisateur pour l'authentification de base avec un fournisseur d'authentification de base normal.

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