Skip to content

htpasswd Генератор — bcrypt, Apache MD5 (apr1) и Basic Auth

Генерируйте записи htpasswd с bcrypt, Apache MD5 (apr1), SHA-1 и другими алгоритмами. Получайте готовые конфиги для Apache, nginx и Docker. 100% в браузере — без загрузки данных.

Без отслеживания Работает в браузере Бесплатно
100% в вашем браузере — пароли никогда не покидают ваше устройство.
Сервер
Стоимость bcrypt: 12
Запись htpasswd
Заголовок Authorization
 
Проверить существующий хеш
Проверено на корректность хешей и соответствие стандартам Basic Auth — Инженерная команда Go Tools · Jun 4, 2026

Что такое файл htpasswd?

Файл .htpasswd хранит учётные данные, используемые HTTP Basic Authentication. Каждая строка представляет собой пару имя_пользователя:хеш, где хеш — это одностороннее преобразование пароля; открытый текст никогда не сохраняется. Веб-серверы читают этот файл, чтобы определить, кто может получить доступ к защищённому URL. В Apache файл .htaccess (или блок <Directory>) ссылается на файл .htpasswd и запрашивает у браузера имя пользователя и пароль перед отправкой страницы.

Формат хеша зависит от используемого алгоритма. Инструмент htpasswd Apache поддерживает несколько форматов: bcrypt (строки, начинающиеся с $2y$) — наиболее надёжный, рекомендуется для Apache, Docker Registry и Caddy; apr1 (Apache MD5, начинается с $apr1$) — наиболее переносимый и безопасный вариант по умолчанию для nginx; SHA-1 (начинается с {SHA}) — без соли, считается небезопасным; crypt (традиционный DES) — устаревший и усекает пароль до 8 символов; plain — хранит пароль в открытом виде, не должен использоваться в продакшене.

Этот генератор работает полностью в вашем браузере — никакое имя пользователя, пароль или хеш никогда не загружается. Если вам нужен надёжный пароль к записи, воспользуйтесь нашим Генератором случайных паролей. Чтобы вручную составить заголовок Authorization: Basic, учётные данные представляют собой просто base64(пользователь:пароль) — это можно сделать с помощью нашего Кодировщика Base64. А когда ваш эндпоинт защищён, проверьте его из командной строки с помощью нашего Конструктора команд cURL.

# Apache htpasswd CLI equivalents (apache2-utils / httpd-tools)

# bcrypt entry, printed to stdout (recommended; -B = bcrypt, -n = no file, -b = password on CLI)
htpasswd -Bbn admin 's3cret'
# → admin:$2y$10$N9qo8uLOickgx2ZMRZoMye...

# apr1 (Apache MD5) entry, portable for nginx — no apache2-utils needed
printf "admin:$(openssl passwd -apr1 's3cret')\n"
# → admin:$apr1$k3l4Hj9.$qN8...

# Append a user to an existing file from the shell
htpasswd -B /etc/apache2/.htpasswd alice

# Note: nginx delegates bcrypt to the system crypt(); on Alpine/musl or old
# glibc that fails — prefer apr1 for nginx to stay portable.

Ключевые возможности

Несколько алгоритмов хеширования

Генерируйте записи bcrypt ($2y$), apr1 / Apache MD5 ($apr1$) и SHA-1 ({SHA}) — плюс вариант plain (открытый текст) для тестирования. Каждый использует новую криптографическую соль там, где формат её поддерживает.

Генерация и проверка

Создавайте новые записи или проверяйте существующие. Вставьте хранимую строку user:hash и проверяемый пароль, чтобы мгновенно убедиться, совпадают ли они — полезно для отладки ошибки 401 в продакшене.

Выбор по серверу

Выберите Apache, nginx, Docker или Caddy, и нужный алгоритм будет подобран автоматически — bcrypt там, где он поддерживается, apr1 для совместимости с nginx — чтобы избежать скрытых сбоев crypt().

Готовые конфигурационные блоки

Получите шесть готовых к вставке конфигурационных сниппетов — Apache .htaccess, nginx auth_basic, Docker, Kubernetes ingress-nginx, Caddy и Traefik — уже привязанных к сгенерированной записи .htpasswd.

