我正在尝试让 Squid3 使用基本身份验证。
但是当我提供正确的用户名/密码时,身份验证失败!
我的 ACL 和 http_accesssquid.conf
是:
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
我正在创作/etc/squid3/users
:
htpasswd /etc/squid3/users myusername
当我在 Firefox 中配置代理时,它要求输入密码,我提供了正确的用户名/密码,但它失败了,并且再次提示。
问题是什么?
答案1
发现问题:
htpasswd
使用-m
(使用 Apache 修改版 MD5 加密密码)
但 Squid(Ubuntu 13.04 存储库上的 Squid 3.1.20)ncsa_auth
使用系统crypt
函数(unistd.h
或crypt.h
)来检查密码(如果有的话crypt()
- 我没有检查其他场景)
所以如果我们手动运行/usr/lib/squid3/ncsa_auth /etc/squid3/users
并检查用户/密码,我们将得到:
~$ /usr/lib/squid3/ncsa_auth /etc/squid3/users
user pass
Segmentation fault (core dumped)
解决方案:
创建密码文件-d
开关应使用:
htpasswd -d /etc/squid3/users myusername
(使用-d告诉htpasswd
使用系统的crypt
功能)
祝你好运