server 或 location 块内)生成 Web 服务器 HTTP Basic Auth 用的 .htpasswd 文件内容(用户名:哈希 每行一条),不用登录服务器跑 htpasswd 命令。
用户名 密码 或 用户名:密码。{SHA},仅兼容旧系统)。.htpasswd。密码只在浏览器本地做哈希,不上传。
| 算法 | 格式前缀 | 说明 |
|---|---|---|
| bcrypt | $2a$ |
目前最推荐。cost 每 +1 计算量翻倍,Web 认证一般选 10–12。需 Apache 2.4+ 或 nginx 1.0.3+ |
| apr1-MD5 | $apr1$ |
Apache 传统格式,兼容性最好。已按标准 1000 轮迭代实现,结果与 openssl passwd -apr1 一致。MD5 强度一般 |
| SHA1 | {SHA} |
无盐、单轮,容易被彩虹表破解,只在必须兼容老系统时用 |
原来的 "Crypt (Unix DES)" 选项已移除:它限制密码 8 位、强度很弱,现代 htpasswd 默认也不再用。
Nginx(放在 server 或 location 块内):
location /admin {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
}
Apache(.htaccess 或 <Directory> 块):
AuthType Basic
AuthName "Restricted"
AuthUserFile /var/www/.htpasswd
Require valid-user
改完配置记得 reload:nginx -s reload 或 apachectl graceful。
Q:.htpasswd 放哪里?
A:放在网站根目录之外(如 /etc/nginx/、/var/www/ 而不是 /var/www/html/),避免被人直接用 URL 下载。
Q:生成的哈希在服务器上验证不过? A:先确认服务器版本支持所选算法(bcrypt 需要较新版本)。apr1 兼容性最好,可先用 apr1 排除算法问题。密码里的空格是有效字符,本工具不会 trim,注意两边不要多打空格。
Q:bcrypt 结果每次都不一样? A:正常。bcrypt 每次用随机盐,同一密码每次哈希都不同,但都能通过验证。apr1 也是随机盐。
Q:能同时管理很多用户吗?
A:用批量模式,一次生成多行,追加到已有 .htpasswd 文件即可(同名用户以最后一行为准,建议先去重)。
Q:密码会上传吗? A:不会。哈希计算全部在浏览器本地完成。
相关:Bcrypt 加密校验 · MD5 加密 · SHA 家族 · 随机密码生成 · Base64 编解码。