100% на стороне клиента

Всё хеширование происходит локально в вашем браузере с использованием Web Crypto и встроенной реализации bcrypt. Никакое имя пользователя, пароль или хеш никогда не отправляется на сервер, поэтому вы можете конфиденциально генерировать рабочие учётные данные.

Примеры

bcrypt-запись (рекомендуется)

admin:$2y$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy

Запись bcrypt с префиксом $2y$ и стоимостью 10. Это наиболее надёжный и переносимый формат — используйте его для Apache, Docker Registry, Caddy и Traefik.

apr1-запись (совместимый nginx)

admin:$apr1$kl3H9j2.$qN8vY7tLp2mZ0xW5cR4fK1

Apache MD5 (apr1) с 8-символьной солью после маркера $apr1$. Безопасный вариант по умолчанию для nginx, где проверка bcrypt зависит от ненадёжной системной функции crypt().

SHA-1-запись (устаревшая)

admin:{SHA}W6ph5Mm5Pz8GgiULbPgzG37mj9g=

Запись {SHA} представляет собой base64-кодировку SHA-1-дайджеста без соли. Apache и nginx принимают её, но она небезопасна из-за отсутствия соли — включена только для обратной совместимости.

Заголовок Authorization: Basic

Authorization: Basic YWRtaW46czNjcmV0

Клиентские учётные данные для того же пользователя: base64('admin:s3cret'). Отправьте этот заголовок через curl -H или Postman для аутентификации без создания файла .htpasswd.

Файл .htpasswd с несколькими пользователями

admin:$2y$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy
alice:$2y$10$3bQ8xY7tLp2mZ0xW5cR4fO9vK1jH6sD2nG8aQ5wE3rT7uI4oP1cm
bob:$apr1$mZ0xW5cR$4fK1jH6sD2nG8aQ5wE3rT2

Одна строка имя_пользователя:хеш на пользователя. Алгоритмы могут смешиваться в одном файле — здесь две bcrypt-записи и одна apr1-запись для трёх пользователей.

Как пользоваться

  1. 1

    Настройте сервер и алгоритм

    Выберите целевой сервер (Apache, nginx, Docker, Caddy). Нужный алгоритм выбирается автоматически — bcrypt для Apache/Docker/Caddy, apr1 для совместимого nginx — но вы можете переопределить его и настроить стоимость bcrypt.

  2. 2

    Сгенерируйте хеш

    Введите имя пользователя и пароль (или нажмите «Случайный пароль»), затем нажмите «Сгенерировать». Хеш вычисляется локально с новой случайной солью. Пересоздайте соль в любое время, чтобы получить новую запись.

  3. 3

    Скопируйте запись

    Скопируйте строку user:hash для вашего файла .htpasswd, скопируйте команду echo >> для добавления через командную строку или скопируйте заголовок Authorization: Basic для curl и Postman.

  4. 4

    Разверните конфигурацию

    Вставьте сгенерированный конфигурационный блок в ваш .htaccess Apache, блок server nginx, конфигурацию Docker, Kubernetes ingress, Caddy или Traefik, укажите путь к файлу .htpasswd и перезагрузите сервер.

Примеры использования

Защита директорий Apache
Закройте папку с помощью HTTP Basic Auth, используя файл .htaccess и директиву AuthUserFile. Вставьте bcrypt-запись и сгенерированный конфигурационный блок Apache, чтобы требовать авторизацию для любого пути.
nginx auth_basic
Защитите блок location или server с помощью auth_basic и auth_basic_user_file. Используйте формат apr1, чтобы проверка надёжно работала на Alpine, Debian и других базовых образах.
Docker Registry
Приватный Docker Registry принимает только htpasswd-записи в формате bcrypt. Сгенерируйте строку $2y$ с помощью htpasswd -Bbn, смонтируйте файл в контейнер реестра и выполните аутентификацию через docker login.
Kubernetes ingress-nginx
Создайте Secret типа basic-auth из вашего файла .htpasswd и укажите его с помощью аннотаций nginx.ingress.kubernetes.io/auth-type и auth-secret, чтобы ограничить доступ к маршруту ingress.
Caddy и Traefik
Директива basic_auth в Caddy и middleware basicauth в Traefik ожидают хеши bcrypt. Вставьте сгенерированную запись непосредственно в Caddyfile или в метки/динамическую конфигурацию Traefik.
Заголовок Authorization для curl и Postman
Пропустите файл для быстрых тестов: скопируйте заголовок Authorization: Basic, чтобы отправлять учётные данные напрямую. Используйте его как флаг curl -H или в запросе Postman для обращения к защищённому эндпоинту.

