htpasswd Генератор — bcrypt, Apache MD5 (apr1) и Basic Auth
Генерируйте записи htpasswd с bcrypt, Apache MD5 (apr1), SHA-1 и другими алгоритмами. Получайте готовые конфиги для Apache, nginx и Docker. 100% в браузере — без загрузки данных.
Проверить существующий хеш
Что такое файл 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
Настройте сервер и алгоритм
Выберите целевой сервер (Apache, nginx, Docker, Caddy). Нужный алгоритм выбирается автоматически — bcrypt для Apache/Docker/Caddy, apr1 для совместимого nginx — но вы можете переопределить его и настроить стоимость bcrypt.
- 2
Сгенерируйте хеш
Введите имя пользователя и пароль (или нажмите «Случайный пароль»), затем нажмите «Сгенерировать». Хеш вычисляется локально с новой случайной солью. Пересоздайте соль в любое время, чтобы получить новую запись.
- 3
Скопируйте запись
Скопируйте строку user:hash для вашего файла .htpasswd, скопируйте команду echo >> для добавления через командную строку или скопируйте заголовок Authorization: Basic для curl и Postman.
- 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 — что выбрать?
Поддерживает ли nginx bcrypt?
Как исправить ошибку nginx `crypt_r() failed (22: Invalid argument)`?
Где хранить файл .htpasswd и какие выставить права?
Как настроить Basic Auth в .htaccess / nginx?
Загружаются ли мои пароли куда-либо?
В чём разница между $2a$, $2b$ и $2y$ в bcrypt?
Какую стоимость bcrypt следует использовать?
htpasswd против заголовка Authorization: Basic — в чём разница?
У меня не установлен apache2-utils — как сгенерировать запись htpasswd?
Что означают флаги htpasswd -B, -Bbn, -bnB?
Почему Docker Registry требует bcrypt?
Насколько безопасен Basic Auth?
Похожие инструменты
Все инструменты →Генератор и конструктор 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 полей, пресеты, описание простым языком. Бесплатно и приватно.