Перейти к содержимому
RunStack
Генератор htpasswd

Генератор htpasswd и bcrypt

Basic auth для nginx и Apache: строка .htpasswd, конфиг и проверка хеша. Строго client-side.

ПриватностьХеш считается в браузере. Пароль не отправляется на сервер Runstack, не попадает в URL и не сохраняется.
Алгоритм

Формат файла .htpasswd

Одна строка на пользователя: имя, двоеточие и хеш пароля. Префикс хеша сообщает серверу алгоритм: $2y$ — bcrypt, $apr1$ — MD5 по схеме Apache, {SHA} — SHA-1 в Base64. Файл должен читаться процессом веб-сервера, но лежать вне корня сайта, например /etc/nginx/.htpasswd с правами 640 и группой www-data.

Basic auth и HTTPS

Браузер отправляет логин и пароль в заголовке Authorization в Base64 при каждом запросе — это кодирование, а не шифрование. Включайте basic auth только поверх HTTPS и не используйте для этого пароль от других сервисов.

Частые вопросы

Какой алгоритм выбрать для .htpasswd?

bcrypt, если сервер его поддерживает: Apache 2.4.4+ и nginx на системах с libxcrypt (Debian 11+, Ubuntu 22.04+, RHEL 9) или musl (Alpine). apr1 работает везде, но это MD5 с 1000 итераций — подбирается намного быстрее. {SHA} использовать не стоит.

Какую стоимость bcrypt поставить?

Для basic auth хватает 10–12. Каждая единица удваивает время проверки, а nginx проверяет пароль при каждом запросе с заголовком Authorization, так что 14 заметно нагрузит сервер под трафиком.

Пароль действительно не отправляется на сервер?

Да. Хеш считается JavaScript-кодом страницы (bcryptjs и Web Crypto API), сетевых запросов с паролем нет, в URL и хранилище браузера он не попадает. Проверить можно во вкладке Network инструментов разработчика.

Как добавить пользователя в существующий файл?

Допишите строку в конец файла (echo 'user:hash' >> /etc/nginx/.htpasswd) или используйте htpasswd без -c — флаг -c создаёт файл заново и удаляет остальных пользователей. После изменения перезагружать nginx не нужно: файл читается при каждом запросе.