Технические подробности

bcrypt ($2y$)
Адаптивный засоленный хеш на основе шифра Blowfish с настраиваемым коэффициентом сложности. Каждая запись содержит случайную 16-байтную соль и значение стоимости, поэтому одинаковые пароли дают разные хеши. Примечание: bcrypt усекает пароль до 72 байт — символы сверх этого игнорируются.
apr1 (Apache MD5)
Итерационный засоленный вариант MD5 от Apache ($apr1$ + 8-символьная соль). Выполняет 1000 раундов MD5, что значительно слабее адаптивной стоимости bcrypt, однако реализован нативно в Apache и nginx, что делает его наиболее переносимым форматом на разных платформах и базовых образах.
SHA-1 и crypt
Записи SHA-1 ({SHA} + base64-дайджест) не используют соль, поэтому одинаковые пароли дают одинаковые хеши и уязвимы к атакам по радужным таблицам — включены только для обратной совместимости. Традиционный crypt (DES) ещё слабее и молча усекает пароли до 8 символов.
Соль и итерации
Засолка предотвращает атаки с заранее вычисленными хешами (радужными таблицами), делая каждый хеш уникальным. bcrypt использует 128-битную случайную соль с настраиваемой стоимостью; apr1 использует 8-символьную соль с 1000 фиксированными итерациями. Используйте «Пересоздать соль», чтобы получить другой допустимый хеш для того же пароля.
Обработка Base64 и UTF-8
Перед хешированием пароли кодируются как UTF-8-байты, поэтому символы вне ASCII обрабатываются единообразно. Заголовок Authorization: Basic представляет собой base64 от сырых UTF-8-байтов строки имя_пользователя:пароль, что соответствует тому, что серверы декодируют на принимающей стороне.
Примечания и оговорки
Сгенерированные хеши вычисляются локально и не проверяются на живом сервере. Скопированные записи и скачанные файлы .htpasswd оказываются в буфере обмена и на диске в виде открытого хеш-текста — обращайтесь с ними как с секретами, ограничивайте права на файл и очищайте буфер обмена после вставки в рабочую конфигурацию.

Лучшие практики

Отдавайте предпочтение bcrypt везде, где он поддерживается
Используйте bcrypt ($2y$) для Apache, Docker, Caddy и Traefik — он засолен, адаптивен и намного надёжнее apr1 или SHA-1. Оставляйте apr1 только для nginx, когда зависимость bcrypt от системного crypt() делает его ненадёжным.
Храните файл за пределами корня веб-сервера
Держите .htpasswd вне любой обслуживаемой директории, чтобы он никогда не мог быть скачан через HTTP. Установите chmod 640 и передайте владение пользователю веб-сервера, чтобы сервер мог читать файл, а другие учётные записи — нет.
Всегда используйте HTTPS
Basic Auth передаёт учётные данные в виде обратимого base64 с каждым запросом. Без TLS любой на пути трафика может прочитать пароль. Никогда не включайте Basic Auth поверх обычного HTTP — завершайте TLS перед защищённым эндпоинтом.
Используйте уникальные надёжные пароли
У каждой учётной записи должен быть собственный высокоэнтропийный пароль, нигде больше не используемый. Сгенерируйте его с помощью нашего Генератора случайных паролей и храните в менеджере паролей, не придумывая вручную.

Часто задаваемые вопросы

