Squid3 ncsa autenticação básica sempre falha

3

Estou tentando fazer o Squid3 usar a autenticação básica.
Mas enquanto eu estou fornecendo autenticação correta nome de usuário / senha falhar!
minha ACL e http_access em squid.conf são:

acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1

acl SSL_ports port 443
acl SSL_ports port 80
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http
acl CONNECT method CONNECT

auth_param basic program /usr/lib/squid3/ncsa_auth /etc/squid3/users
auth_param basic realm Private
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off

acl ncsa_users proxy_auth REQUIRED

http_access allow ncsa_users
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny all

Estou criando /etc/squid3/users com:

htpasswd /etc/squid3/users myusername

Quando configuro o proxy no firefox e ele solicita a senha, forneço nome de usuário / senha corretos, mas ele falha e ele é solicitado novamente.
Qual é o problema?

    
por RYN 05.07.2013 / 14:09

1 resposta

7

Encontrou o problema:
htpasswd usa -m (senha criptografada com a versão modificada do Apache do MD5)
mas o Squid's (Squid 3.1.20 no repositório Ubuntu 13.04) ncsa_auth usa a função crypt do sistema ( unistd.h ou crypt.h ) para verificar a senha (se houver algum crypt() - não verifiquei outros cenários)
Portanto, se executarmos /usr/lib/squid3/ncsa_auth /etc/squid3/users e verificar manualmente o usuário / senha, obteremos:

~$ /usr/lib/squid3/ncsa_auth /etc/squid3/users
user pass
Segmentation fault (core dumped)

Solução:
para criar o arquivo de senha -d switch deve ser usado:

htpasswd -d /etc/squid3/users myusername

(usando -d diz htpasswd para usar a função crypt do sistema)

Boa sorte

    
por RYN 08.07.2013 / 00:47