Генератор Basic Auth

Генерация строки htpasswd (bcrypt, apr1) и готовых конфигураций Basic Auth для nginx, Traefik и Apache.

Автор:

Как защитить страницу через Basic Auth

  1. Введите логин и пароль или нажмите «Сгенерировать».
  2. Выберите алгоритм. Если не уверены — оставьте bcrypt.
  3. Добавьте строку из первого блока в файл .htpasswd, а директивы nginx или Apache вставьте в конфигурацию сервера. Для Traefik возьмите готовые labels.

Что такое Basic Auth

Basic Auth — простейшая HTTP-аутентификация. Сервер отвечает кодом 401, браузер показывает окно с логином и паролем и затем отправляет их в каждом запросе в заголовке Authorization: Basic и base64 от строки «логин:пароль». Пользователи хранятся в файле .htpasswd — по строке «логин:хеш» на каждого. Пароль в файле лежит не в открытом виде, а в виде хеша.

bcrypt или apr1

bcrypt — современный медленный хеш с солью, префикс $2y$. Его понимают Apache 2.4 и Traefik. nginx проверяет пароли системной функцией crypt(): на современных дистрибутивах bcrypt работает, на старых может не поддерживаться.

apr1 — формат MD5-crypt, который создаёт htpasswd -m, префикс $apr1$. Он слабее bcrypt, зато его поддерживают практически все серверы, включая старые сборки nginx. Если защита не срабатывает с bcrypt, выберите apr1.

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

Почему в Traefik хеш с двойными $$?

docker-compose считает знак $ началом переменной и подставляет вместо неё значение. Чтобы в метке остался обычный $, его нужно удвоить: $$. Генератор делает это сам, поэтому блок для Traefik можно вставлять в docker-compose.yml как есть.

Как добавить второго пользователя?

В файле .htpasswd каждый пользователь занимает отдельную строку: сгенерируйте вторую пару и допишите строку в файл. В метке Traefik пользователей перечисляют в одном значении через запятую: users=admin:хеш1,editor:хеш2.

Какой cost выбрать для bcrypt?

Обычно хватает 10. Cost — это степень двойки: каждая следующая единица удваивает время вычисления. Сервер проверяет пароль при каждом запросе к защищённому адресу, включая картинки и скрипты, поэтому слишком большое значение замедлит страницу.

Другие утилиты