bcrypt или apr1 — что выбрать?
Используйте bcrypt для Apache, Docker Registry, Caddy и Traefik — это надёжный, засоленный, адаптивный хеш и современный стандарт. Используйте apr1 (Apache MD5) для nginx, поскольку nginx делегирует bcrypt системной функции crypt(), которая работает некорректно во многих сборках, тогда как apr1 реализован внутренне и работает везде. Если вы контролируете среду выполнения и знаете, что bcrypt поддерживается, bcrypt всегда предпочтительнее; apr1 — это вопрос переносимости, а не безопасности.
Поддерживает ли nginx bcrypt?
Только косвенно и ненадёжно. nginx не хеширует пароли самостоятельно — для записей $2y$ он делегирует проверку системной функции crypt() библиотеки C, поэтому поддержка полностью зависит от вашей libc. Alpine с musl и старые сборки glibc не включают схему blowfish (bcrypt), из-за чего аутентификация молча завершается ошибкой. Для переносимых конфигураций nginx используйте формат apr1, который nginx проверяет внутренне на каждой платформе.
Как исправить ошибку nginx `crypt_r() failed (22: Invalid argument)`?
Эта ошибка означает, что nginx попытался проверить хеш bcrypt ($2y$) на libc, не поддерживающей схему blowfish, — обычно это Alpine/musl или старый glibc. Решение — пересоздать запись в формате apr1 (Apache MD5) вместо bcrypt, который nginx проверяет внутренне на любой платформе. Альтернативно можно перейти на базовый образ с libc, включающей поддержку bcrypt, но apr1 — более простое и переносимое решение.
Где хранить файл .htpasswd и какие выставить права?
Храните файл .htpasswd за пределами корневой директории веб-сервера, чтобы он никогда не мог быть отдан как статический файл. Обычное расположение — /etc/apache2/.htpasswd или /etc/nginx/.htpasswd. Установите права 640 (chmod 640) и передайте владение пользователю, от имени которого работает веб-сервер (например, www-data или nginx), чтобы сервер мог читать файл, а другие учётные записи — нет.
Как настроить Basic Auth в .htaccess / nginx?
Для Apache инструмент генерирует блок .htaccess с AuthType Basic, AuthName, AuthUserFile, указывающим на ваш путь к .htpasswd, и Require valid-user. Для nginx генерируется блок location с auth_basic "Restricted"; и auth_basic_user_file /path/.htpasswd;. Скопируйте конфигурационный блок, соответствующий вашему серверу, скорректируйте путь к файлу и перезагрузите сервер — сниппеты готовы к вставке.
Загружаются ли мои пароли куда-либо?
Нет. Каждый хеш вычисляется полностью в вашем браузере с помощью JavaScript — никакое имя пользователя, пароль или сгенерированный хеш никогда не передаётся по сети. Вы можете убедиться в этом, открыв Инструменты разработчика (F12 → вкладка «Сеть») во время генерации: исходящих запросов не будет. Ничто не хранится и не записывается ни на каком сервере, поэтому здесь можно безопасно генерировать реальные рабочие учётные данные.
В чём разница между $2a$, $2b$ и $2y$ в bcrypt?
Это префиксы версий одного и того же алгоритма bcrypt, порождающие эквивалентные хеши; различия восходят к историческим исправлениям в обработке символов с высоким битом и длины строк в отдельных реализациях. Инструмент htpasswd Apache выдаёт $2y$. Современные библиотеки bcrypt считают $2a$, $2b$ и $2y$ взаимозаменяемыми при проверке, поэтому запись $2y$, сгенерированная здесь, будет корректно валидироваться в Apache, Caddy, Traefik и Docker Registry.
Какую стоимость bcrypt следует использовать?
Стоимость 12 — современный стандарт, обеспечивающий хороший баланс безопасности и скорости. Стоимость является рабочим коэффициентом: каждое увеличение вдвое увеличивает время вычисления и проверки хеша, что замедляет атаки перебором, но добавляет задержку при каждом входе. Стоимость 10 приемлема для эндпоинтов с низким трафиком или низким уровнем риска; для чего-либо важного рекомендуется 12–14. Не выставляйте значение настолько высоким, чтобы легитимная аутентификация становилась заметно медленной.
htpasswd против заголовка Authorization: Basic — в чём разница?
Они находятся на противоположных концах одного и того же обмена. Файл .htpasswd хранит серверный хеш — одностороннее преобразование, которое сервер использует для проверки учётных данных. Заголовок Authorization: Basic — это клиентские учётные данные запроса: буквальный base64 строки имя_пользователя:пароль, который браузер или curl отправляет с каждым запросом. Сервер декодирует base64 заголовка, затем сверяет пароль с сохранённым хешем. Одно — хранение, другое — передача.
У меня не установлен apache2-utils — как сгенерировать запись htpasswd?
Он вам не нужен — этот инструмент генерирует корректные записи bcrypt, apr1 и SHA-1 полностью в вашем браузере. Если предпочитаете командную строку, OpenSSL есть практически в каждой системе: выполните openssl passwd -apr1, чтобы получить хеш apr1, затем добавьте к нему префикс имя_пользователя: для формирования строки. На Debian/Ubuntu можно также установить бинарный файл htpasswd командой apt install apache2-utils, или httpd-tools на RHEL/CentOS.
Что означают флаги htpasswd -B, -Bbn, -bnB?
Каждая буква — самостоятельный флаг: -B выбирает bcrypt, -n выводит результат в stdout вместо записи в файл, -b принимает пароль как аргумент командной строки (вместо запроса в интерактивном режиме). Порядок не имеет значения, поэтому -Bbn и -bnB идентичны. -Bbn — наиболее распространённая комбинация для вывода bcrypt-записи в файл htpasswd Docker Registry через пайп.
Почему Docker Registry требует bcrypt?
Бэкенд аутентификации htpasswd Docker Registry принимает только записи в формате bcrypt; хеши apr1, SHA-1 и crypt отвергаются, и вход завершится ошибкой. Генерируйте запись с помощью htpasswd -Bbn user password (или используйте опцию bcrypt здесь), смонтируйте файл в контейнер реестра и укажите REGISTRY_AUTH_HTPASSWD_PATH. Всегда используйте TLS совместно с этим, поскольку иначе учётные данные Basic Auth читаемы при передаче.
Насколько безопасен Basic Auth?
Только поверх HTTPS. HTTP Basic Auth отправляет учётные данные как base64(имя_пользователя:пароль) с каждым запросом, а base64 — обратимое кодирование, а не шифрование, поэтому любой, кто может прочитать трафик, мгновенно восстановит пароль. Через TLS заголовок шифруется при передаче, и Basic Auth приемлем для простой защиты. Никогда не используйте его поверх обычного HTTP и предпочитайте более сильные схемы для важных приложений.

