🚪htpasswd 在线生成器 - Nginx / Apache 密码文件与验证
想给网站后台、测试环境或下载目录加一道账号密码,nginx 的 auth_basic 和 Apache 的 Basic 认证都需要一个 .htpasswd 文件,但服务器上不一定装了 htpasswd 命令。在这里填入用户名和密码(可以一次添加多个用户,也可以一键生成随机强密码),选择算法后生成文件内容:bcrypt($2y$,最安全)、APR1-MD5($apr1$,兼容性最好)、SHA-512 crypt($6$)、SHA-256 crypt($5$,可自定义轮数)、{SHA}(旧格式)或明文。每种算法都标注了 nginx 与 Apache 的支持情况。粘贴已有的 .htpasswd 还能合并:同名用户被替换,其他用户保留。“验证密码”可以粘贴一行 user:hash 或单独的哈希,自动识别格式(含 $1$、{SSHA})并判断密码是否正确,排查“密码明明对却登录不了”。“服务器配置”页根据你填的提示文字、文件路径和受保护路径生成 nginx location 配置、.htaccess 和 Apache 虚拟主机配置。APR1 与 SHA-crypt 是按规范自行实现的,与 openssl passwd、htpasswd 的结果逐一核对过;bcrypt 在后台线程计算。密码不会离开你的浏览器。
免费 · 无需注册 · 浏览器本地处理最后更新:
正在加载工具...
如何使用htpasswd 生成器
- 1输入用户名和密码(可添加多个用户或生成随机密码),选择加密算法
- 2点击“生成”,复制或下载 .htpasswd 内容,上传到服务器
- 3在“服务器配置”页复制 nginx 或 Apache 配置;需要时到“验证密码”页核对
常见问题
- nginx 应该选哪种算法?
- nginx 自己实现了 APR1-MD5 和 {SHA},在所有平台都能用;bcrypt、SHA-512 crypt 则交给操作系统的 crypt() 函数。Debian 11+、Ubuntu 22.04+、RHEL 9、Alpine 等较新的 Linux 都支持 bcrypt,推荐优先用 bcrypt;如果不确定服务器环境,APR1-MD5 最稳妥。生成后可在服务器上用 nginx -t 检查配置,再实际登录试一次。
- 同一个密码每次生成的结果都不一样,正常吗?
- 正常。bcrypt、APR1、SHA-crypt 每次都会随机生成盐(salt),盐就写在哈希字符串里,服务器验证时会取出盐重新计算,所以不同的字符串都能对应同一个密码。只有不加盐的 {SHA} 和明文每次结果相同,这也是它们不安全的原因。
- .htpasswd 文件放在哪里?权限怎么设?
- 不要放在网站根目录下(否则可能被直接下载),常见位置是 /etc/nginx/.htpasswd 或 /etc/apache2/.htpasswd。文件需要能被 nginx 或 Apache 的运行用户(如 www-data、nginx)读取,一般设为 640 并把属组设为该用户。修改后 nginx 不需要重启即可生效,配置文件改动则需要 reload。
- Basic 认证安全吗?
- Basic 认证每次请求都会把用户名和密码以 Base64 编码发送,Base64 不是加密,所以必须配合 HTTPS 使用。它适合保护后台、测试站等小范围访问,不适合作为面向公众的登录系统。密码文件本身建议使用 bcrypt,避免文件泄露后被快速破解。