开发者工具 / 24

Apache/Nginx .htpasswd生成器

在客户端内存中生成Apache和Nginx的.htpasswd认证行及密码哈希。

Apache/Nginx .htpasswd生成器: TOEA会生成Apache和nginx用于HTTP基本认证的认证行。默认格式是Apache的$apr1$:密码会加上8个随机字符作为盐值,并经过一千轮迭代,这正是htpasswd -m生成的格式,也是两种服务器都能读取的格式。 完全在浏览器中本地运行,文件不会上传到服务器。

使用次数
在浏览器中
费用
免费·无需注册
可用性
可直接使用

将这一行接入服务器

将这一行保存到Web根目录之外的文件中,每行一个user:hash。对于nginx,请将auth_basic "Restricted";和auth_basic_user_file /etc/nginx/.htpasswd;添加到location或server区块。对于Apache,请使用AuthType Basic、AuthName、带文件完整路径的AuthUserFile以及Require valid-user。之后重新加载服务器;配置语法错误会导致每个请求都失败,而不仅仅是登录请求。

美元符号和普通HTTP

哈希中包含许多$字符,而Docker Compose文件、.env文件和某些代理标签会将$识别为变量的开头。在Compose中,请将每个$写成$$;否则哈希会被静默截短,任何密码都无法匹配。

基本身份验证会在每个请求中发送用户名和密码,虽然经过编码但未加密。请将其放在HTTPS后面,并将其作为预发布网站和管理路径的访问门禁,而不是面向客户的登录系统。

使用方法

  1. 输入用户名和密码。
  2. 除非有特殊原因,否则将算法保留为Apache MD5。
  3. 将生成的行复制到.htpasswd文件中。

隐私与限制

密码会在浏览器中进行哈希处理,绝不会发送到任何地方。不会记录任何内容,盐值来自浏览器自身的加密随机源,因此两个人为同一个密码生成认证行时,不会得到相同的哈希。

相关工具

常见问题

应该选择哪种算法?

选择Apache MD5($apr1$),也就是此工具的默认选项。它使用了盐值并经过多轮迭代,Apache和nginx都能接受。{SHA}选项是未加盐的SHA-1摘要,仅为需要该格式的旧版配置保留——Apache自带的htpasswd工具将其标记为不安全,因为相同的密码会生成相同的哈希,查找表可以破解这些哈希。

它和bcrypt一样安全吗?

不一样。bcrypt更强,Apache也支持它,但此处无法生成bcrypt——这需要一个Blowfish实现,而将其打包并确保其可信度需要大量代码。如果需要bcrypt,请在本地运行htpasswd -B -n username,然后粘贴结果。

依赖它之前,可以先检查认证行吗?

可以,而且值得这样做。将它保存到文件中,然后运行htpasswd -vb yourfile username password——Apache会告诉你它是否能够通过认证。这些认证行已通过htpasswd和openssl passwd -apr1的验证。

免费工具·使用在浏览器中次·无需账户