Генератор htpasswd

Введите имя пользователя и пароль или сгенерируйте его. Вы получите строку для файла .htpasswd, хешированную в вашем браузере, и несколько строк настройки Apache или Nginx, которые ставят пароль перед папкой.

Случайный пароль создаётся в вашем браузере; введите свой, чтобы заменить его. Хеш считается здесь и никуда не отправляется.
Хеш
Веб-сервер
Ваша строка .htpasswd Добавьте её отдельной строкой в /etc/nginx/.htpasswd. Одна строка на пользователя.

Введите или сгенерируйте пароль

Добавьте это в блок server вашего сайта

nginx.conf
location /admin/ {
    auth_basic "Restricted";
    auth_basic_user_file /etc/nginx/.htpasswd;
}

Чтобы запустить собственный Apache или Nginx, нужен сервер, которым вы управляете. Сейчас от 3,02 € в месяц, на выбор: 2 226 серверов.

Работает в вашем браузере: ничего из введённого не отправляется на сервер.

Как создаётся строка

Файл .htpasswd хранит по одному пользователю в строке: имя, двоеточие и хеш пароля. Веб-сервер хеширует то, что вводит посетитель, с той же солью и сравнивает результат, поэтому сам пароль нигде не хранится.

строка = пользователь:$apr1$соль$хеш
соль = 8 случайных символов из ./0-9A-Za-z
хеш = MD5 от пароля и соли, повторённый 1000 раз

APR1 — это схема Apache на основе MD5, которую записывает htpasswd -m и которую читают и Apache, и Nginx в любой системе. Страница считает её в вашем браузере со случайной солью, поэтому один и тот же пароль каждый раз даёт другую строку, и обе действительны. bcrypt (htpasswd -B) подбирать дольше, но без большой библиотеки в браузере его не посчитать: для него выполните на сервере команду, показанную выше.

Пример

Пользователь admin с паролем hunter2 и солью ./AZaz09 даёт admin:$apr1$./AZaz09$8b6dJ.Cy04zF2N.GdzCEo1 — ту же строку, что выводит openssl passwd -apr1 -salt ./AZaz09 hunter2.

Вопросы

Куда положить файл .htpasswd?

Вне папок, которые отдаёт ваш сайт, чтобы никто не мог его скачать: обычно это /etc/nginx/.htpasswd или /etc/apache2/.htpasswd. Сделайте его читаемым только для веб-сервера, например владелец root, группа www-data и режим 640.

Что выбрать: bcrypt или APR1?

bcrypt устойчивее к тому, кто украдёт файл, и Apache 2.4 его читает; Nginx читает его там, где его поддерживает системная библиотека crypt, как в большинстве современных дистрибутивов Linux. APR1 работает везде. С длинным случайным паролем подойдёт любой вариант, потому что угадывание останавливает пароль, а не хеш.

Нужен ли HTTPS для базовой аутентификации?

Да. Браузер отправляет имя пользователя и пароль с каждым запросом, лишь закодированными в base64, но не зашифрованными. Без HTTPS их может прочитать любой на пути трафика. Бесплатного сертификата Let's Encrypt достаточно.

Поддерживает ли Nginx файлы .htpasswd?

Да, через auth_basic и auth_basic_user_file в блоке server или location, как показано выше. Nginx не читает файлы .htaccess, поэтому настройка записывается в конфигурацию сайта, после чего выполняются nginx -t и перезагрузка.