Skip to content

htpasswd Oluşturucu — bcrypt, Apache MD5 (apr1), Basic Auth

bcrypt, Apache MD5 (apr1), SHA-1 ve daha fazlasıyla htpasswd girdisi oluşturun. Apache, nginx ve Docker için yapıştırmaya hazır yapılandırma alın. Tarayıcınızda %100 çalışır — yükleme yok.

Takip Yok Tarayıcıda Çalışır Ücretsiz
Tarayıcınızda %100 çalışır — şifreler cihazınızı asla terk etmez.
Sunucu
bcrypt maliyeti: 12
htpasswd girdisi
Yetkilendirme başlığı
 
Mevcut bir karmayı doğrula
Karma doğruluğu ve Temel Kimlik Doğrulama standartlarına uygunluk açısından incelendi — Go Tools Mühendislik Ekibi · Jun 4, 2026

htpasswd Dosyası Nedir?

Bir .htpasswd dosyası, HTTP Temel Kimlik Doğrulama tarafından kullanılan kimlik bilgilerini depolar. Her satır tek bir kullanıcıadı:karma çiftinden oluşur; karma, şifrenin tek yönlü bir özetidir — düz metin asla saklanmaz. Web sunucuları, korunan bir URL'ye kimin erişebileceğine karar vermek için bu dosyayı okur. Apache'de bir .htaccess dosyası (ya da bir <Directory> bloğu) .htpasswd dosyasına başvurur ve sayfa sunulmadan önce tarayıcıdan kullanıcı adı ve şifre ister.

Karma biçimi, hangi algoritmanın ürettiğine bağlıdır. Apache'nin htpasswd aracı birkaç seçenek sunabilir: bcrypt ($2y$ ile başlayan satırlar) en güçlü seçenek olup Apache, Docker Registry ve Caddy için önerilir; apr1 (Apache MD5, $apr1$ ile başlar) en taşınabilir seçenek olup nginx için güvenli varsayılandır; SHA-1 ({SHA} ile başlar) tuzsuz olup güvensiz kabul edilir; crypt (geleneksel DES) eskiden kalmadır ve parolayı 8 karakterde keser; düz metin ise parolayı açık metin olarak saklar, üretimde asla kullanılmamalıdır.

Bu oluşturucu tamamen tarayıcınızda çalışır — hiçbir kullanıcı adı, şifre veya karma yüklenmez. Girdinizle birlikte güçlü bir şifreye ihtiyaç duyarsanız Rastgele Şifre Oluşturucu aracımızı kullanın. Authorization: Basic başlığını elle oluşturmak için kimlik bilgisi yalnızca base64(kullanıcı:şifre) değeridir; bunu Base64 Kodlayıcı aracımızla üretebilirsiniz. Uç noktanız korunduğunda, cURL Komut Oluşturucu aracımızla komut satırından test edin.

# 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.

Temel Özellikler

Birden Fazla Karma Algoritması

bcrypt ($2y$), apr1 / Apache MD5 ($apr1$) ve SHA-1 ({SHA}) girdilerini oluşturun; ayrıca test amacıyla düz metin seçeneği de mevcuttur. Her biri, formatın desteklediği durumlarda yeni bir kriptografik tuz kullanır.

Oluştur ve Doğrula

Yeni girdiler oluşturun veya mevcut olanları doğrulayın. Saklanan bir kullanıcı:karma satırını ve aday şifreyi yapıştırarak anında eşleşip eşleşmediklerini doğrulayın — üretimdeki bir 401 hatasını ayıklamak için idealdir.

Sunucuya Göre Seçim

Apache, nginx, Docker veya Caddy seçin; doğru algoritma otomatik olarak belirlenir — desteklendiği yerlerde bcrypt, nginx taşınabilirliği için apr1 — bu sayede sessiz crypt() hatalarından kaçınırsınız.

Yapıştırmaya Hazır Yapılandırma Blokları

