最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
怎样使用 Apache 的 AuthType Digest 实现摘要式认证
时间:2026-07-14 08:59:51 编辑:袖梨 来源:一聚教程网
Apache的AuthType Digest虽比Basic更安全,但因HTTP/2下被浏览器忽略、需严格匹配AuthDigestDomain、realm名与密码文件完全一致等限制,现代环境已不推荐作为主力认证方案。
Apache 的 AuthType Digest 确实能比 Basic 认证避免明文传密码,但它在现代环境中已严重受限,不推荐作为主力认证方案。核心问题不是配置不会,而是浏览器(Chrome/Firefox/Safari)在 HTTP/2 下会直接忽略 WWW-Authenticate: Digest 响应头——这是 RFC 7540 的强制行为,不是 bug。若你坚持使用,必须满足几个硬性前提并严格规避常见陷阱。
确保运行在 HTTP/1.1 且 HTTPS 已启用
Digest 认证必须搭配 HTTPS,否则中间人可截获 nonce 并重放请求;同时它无法在 HTTP/2 下工作。验证方式:用 curl -v https://yoursite.com/protected 查看响应首行是否为 HTTP/1.1 401。如看到 HTTP/2 401,需临时在虚拟主机中加:
-
Protocols http/1.1(仅测试用,生产禁用) - 确认 SSL 证书有效、域名匹配,且 Apache 启用了
mod_ssl
AuthDigestDomain 必须与访问地址精确匹配
这是 401 循环、反复弹窗的最常见原因。浏览器只在请求 URL 路径前缀与 AuthDigestDomain 完全一致时才复用 nonce。例如:
- 用户访问
https://admin.example.com/settings/→AuthDigestDomain必须写https://admin.example.com/或/settings/(末尾斜杠不可少) - 不能写成
/、example.com或https://admin.example.com(缺末尾斜杠) - 多个路径要分别保护:
<Location "/admin/">块内配独立AuthDigestDomain "/admin/"
密码文件生成与 realm 名称必须一字不差
摘要认证依赖 username:realm:password 的 MD5 哈希值,任何字符差异都会导致失败:
- 生成命令必须带英文双引号:
htdigest -c /etc/apache2/.htdigest "Restricted Area" username - 配置中的
AuthName "Restricted Area"字符串必须与上一步引号内内容完全相同(空格、大小写、标点均不可变) - 生成的
.htdigest文件每行格式为:username:Restricted Area:9e00a05b2f94d34c7c9a0e1b2d3c4e5f
基础配置示例与关键安全加固
以下是最小可行配置(放在 <Directory> 或 <Location> 块内):
AuthType Digest-
AuthName "Restricted Area"(必须和 htdigest 命令中的一致) AuthDigestProvider fileAuthUserFile /etc/apache2/.htdigest-
AuthDigestDomain /private/(按实际路径调整,结尾斜杠必有) -
AuthDigestNonceLifetime 300(限制 nonce 有效期为 5 分钟) -
AuthDigestQop auth(禁用 auth-int,提升兼容性) Require valid-user
注意:mod_auth_digest 模块需已启用(Debian/Ubuntu 执行 a2enmod auth_digest),且 Apache 2.4+ 默认编译进核心,但可能被注释掉。
相关文章
- 如何注销悦通行账号 07-15
- 《神探杰克鼠》鼩鼱告急的蛛丝马迹成就解锁指南 07-15
- 蚂蚁新村今天正确答案1.13 07-15
- 蚂蚁新村2026年1月13日答案最新 07-15
- 小鸡答题今天的答案是什么2026年1月14日 07-15
- 2026年1月14日小鸡庄园答案 07-15