SSLRequire - função de arquivo

1

Estou tendo problemas com o Apache 2.2 e com a pequena documentação que posso encontrar para a função arquivo do SSLRequire. Estou tentando verificar a propriedade de e-mail do certificado do cliente em uma solicitação usando SSLRequire .

A seguinte opção no arquivo httpd.conf funciona bem:

SSLRequire %{SSL_CLIENT_S_DN_Email} in { "[email protected]" }

mas, como eu posso ler na documentação, você pode usar uma lista de valores para o filtro.

Citando a documentação oficial :

file(filename)- This function takes one string argument and expands to the contents of the file. This is especially useful for matching this contents against a regular expression, etc.

Então, seguindo a documentação, coloquei o seguinte no arquivo httpd.conf:

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

A lista de e-mail do arquivo contém apenas uma linha com o conteúdo [email protected] (tentando simular a opção que funciona sem file ).

Mas quando tento acessar meu servidor HTTPS, vejo o seguinte nos registros:

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

Esta mensagem normalmente aparece quando o padrão não pode ser aplicado. Alguém pode me ajudar aqui, como posso usar essa funcionalidade?

    
por Jos3k4 28.04.2015 / 12:36

2 respostas

2

De acordo com este tópico antigo na lista de discussão apache-modssl, file() lê o conteúdo do arquivo em uma única sequência e, portanto, caracteres especiais (como novas linhas) no arquivo referenciado podem quebrar a sintaxe SSLRequire .

Considerando que isso foi postado pelo autor original de mod_ssl , eu acredito que essa teoria esteja correta.

Experimente os seguintes conteúdos em /etc/httpd/mail-list :

"[email protected]","[email protected]","[email protected]"

sem nova linha de acompanhamento

    
por 28.04.2015 / 14:41
0

file () lê o conteúdo do arquivo em uma única string (como M. Jessen observou). No entanto, isso não significa que você pode usar a sintaxe da expressão do apache dentro desse arquivo. Você precisará usar uma expressão regular para pesquisar dentro da string, já que o apache não parece conseguir dividir uma string com base em um delimitador.

Como solução alternativa, você pode usar AuthBasicFake e usar a variável em questão como nome de usuário de autenticação básico junto com um provedor de autenticação básica normal.

    
por 30.01.2018 / 18:51