Apache .htaccess, nginx auth_basic, Docker, Kubernetes ingress-nginx, Caddy ve Traefik için altı kopyalamaya hazır yapılandırma parçacığı alın; hepsi oluşturduğunuz .htpasswd girdisiyle zaten ilişkilendirilmiştir.

%100 İstemci Taraflı

Tüm karma işlemleri tarayıcınızda Web Crypto ve paketlenmiş bir bcrypt uygulaması aracılığıyla yerel olarak gerçekleşir. Hiçbir kullanıcı adı, şifre veya karma bir sunucuya gönderilmez; böylece üretim kimlik bilgilerini gizlilikle oluşturabilirsiniz.

Örnekler

bcrypt girdisi (önerilen)

admin:$2y$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy

$2y$ öneki ve maliyet 10 içeren bir bcrypt girdisi. Bu en güçlü, en taşınabilir formattır — Apache, Docker Registry, Caddy ve Traefik için kullanın.

apr1 girdisi (taşınabilir nginx)

admin:$apr1$kl3H9j2.$qN8vY7tLp2mZ0xW5cR4fK1

$apr1$ işaretçisinin ardından 8 karakterlik tuz içeren Apache MD5 (apr1). nginx için güvenli varsayılan; bcrypt doğrulaması güvenilmez bir sistem crypt() işlevine bağımlıdır.

SHA-1 girdisi (eskiden kalan)

admin:{SHA}W6ph5Mm5Pz8GgiULbPgzG37mj9g=

Bir {SHA} girdisi, tuzsuz bir SHA-1 özetinin base64 kodlamasıdır. Apache ve nginx tarafından kabul edilir ancak tuzsuz ve güvensizdir — yalnızca eski uyumluluk için dahil edilmiştir.

Authorization: Basic başlığı

Authorization: Basic YWRtaW46czNjcmV0

Aynı kullanıcı için istemci taraflı kimlik bilgisi: base64('admin:s3cret'). .htpasswd dosyası yazmadan kimlik doğrulamak için bu başlığı curl -H ile veya Postman'de gönderin.

Çok kullanıcılı .htpasswd dosyası

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

Her kullanıcı için bir kullanıcıadı:karma satırı. Aynı dosyada algoritmalar karıştırılabilir — burada üç kullanıcı için iki bcrypt ve bir apr1 girdisi bir arada bulunmaktadır.

Nasıl Kullanılır

  1. 1

    Sunucu ve Algoritmayı Yapılandırın

    Hedef sunucunuzu seçin (Apache, nginx, Docker, Caddy). Doğru algoritma otomatik olarak belirlenir — Apache/Docker/Caddy için bcrypt, taşınabilir nginx için apr1 — ancak bunu değiştirip bcrypt maliyetini ayarlayabilirsiniz.

  2. 2

    Karmayı Oluşturun

    Bir kullanıcı adı ve şifre girin (ya da Rastgele şifre düğmesine tıklayın), ardından Oluştur'a tıklayın. Karma, yeni bir rastgele tuzla yerel olarak hesaplanır. Yeni bir girdi oluşturmak için tuzu istediğiniz zaman yeniden oluşturabilirsiniz.

  3. 3

    Girdiyi Kopyalayın

    .htpasswd dosyanız için kullanıcı:karma satırını, kabuk için echo >> ekleme komutunu veya curl ve Postman için Authorization: Basic başlığını kopyalayın.

  4. 4

    Yapılandırmayı Dağıtın

    Oluşturulan yapılandırma bloğunu Apache .htaccess dosyanıza, nginx sunucu bloğuna, Docker, Kubernetes ingress, Caddy veya Traefik yapılandırmasına yapıştırın, .htpasswd dosyanıza işaret edin ve sunucuyu yeniden yükleyin.

Yaygın Kullanım Senaryoları