Похожие инструменты

Все инструменты →

Генератор и конструктор curl-команд

Веб и API

Создавайте curl-команды прямо в браузере: метод, заголовки, авторизация, тело — готовая команда мгновенно. Пресеты для Bearer, POST JSON, загрузки файлов. Бесплатно, приватно, без регистрации.

Конвертер систем счисления — bin, hex, dec, oct

Конвертеры

Конвертация между системами счисления — двоичной, hex, десятичной, восьмеричной и любой базой 2-36 мгновенно. Бесплатно, приватно — вся обработка в браузере.

Base64 декодер и кодировщик

Кодирование и форматирование

Декодирование и кодирование Base64 онлайн бесплатно. Преобразование в реальном времени с полной поддержкой UTF-8 и эмодзи. Полная приватность — работает в браузере. Без регистрации.

Конвертер регистра — UPPER, lower, camelCase и snake_case

Работа с текстом

Конвертируйте текст между UPPERCASE, lowercase, Title Case, Sentence case, camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE и ещё 6 форматами мгновенно. Бесплатно, только в браузере, без регистрации.

Конвертер цветов — HEX, RGB, HSL и OKLCH

Конвертеры

Конвертируйте HEX в RGB, HSL, OKLCH, OKLAB и CMYK прямо в браузере — копируйте любой формат в один клик. Бесплатно, без регистрации, ваши цвета никогда не покидают страницу.

Генератор crontab и конструктор cron-выражений

Дата и время

Создавайте, проверяйте и расшифровывайте cron-выражения в браузере. Предпросмотр запусков в локальном времени или UTC. POSIX 5 полей, пресеты, описание простым языком. Бесплатно и приватно.