web-dev-qa-db-fra.com

L'authentification de base de Squid3 ncsa échoue toujours

J'essaie de faire en sorte que Squid3 utilise l'authentification de base.
Mais alors que je fournis un nom d'utilisateur/mot de passe correct, l'authentification échoue!
Mon ACL et http_access dans squid.conf est:

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

Je crée /etc/squid3/users avec:

htpasswd /etc/squid3/users myusername

Lorsque je configure le proxy dans firefox et qu'il demande un mot de passe, je fournis un nom d'utilisateur/mot de passe correct, mais il échoue et une invite s'affiche à nouveau.
Quel est le problème?

3
RYN

Trouvé le problème:
htpasswd utilise -m (chiffrement du mot de passe avec la version modifiée du MD5 d'Apache)
mais Squid (Squid 3.1.20 sur le référentiel Ubuntu 13.04) ncsa_auth utilise la fonction crypt du système (unistd.h ou crypt.h) pour vérifier le mot de passe (le cas échéant). any crypt() - je n'ai pas vérifié d'autres scénarios)
Donc, si nous exécutons /usr/lib/squid3/ncsa_auth /etc/squid3/users et vérifions manuellement le nom d'utilisateur/mot de passe, nous obtiendrons:

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

Solution:
pour créer le fichier de mots de passe -d commutateur doit être utilisé:

htpasswd -d /etc/squid3/users myusername

(avec - d indique à htpasswd d'utiliser la fonction crypt du système)

Bonne chance

8
RYN