Apache Dizin Koruması
Bir .htaccess dosyası ve AuthUserFile yönergesi kullanarak bir klasörü HTTP Temel Kimlik Doğrulama ile kilitleyin. bcrypt girdisini ve oluşturulan Apache yapılandırma bloğunu ekleyerek herhangi bir yolda oturum açma zorunluluğu getirin.
nginx auth_basic
Bir konum veya sunucu bloğunu auth_basic ve auth_basic_user_file ile koruyun. Alpine, Debian ve diğer temel imajlarda doğrulamanın güvenilir şekilde çalışması için apr1 formatını kullanın.
Docker Registry
Özel bir Docker Registry yalnızca bcrypt htpasswd girdilerini kabul eder. htpasswd -Bbn ile bir $2y$ satırı oluşturun, registry konteynerine bağlayın ve docker login ile kimlik doğrulayın.
Kubernetes ingress-nginx
Bir ingress yolunu kapıya almak için .htpasswd dosyanızdan basic-auth Secret'ı oluşturun ve nginx.ingress.kubernetes.io/auth-type ile auth-secret ek açıklamalarıyla referans gösterin.
Caddy ve Traefik
Caddy'nin basic_auth yönergesi ve Traefik'in basicauth ara katman yazılımı bcrypt karmalarını bekler. Oluşturulan girdiyi doğrudan Caddyfile'ınıza veya Traefik etiketlerine/dinamik yapılandırmasına yapıştırın.
curl ve Postman Yetkilendirme Başlığı
Hızlı testler için dosyayı tamamen atlayın: kimlik bilgilerini doğrudan göndermek için Authorization: Basic başlığını kopyalayın. curl -H bayrağına veya bir Postman isteğine ekleyerek korunan bir uç noktayı test edin.

Teknik Detaylar

bcrypt ($2y$)
Ayarlanabilir bir maliyet faktörüne sahip Blowfish şifresine dayalı uyarlanabilir, tuzlu bir karma. Her girdi, rastgele 16 baytlık bir tuz ve maliyeti içerir; böylece aynı şifreler farklı karmalar üretir. Not: bcrypt, şifreyi 72 baytla sınırlar — bu sınırın ötesindeki karakterler yoksayılır.
apr1 (Apache MD5)
Apache'nin tekrarlı, tuzlu MD5 çeşidi ($apr1$ + 8 karakterli tuz). 1.000 MD5 turu çalıştırır; bu, bcrypt'in uyarlanabilir maliyetinden çok daha zayıftır, ancak Apache ve nginx tarafından yerel olarak uygulanması nedeniyle platformlar ve temel imajlar arasında en taşınabilir format olmayı sürdürür.
SHA-1 ve crypt
SHA-1 girdileri ({SHA} + base64 özeti) tuzsuz olduğundan aynı şifreler aynı karmaları verir ve gökkuşağı tablolarına karşı savunmasızdır — yalnızca eski uyumluluk için dahil edilmiştir. Geleneksel crypt (DES) daha da zayıftır ve parolaları 8 karakterde sessizce keser.
Tuz ve İterasyonlar
Tuzlama, her karmayı benzersiz kılarak önceden hesaplanmış (gökkuşağı tablosu) saldırıları engeller. bcrypt, yapılandırılabilir maliyetle 128 bitlik rastgele tuz kullanır; apr1, 1.000 sabit iterasyonla 8 karakterlik tuz kullanır. Aynı şifre için farklı geçerli bir karma oluşturmak amacıyla Tuzu yenile seçeneğini kullanın.
Base64 ve UTF-8 İşleme
Şifreler karmaya dönüştürülmeden önce UTF-8 baytları olarak kodlanır; bu sayede ASCII dışı karakterler tutarlı şekilde işlenir. Authorization: Basic başlığı, ham UTF-8 kullanıcıadı:şifre baytlarının base64 kodlamasıdır; bu, sunucuların alıcı tarafta çözdüğü değerle eşleşir.
Dürüstlük Notları ve Uyarılar
Oluşturulan karmalar yerel olarak hesaplanır ve canlı bir sunucuda doğrulanmaz. Kopyalanan girdiler ve indirilen .htpasswd dosyaları, düz metin-karma biçiminde panonuza ve diskinize iner — bunları gizli bilgi gibi ele alın, dosya izinlerini kısıtlayın ve üretim yapılandırmasına yapıştırdıktan sonra panonuzu temizleyin.

