Squid3 ncsa 基本身份验证总是失败

Squid3 ncsa 基本身份验证总是失败

我正在尝试让 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.hcrypt.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功能)

祝你好运

相关内容