htpasswd 生成

生成 Apache/Nginx htpasswd 认证行。

什么是htpasswd 生成?

htpasswd 生成工具用于生成 Apache 或 Nginx 的 HTTP Basic 认证密码文件(通常命名为 .htpasswd)里的一行内容,格式是 用户名:哈希后的密码。 Apache 自带的 htpasswd 命令行工具支持多种哈希格式:明文 crypt(已过时、不安全)、SHA1(-s 参数,同样不推荐)、APR1-MD5(-m 参数,Apache 专用变种,格式形如 $apr1$salt$hash)、以及 bcrypt(-B 参数,格式形如 $2y$05$...),这个工具主要生成后两种较安全的格式。

为什么使用htpasswd 生成?

在配置 Nginx 或 Apache 给某个目录/接口加一层简单的账号密码保护(Basic Auth)时,需要一个 .htpasswd 文件,里面每行是一个用户。手工用命令行 htpasswd 工具生成需要先安装 apache2-utils,这个网页工具省去了本地安装步骤,直接粘贴生成内容。 需要注意的是,Nginx 的 ngx_http_auth_basic_module 支持 crypt、SHA、APR1-MD5 格式,较新版本也支持 bcrypt 格式;如果是老版本 Nginx,选择 bcrypt 生成的密码可能无法被正确校验,需要确认自己的 Nginx 版本。

使用示例

生成 APR1-MD5 格式(Apache 通用)

输入用户名 admin、密码 secret123,选择 APR1-MD5,生成一行如 admin:$apr1$a1b2c3d4$XyZ123AbC456DeF789,把这一整行追加到 .htpasswd 文件即可,Apache 默认能直接识别这种格式。

生成 bcrypt 格式(更安全,需较新版本支持)

同样输入 admin/secret123,选择 bcrypt,生成 admin:$2y$05$examplesalthashvalue...,比 APR1-MD5 抗暴力破解能力更强,但要求 Web 服务器版本支持该格式的校验。

追加多个用户

分别为 alice、bob 生成各自的一行,把多行按用户名各占一行拼接进同一个 .htpasswd 文件,Apache/Nginx 会按行匹配用户名进行认证,一个文件可以放多个用户。

使用提示

不同 Web 服务器对哈希格式的支持范围不同,生成前先确认自己的 Nginx/Apache 版本;.htpasswd 文件本身要放在 Web 根目录之外或配置禁止直接访问,避免被外部直接下载。

常见问题

bcrypt 和 {SHA} 该选哪种?
bcrypt 强度更高、抗暴力破解能力强,Apache 2.4+ / Nginx(配合第三方模块)均支持,推荐优先使用;{SHA} 即 SHA-1 加 Base64,兼容旧版 Apache,但安全性较低,仅建议兼容旧系统时使用。
生成的这一行怎么用?
将输出的整行(用户名:哈希)追加到服务器上的 .htpasswd 文件中即可,一行对应一个用户,多个用户逐行添加。
密码会上传服务器吗?
不会。哈希计算全部在浏览器本地完成(bcrypt 使用已加载的 bcryptjs 库,SHA-1 使用浏览器内置 Web Crypto API)。
生成后怎么用?
把生成的一整行内容粘贴进服务器上的 .htpasswd 文件(每个用户一行),再在 Nginx 的 server/location 块里配置 auth_basic 和 auth_basic_user_file 指向该文件路径,或在 Apache 配置里配置 AuthUserFile,重启或重载服务生效。
明文密码会被发送到服务器吗?
不会,哈希计算在浏览器本地完成,输入的密码不会被上传,但同样建议不要在任何在线工具中使用生产环境的真实密码。
SHA1 格式为什么不推荐?
SHA1 属于快速哈希,且通常不加盐或加盐较弱,计算速度快意味着更容易被暴力破解,目前只建议用于兼容非常老旧的系统,新部署应优先选 bcrypt 或至少 APR1-MD5。
为什么我的 Nginx 提示密码校验失败?
最常见原因是 Nginx 版本较老不支持 bcrypt 格式,或文件里多了空格/换行导致格式错乱,建议换成 APR1-MD5 格式或升级 Nginx 后重试。

相关工具

← 返回工具箱· 数据均在浏览器本地处理,不上传服务器。