En İyi Uygulamalar

Desteklendiği Her Yerde bcrypt Tercih Edin
Apache, Docker, Caddy ve Traefik için bcrypt ($2y$) kullanın — tuzlu, uyarlanabilir ve apr1 veya SHA-1'den çok daha güçlüdür. apr1'i yalnızca bcrypt'in sistem crypt() bağımlılığının güvenilmez hale getirdiği nginx için saklayın.
Dosyayı Web Kökünün Dışında Saklayın
.htpasswd'yi, HTTP üzerinden indirilip açığa çıkmaması için sunulan herhangi bir dizinin dışında tutun. chmod 640 olarak ayarlayın ve web sunucusu kullanıcısına ait yapın, böylece sunucu okuyabilirken diğer hesaplar okuyamaz.
Her Zaman HTTPS Üzerinden Sunun
Temel Kimlik Doğrulama, kimlik bilgilerini her istekte tersine çevrilebilir base64 olarak iletir. TLS olmadan, ağ yolundaki herkes şifreyi okuyabilir. Korunan uç noktanın önünde TLS'yi sonlandırın — asla düz HTTP'de Temel Kimlik Doğrulama etkinleştirmeyin.
Benzersiz ve Güçlü Şifreler Kullanın
Her hesabın, hizmetler arasında yeniden kullanılmayan yüksek entropili kendi şifresi olmalıdır. Rastgele Şifre Oluşturucu aracımızla bir tane oluşturun ve elle bulmak yerine bir parola yöneticisinde saklayın.

Sıkça Sorulan Sorular

