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?
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