bcrypt mı apr1 mi — hangisini seçmeliyim?
Apache, Docker Registry, Caddy ve Traefik için bcrypt kullanın — güçlü, tuzlu ve uyarlanabilir bir karmadır ve modern standarttır. nginx için apr1 (Apache MD5) kullanın, çünkü nginx bcrypt doğrulamasını sistem crypt() işlevine devreder; bu da pek çok yapıda başarısız olurken apr1 dahili olarak uygulanır ve her yerde çalışır. Çalışma zamanını kontrol ediyor ve bcrypt'in desteklendiğini biliyorsanız bcrypt her zaman daha güçlü bir seçimdir; apr1 güvenlikten çok taşınabilirlik içindir.
nginx, bcrypt'i destekliyor mu?
Yalnızca dolaylı olarak ve güvenilir biçimde değil. nginx şifreleri kendisi karmaya dönüştürmez — $2y$ girdileri için doğrulamayı C kitaplığının crypt() işlevine devreder, dolayısıyla destek tamamen libc'nize bağlıdır. Alpine'nin musl'u ve eski glibc yapıları blowfish (bcrypt) şemasını içermez, bu yüzden kimlik doğrulama sessizce başarısız olur. Taşınabilir nginx kurulumları için bunun yerine apr1 formatını kullanın; nginx bunu her platformda dahili olarak doğrular.
nginx hatası `crypt_r() failed (22: Invalid argument)` nasıl düzeltilir?
Bu hata, nginx'in blowfish şemasını desteklemeyen bir libc üzerinde bcrypt ($2y$) karmasını doğrulamaya çalıştığı anlamına gelir — genellikle Alpine/musl veya eski bir glibc. Çözüm, girdiyi bcrypt yerine apr1 (Apache MD5) olarak yeniden oluşturmaktır; nginx bunu her platformda dahili olarak doğrular. Alternatif olarak, libc'si bcrypt desteği içeren bir temel imajına geçebilirsiniz, ancak apr1 daha basit ve taşınabilir çözümdür.
.htpasswd dosyasını nereye koymalıyım ve izinleri ne olmalı?
.htpasswd dosyasını, statik dosya olarak sunulup açığa çıkmaması için web belge kökünün dışında saklayın. Yaygın bir konum /etc/apache2/.htpasswd veya /etc/nginx/.htpasswd'dir. İzinleri 640 olarak ayarlayın (chmod 640) ve web sunucusunun çalıştığı kullanıcıya ait yapın (örneğin www-data veya nginx), böylece sunucu okuyabilirken diğer hesaplar okuyamaz.
.htaccess / nginx'te Temel Kimlik Doğrulama nasıl yapılandırılır?
Apache için bu araç, AuthType Basic, AuthName, .htpasswd yolunuza işaret eden AuthUserFile ve Require valid-user içeren bir .htaccess bloğu oluşturur. nginx için auth_basic "Restricted"; ve auth_basic_user_file /yol/.htpasswd; içeren bir location bloğu oluşturur. Sunucunuzla eşleşen yapılandırma bloğunu kopyalayın, dosya yolunu düzenleyin ve yeniden yükleyin — parçacıklar yapıştırmaya hazırdır.
Şifrelerim herhangi bir yere yükleniyor mu?
Hayır. Her karma, JavaScript kullanılarak tamamen tarayıcınızda hesaplanır — hiçbir kullanıcı adı, şifre veya oluşturulan karma ağ üzerinden gönderilmez. Bunu, oluşturma sırasında tarayıcınızın Geliştirici Araçları'nı açarak doğrulayabilirsiniz (F12 → Ağ sekmesi): giden sıfır istek vardır. Hiçbir sunucuda saklanmaz veya kaydedilmez; bu nedenle gerçek üretim kimlik bilgilerini güvenle oluşturabilirsiniz.
bcrypt'teki $2a$, $2b$ ve $2y$ arasındaki fark nedir?
Bunlar aynı bcrypt algoritması için sürüm önekleridir ve eşdeğer karmalar üretir; farklılıklar, belirli uygulamaların yüksek bitli karakterleri ve dize uzunluğunu nasıl işlediğine dair tarihsel hata düzeltmelerine dayanır. Apache'nin htpasswd aracı $2y$ üretir. Modern bcrypt kitaplıkları $2a$, $2b$ ve $2y$'yi doğrulama için birbirine eşdeğer kabul eder, bu nedenle burada oluşturulan $2y$ girdisi Apache, Caddy, Traefik ve Docker Registry'de doğru şekilde doğrulanır.
Hangi bcrypt maliyetini kullanmalıyım?
Maliyet 12, modern varsayılan değerdir ve güvenlik ile hız arasında iyi bir denge sağlar. Maliyet bir iş faktörüdür: her artış karmayı hesaplama ve doğrulama süresini iki katına çıkarır; bu kaba kuvvet saldırılarını yavaşlatır ancak her oturum açmaya gecikme ekler. Maliyet 10, düşük trafikli veya düşük riskli uç noktalar için kabul edilebilirdir; hassas şeyler için 12–14 önerilir. Meşru kimlik doğrulamanın fark edilir derecede yavaşladığı kadar yüksek değerlere çıkmaktan kaçının.
htpasswd ile Authorization: Basic başlığı arasındaki fark nedir?
Aynı değişimin iki zıt ucunda yer alırlar. .htpasswd dosyası, sunucu tarafında saklanan karmayı — sunucunun kimlik bilgilerini doğrulamak için kullandığı tek yönlü özeti — içerir. Authorization: Basic başlığı, istemci tarafındaki istek kimlik bilgisidir: tarayıcının veya curl'ün her istekte gönderdiği username:password değerinin gerçek base64 kodlaması. Sunucu başlığı base64'ten çözer, ardından şifreyi saklanan karmayla karşılaştırır. Biri depolama, diğeri iletimdir.
apache2-utils kurulu değil — htpasswd girdisi nasıl oluştururum?
Buna ihtiyacınız yok — bu araç geçerli bcrypt, apr1 ve SHA-1 girdilerini tamamen tarayıcınızda oluşturur. Komut satırını tercih ediyorsanız, OpenSSL neredeyse her sistemde mevcuttur: apr1 karması üretmek için openssl passwd -apr1 komutunu çalıştırın, ardından satırı oluşturmak için başına username: ekleyin. Debian/Ubuntu'da htpasswd ikili dosyasını apt install apache2-utils ile veya RHEL/CentOS'ta httpd-tools ile de yükleyebilirsiniz.
htpasswd -B, -Bbn, -bnB bayrakları ne anlama gelir?
Her harf bağımsız bir bayraktır: -B bcrypt seçer, -n sonucu dosyaya yazmak yerine stdout'a yazdırır ve -b şifreyi komut satırı argümanı olarak alır (sormak yerine). Sıra önemli değildir, dolayısıyla -Bbn ve -bnB aynıdır. -Bbn, bir Docker Registry htpasswd dosyasına bcrypt girdisi aktarmak için yaygın kombinasyondur.
Docker Registry neden bcrypt gerektirir?
Docker Registry'nin htpasswd kimlik doğrulama arka ucu yalnızca bcrypt biçimli girdileri kabul eder; apr1, SHA-1 ve crypt karmaları reddedilir ve oturum açma başarısız olur. Girdiyi htpasswd -Bbn kullanıcı şifre ile oluşturun (veya buradaki bcrypt seçeneğini kullanın), dosyayı registry konteynerine bağlayın ve REGISTRY_AUTH_HTPASSWD_PATH'ı ona işaret edin. Temel Kimlik Doğrulama kimlik bilgileri aksi takdirde geçiş sırasında okunabilir olduğundan, bunu her zaman TLS ile eşleştirin.
Temel Kimlik Doğrulama güvenli midir?
Yalnızca HTTPS üzerinden. HTTP Temel Kimlik Doğrulama, kimlik bilgilerini her istekte base64(kullanıcıadı:şifre) olarak gönderir ve base64, şifreleme değil tersine çevrilebilir bir kodlamadır — bu nedenle trafiği okuyabilen herkes şifreyi anında kurtarabilir. TLS üzerinden başlık aktarım sırasında şifrelenir ve Temel Kimlik Doğrulama basit bir kapı olarak kabul edilebilirdir. Asla düz HTTP'de kullanmayın; yüksek değerli uygulamalar için daha güçlü şemalar tercih edin.

cURL Komut Oluşturucu ve Yapılandırıcı

Web & API

Tarayıcınızda curl komutları oluşturun — yöntem, başlık, kimlik doğrulama ve gövde ayarlayın, anında kopyalamaya hazır komut alın. Bearer, POST JSON, dosya yükleme için ön ayarlar. Ücretsiz, gizli, kayıt gerektirmez.

Sayı Tabanı Dönüştürücü — Binary, Hex, Decimal ve Octal

Dönüştürme Araçları

Binary, hex, decimal, octal ve herhangi bir taban (2-36) arasında anında dönüştürün. Ücretsiz ve gizli — tüm işlem tarayıcınızda yapılır.

Base64 Çözücü ve Kodlayıcı

Kodlama ve Biçimlendirme

Base64'ü ücretsiz çevrimiçi kodlayın ve çözün. Tam UTF-8 ve emoji desteğiyle gerçek zamanlı dönüştürme. %100 tarayıcıda — kayıt gerekmez.

Harf Dönüştürücü — UPPER, lower, camelCase ve Daha Fazlası

Metin İşleme

Metni UPPERCASE, lowercase, Title Case, Sentence case, camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE ve 6 biçim daha arasında anında dönüştürün. Ücretsiz, çevrimiçi, kayıt yok.

Renk Dönüştürücü — HEX, RGB, HSL & OKLCH

Dönüştürme Araçları

HEX'i RGB, HSL, OKLCH, OKLAB ve CMYK biçimlerine tarayıcınızda dönüştürün — herhangi bir biçimi tek tıkla kopyalayın. Ücretsiz, kayıt yok, renkleriniz sayfadan asla çıkmaz.

Crontab Oluşturucu ve Cron İfadesi Üretici

Tarih ve Saat

Cron ifadelerini tarayıcıda oluşturun, doğrulayın ve çözümleyin. Yerel saatte veya UTC olarak canlı çalışma önizlemesi. POSIX 5 alanlı söz dizimi, hazır şablonlar ve sade açıklama. Ücretsiz ve gizli.