Skip to content

Ücretsiz JWT Gizli Anahtar Oluşturucu — HS256/384/512

HS256/384/512 için güçlü, RFC uyumlu bir JWT gizli anahtarı üretin. %100 tarayıcınızda; base64url, base64 veya hex; .env için tek tıkla kopyalayın.

Takip Yok Tarayıcıda Çalışır Ücretsiz
Gizli anahtarınız yerel olarak crypto.getRandomValues ile üretilir ve asla yüklenmez, günlüğe kaydedilmez veya saklanmaz. Bu cihazda kalır.
16 64

Eşdeğer CLI komutları

RFC 7518 §3.2 anahtar uzunluğu doğruluğu, base64url / base64 / hex arasında RFC 4648 kodlama isabeti, CSPRNG kaynağı (crypto.getRandomValues, asla Math.random değil), üretilen gizli anahtarın ağsız/depolamasız gizliliği ve erişilebilirlik (etiketli kontroller, göster/gizle maskeleme, üretme ve kopyalamada ekran okuyucu duyuruları) açısından incelendi. — Go Tools Güvenlik Araçları Ekibi · Jun 16, 2026

JWT Gizli Anahtar Oluşturucu Nedir?

Bir JWT gizli anahtar oluşturucu, HMAC ile imzalanmış bir JSON Web Token'ın kurcalanmadığını kanıtlamak için kullandığı rastgele imzalama anahtarını üretir. Bir token'ı HS256, HS384 veya HS512 ile imzaladığınızda, algoritma token'ın başlığı ve yükü üzerinde tek bir paylaşılan gizli anahtar kullanarak HMAC çalıştırır; doğrulayıcı aynı gizli anahtarla aynı HMAC'i yeniden hesaplar ve token'ı yalnızca imzalar eşleşirse kabul eder. Bu şemanın tüm güvenliği, gizli anahtarın uzun ve öngörülemez olmasına dayanır — ki bu aracın yarattığı tam olarak budur: tarayıcınızda üretilen, seçtiğiniz algoritma için doğru boyutlandırılmış, yüksek entropili rastgele bir dize.

Bu aracın ne yapıp ne yapmadığı konusunda kesin olmakta yarar var. Gizli anahtarı üretir — JWT_SECRET ortam değişkeninize koyduğunuz değeri — bitmiş bir token'ı değil. Bir başlık ve yük oluşturup bunları gerçek bir JWT'ye imzalamak istiyorsanız, bu JWT Oluşturucu'nun işidir; mevcut bir token'ı parçalarına ayırıp imzasını doğrulamak için JWT Çözücü'yü kullanın. Gizli anahtarı anahtar, oluşturucuyu da onun işlettiği kilit olarak düşünün: anahtarı bir kez üretir, güvenle saklar ve birçok token'ı imzalamak ve doğrulamak için yeniden kullanırsınız.

Anahtar ne kadar uzun olmalı? Yanıt tercihe göre değil, spesifikasyon tarafından belirlenir. RFC 7518 §3.2 — JSON Web Algorithms standardı — bir HMAC anahtarının en az hash çıktısı kadar büyük olmasını gerektirir: "Hash çıktısıyla aynı boyutta (örneğin HS256 için 256 bit) veya daha büyük bir anahtar KULLANILMALIDIR." Bu, oluşturucunun otomatik olarak izlediği temiz bir tablo verir:

| Algoritma | HMAC | Min bayt | Min bit | hex karakter | base64 karakter | base64url karakter | |-----------|------|-----------|----------|-----------|--------------|-----------------| | HS256 | HMAC-SHA-256 | 32 | 256 | 64 | 44 | 43 | | HS384 | HMAC-SHA-384 | 48 | 384 | 96 | 64 | 64 | | HS512 | HMAC-SHA-512 | 64 | 512 | 128 | 88 | 86 |

Karakter sayıları, o bayt uzunluklarının RFC 4648 kodlamalarından gelir: hex bayt sayısını ikiye katlar; base64 dolguyla 4⁄3 oranında genişler; base64url dolguyu bırakır, bu yüzden 32 baytlık bir anahtar 44 yerine 43 base64url karakteridir. base64url, JWT'nin yerel kodlamasıdır — URL açısından güvenli alfabe, dolgu yok — bu yüzden burada varsayılan çıktıdır; base64url'deki bir gizli anahtar, bir başlıkta, bir URL'de veya bir yapılandırma değerinde hiçbir kaçışlama olmadan durabilir.

Rastgelelik, taviz veremeyeceğiniz parçadır. Bu oluşturucu, baytlarını tarayıcının kriptografik olarak güvenli sözde rastgele sayı üreticisi olan crypto.getRandomValues'tan çeker — Web Crypto anahtar üretiminin de dayandığı aynı temel. Hızlı ama öngörülebilir olan ve bir imzalama anahtarı için tamamen uygunsuz olan Math.random'u asla kullanmaz — öngörülebilir bir RNG, tahmin edilebilir bir gizli anahtar demektir ve tahmin edilebilir bir gizli anahtar, taklit edilebilir token'lar demektir. HMAC doğrulaması paylaşılan gizli anahtarla yerel olarak gerçekleştiğinden, bir token'ı yakalayan bir saldırgan zayıf bir anahtarı hız sınırı olmadan çevrimdışı kaba kuvvetle çözebilir; hashcat (mod 16500) ve jwt_tool gibi araçlar tam da bunu yapmak için vardır. Tam entropili 32 baytlık rastgele bir anahtar ise hesaplama açısından erişilemez. Ders açıktır: bir JWT gizli anahtarı olarak asla bir şifre, bir sözlük sözcüğü veya elle yazılmış bir dize kullanmayın — rastgele bir tane üretin.

Son olarak, anahtarı istemci tarafında üretmenin kendisi bir güvenlik özelliğidir. Bir imzalama gizli anahtarı asla üçüncü bir tarafa iletilmemelidir, onu oluşturmanıza yardım eden siteye bile. Buradaki her bayt tarayıcınızda üretilip kodlanır; hiçbir şey yüklenmez, günlüğe kaydedilmez veya saklanmaz. Anahtarı göndermeye hazır olduğunuzda, .env için kopyala düğmesi size bir JWT_SECRET=… satırı verir ve onu daha geniş bir yapılandırmaya katmanız gerekirse JSON'dan .env'ye dönüştürücü yardımcı olabilir. Üretin, kopyalayın, bir secret yöneticisinde saklayın — ve vakti geldiğinde bir kid başlığı ve örtüşen geçerlilik pencereleriyle rotasyona sokun.

// The secret you generate here goes straight into your signing code.
// Node.js with jsonwebtoken — the JWT_SECRET env var holds the key.
import jwt from 'jsonwebtoken';

const secret = process.env.JWT_SECRET; // e.g. base64url value from this tool

// Sign a token with HS256 (HMAC-SHA-256).
const token = jwt.sign({ sub: 'user-42', role: 'member' }, secret, {
  algorithm: 'HS256',
  expiresIn: '15m'
});

// Verify it — pin the algorithm to a whitelist; never trust the token's alg.
const payload = jwt.verify(token, secret, { algorithms: ['HS256'] });

// ---------------------------------------------------------------
// Python with PyJWT — same secret, same algorithm pinning.
// import jwt
// token = jwt.encode({"sub": "user-42"}, key, algorithm="HS256")
// payload = jwt.decode(token, key, algorithms=["HS256"])  # whitelist!

// ---------------------------------------------------------------
// Equivalent-strength CLI generation (32 bytes for HS256):
//   openssl rand -base64 32
//   node -e "console.log(require('crypto').randomBytes(32).toString('base64url'))"
//   python -c "import secrets; print(secrets.token_urlsafe(32))"

Temel Özellikler

Algoritmaya Duyarlı Anahtar Uzunluğu

HS256, HS384 veya HS512 seçin; oluşturucu RFC 7518 §3.2 minimum anahtar boyutunu otomatik olarak belirler — 32, 48 veya 64 bayt. Daha uzun bir anahtar isteyebilirsiniz, ama spesifikasyonu ihlal eden ya da katı bir kütüphanenin imzalamayı reddedeceği, boyutu yetersiz bir anahtarı asla yanlışlıkla sağlayamazsınız.

Metin Açısından Güvenli Üç Çıktı Biçimi

Aynı rastgele baytları base64url (JWT'nin yerel, URL açısından güvenli, dolgusuz kodlaması — varsayılan), standart base64 veya hex olarak, yan yana görüntülenmiş şekilde alın. Bir JWT_SECRET için base64url en güvenli varsayılandır; belirli bir yükleyici veya kütüphane başka birini beklediğinde biçim değiştirin. Entropi üçünde de özdeştir.

Kriptografik Olarak Güvenli Rastgelelik

Her gizli anahtar, tarayıcının CSPRNG'i ve Web Crypto anahtar üretiminin arkasındaki temel olan crypto.getRandomValues'tan çekilir. Asla Math.random değil. Bu, öngörülebilir bir yapısı olmayan tam entropili bir anahtarı garanti eder — gizli anahtarı çevrimdışı kaba kuvvetin erişiminin ötesine taşıyan özellik.

Tek Tıklamayla .env için Kopyala

.env için kopyala, değeri alışılagelmiş JWT_SECRET=… ataması içine sarar; tek satır, tırnaksız — anahtar adını elle yazmadan bir .env dosyasına, bir Docker secret'ına veya bir CI değişkenine yapıştırmaya hazır. Düz Kopyala ise yalnızca değere ihtiyacınız olduğunda ham gizli anahtarı alır.

Eşdeğer CLI Komutları

Bir panel, seçilen algoritma için eşleşen openssl rand, Node crypto.randomBytes ve Python secrets tek satırlıklarını yazdırır; böylece bir sağlama betiğinde veya bir Dockerfile'da eşit güçte bir anahtarı yeniden üretebilirsiniz. Rakip araçların çoğu bunu atlar; burada yerleşiktir.

Göster / Gizle Maskeleme

Gizli anahtar, bir demo, bir öğretici veya bir ekran paylaşımı sırasında ekran dışında kalsın diye varsayılan olarak maskelidir. Yalnızca kopyalamaya hazır olduğunuzda göz simgesiyle açın. Kopyala işlemleri, değer gösterilse de gizlense de panoya her zaman gerçek gizli anahtarı koyar.

%100 Gizli, Yalnızca Tarayıcı

Gizli anahtar tamamen cihazınızda üretilir, kodlanır ve görüntülenir. Hiçbir ağ isteği, günlük kaydı, depolama yok — Geliştirici Araçları → Ağ sekmesinde doğrulayın. Bir imzalama anahtarı asla üçüncü bir tarafa ulaşmamalıdır ve burada asla ulaşmaz; bu da onu istemci tarafında üretmenin bütün nedenidir.

15 Dilde Mevcut

Tüm arayüz — etiketler, talimatlar ve yönlendirme — 15 dile yerelleştirilmiştir; böylece ekibiniz nerede çalışırsa çalışsın araç kullanılabilir ve güvenlik tavsiyesi nettir.

İşlenmiş Örnekler

base64url biçiminde bir HS256 gizli anahtarı oluşturma (varsayılan)

Algoritma: HS256 · Biçim: base64url
3sJ9aFq2kP7mWcZ1xL0nVtRbYdGhU8eAoI4QpNlKj0

HS256, HMAC-SHA-256 ile imzalar; bu nedenle RFC 7518 §3.2 en az 32 baytlık (256 bit) bir anahtar ister. Oluşturucu, crypto.getRandomValues'tan kriptografik olarak güvenli 32 rastgele bayt çeker ve bunları base64url olarak kodlar — dolgusuz, URL açısından güvenli ve JWT'nin kendi kullandığı alfabe. 32 bayt, 43 karakterlik bir base64url dizesine dönüşür. Değeri doğrudan JWT_SECRET'e koyun. Her tıklama yeni bir gizli anahtar üretir; hiçbir şey iki kez aynı olmaz.

Bir HS512 gizli anahtarı oluşturma (64 bayt / 512 bit)

Algoritma: HS512 · Biçim: base64url
k2Lp9XqA0mNbVcZ7rT4wYsHfGjUe8RoIdPlNkBvM3xQ1aWtCyZuS6FhEgJ (86 karakter)

HS512, hash çıktısı 64 bayt olan HMAC-SHA-512 kullanır; bu nedenle RFC 7518 §3.2 en az 64 baytlık (512 bit) bir anahtar zorunlu kılar. Araç algoritmayı algılar ve bayt sayısını otomatik olarak yükseltir — minimumu asla hatırlamak zorunda kalmazsınız. 64 rastgele bayt, 86 karakterlik bir base64url dizesine, standart base64'te 88 karaktere veya 128 hex karaktere kodlanır. Burada daha uzun bir algoritma seçmek, daha yüksek entropili bir gizli anahtarı tek tıklamayla sağlamanın yoludur.

Gizli anahtarı .env satırı olarak kopyalama

".env için kopyala"ya tıklayın
JWT_SECRET=3sJ9aFq2kP7mWcZ1xL0nVtRbYdGhU8eAoI4QpNlKj0

.env için kopyala, oluşturulan değeri alışılagelmiş JWT_SECRET=… ataması içine sarar; böylece anahtar adını elle yazmadan doğrudan bir .env dosyasına, bir Docker secret'ına veya bir CI değişkenine yapıştırabilirsiniz. Değer, etrafında tırnak işareti olmadan tek satırda kalır — dotenv tarzı yükleyicilerin tam olarak beklediği biçim. Değişkeni daha geniş bir yapılandırmaya gömmeniz mi gerekiyor? Bunu aşağıda bağlantısı verilen JSON'dan .env'ye dönüştürücüyle birlikte kullanın.

Gizli anahtarı bir CLI'dan yeniden üretme (eşdeğer güç)

CLI komutunu göster
openssl rand -base64 32

CLI paneli, seçilen algoritma için aynı sayıda güvenli rastgele baytı çeken openssl, Node ve Python komutlarını yazdırır — HS256 için openssl rand -base64 32, HS384 için …48, HS512 için …64. Çıktı, eşit güçte bir gizli anahtardır, bayt bayt aynı bir dize değil: openssl dolgulu standart base64 üretirken bu araç varsayılan olarak base64url kullanır; bu nedenle alfabeler ve sondaki karakterler farklıdır. Sağlama betiğinize hangisi uygunsa onu kullanın; entropi aynıdır.

Gizli anahtarı gösterme ve gizleme

Göz simgesini değiştirin
•••••••••••••••••••••••••••••••••••••••••••  ↔  3sJ9aFq2kP7m…

Gizli anahtar varsayılan olarak maskelidir; böylece bir demo veya ekran paylaşımı sırasında omuz üstünden görülemez ya da bir ekran kaydına yakalanamaz. Kopyalamaya hazır olduğunuzda göz simgesine tıklayıp açın ve ardından yeniden gizleyin. Kopyala ve .env için kopyala, değer gösterilse de maskelense de çalışır — panonuza her zaman gerçek gizli anahtar düşer, asla noktalar değil.

JWT Gizli Anahtar Oluşturucu Nasıl Kullanılır

  1. 1

    İmzalama algoritmasını seçin

    HS256, HS384 veya HS512'yi seçin. Oluşturucu, o HMAC varyantı için RFC 7518 §3.2 minimum anahtar uzunluğunu — 32, 48 veya 64 bayt — anında uygular; böylece sayıyı asla araştırmak veya boyutu yetersiz bir anahtar riskine girmek zorunda kalmazsınız.

  2. 2

    Çıktı biçimini seçin

    base64url varsayılandır — JWT'nin yerel URL açısından güvenli, dolgusuz kodlaması. Bir yükleyici bunu bekliyorsa standart base64'e, bir sistem yalnızca 0–f karakterlerini kabul ediyorsa hex'e geçin. Üçü de aynı rastgele baytları özdeş entropiyle kodlar.

  3. 3

    Gizli anahtarı açın ve kopyalayın

    Gizli anahtar, bir demo veya ekran paylaşımı sırasında ekran dışında kalsın diye varsayılan olarak maskelidir. Açmak için göz simgesine tıklayın, ardından ham değeri almak için Kopyala'ya veya bir .env dosyası ya da CI değişkeni için hazır bir JWT_SECRET=… satırı kopyalamak için .env için kopyala'ya tıklayın.

  4. 4

    Gerektikçe yeniden oluşturun

    crypto.getRandomValues'tan çekilen yeni, bağımsız bir gizli anahtar için Yeniden Oluştur'a tıklayın. Her ortam için bir tane üretin — geliştirme, hazırlık ve üretim arasında aynı imzalama anahtarını asla yeniden kullanmayın.

  5. 5

    CLI eşdeğerini kullanın veya imzalamaya geçin

    CLI paneli, betikle sağlama için eşleşen openssl, Node ve Python tek satırlıklarını gösterir. Gizli anahtarınız elinizdeyken, JWT Oluşturucu ile bir token imzalayın ve JWT Çözücü ile imzayı teyit edin.

Yaygın JWT Gizli Anahtarı Hataları

Gizli anahtar olarak bir şifre veya kısa ifade kullanmak

İnsan tarafından seçilen bir dize, bir imzalama anahtarı için çok az entropiye sahiptir ve bir sözlük veya kaba kuvvet saldırısıyla çevrimdışı kurtarılabilir; ardından herhangi bir token taklit edilebilir. Bunun yerine tam entropili rastgele bir gizli anahtar üretin.

✗ Yanlış
JWT_SECRET=mySuperSecret123  →  low entropy, brute-forceable
✓ Doğru
JWT_SECRET=3sJ9aFq2kP7mWcZ1xL0nVtRbYdGhU8eAoI4QpNlKj0  →  32 random bytes

Algoritmanın gerektirdiğinden kısa anahtar

RFC 7518 §3.2, en az hash çıktısı kadar uzun bir HMAC anahtarı zorunlu kılar. HS256 için 16 baytlık bir anahtar, 32 baytlık zeminin altındadır — imzayı zayıflatır ve bazı kütüphaneler onu tamamen reddeder.

✗ Yanlış
16-byte key with HS256  →  below the 32-byte minimum
✓ Doğru
32-byte key with HS256  →  meets RFC 7518 §3.2

Anahtarı Math.random ile üretmek

Math.random kriptografik olarak güvenli değildir — çıktısı öngörülebilirdir; bu yüzden ondan oluşturulan bir gizli anahtar tahmin edilebilir ve imzaladığı token'lar taklit edilebilir. Bir imzalama anahtarı, crypto.getRandomValues gibi bir CSPRNG'den gelmelidir.

✗ Yanlış
Math.random()-based key  →  predictable, unsafe
✓ Doğru
crypto.getRandomValues key  →  full entropy

Gizli anahtarı imzalamadan önce yeniden kodlamak

Aracın ürettiği dizeyi olduğu gibi saklayın ve verin. Onu bir serviste baytlara base64-çözmek ama başka birinde gerçek bir dize olarak ele almak, iki tarafa farklı anahtarlar verir ve her imza denetimi başarısız olur.

✗ Yanlış
Service A: raw string · Service B: base64-decoded  →  signatures never match
✓ Doğru
Both services use the identical stored string  →  signatures verify

Aynı gizli anahtarı tüm ortamlarda yeniden kullanmak

Dev, hazırlık ve üretim tarafından paylaşılan tek bir JWT_SECRET, herhangi bir yerdeki bir sızıntının her yerde token taklit etmesi ve rotasyonun ya hep ya hiç olması demektir. Ortam başına ayrı bir gizli anahtar sağlayın.

✗ Yanlış
Same JWT_SECRET in dev, staging, prod  →  one leak breaks all
✓ Doğru
A unique secret per environment  →  blast radius contained

Doğrulamada token'ın alg'ına güvenmek

Doğrulayıcının token'ın beyan ettiği algoritmayı kabul etmesine izin vermek, alg:none ve HS/RS confusion taklitlerine olanak tanır. Gizli anahtar ne kadar güçlü olursa olsun açık bir algoritma beyaz listesi geçirin.

✗ Yanlış
jwt.verify(token, secret)  →  accepts the token's alg
✓ Doğru
jwt.verify(token, secret, { algorithms: ['HS256'] })  →  pinned

Bu Aracı Kimler Kullanır

Yeni Bir Servis İçin JWT_SECRET Sağlama
HMAC ile imzalanmış token'lar veren bir API mi başlatıyorsunuz? Kütüphanenizin kullandığı algoritmayı seçin, gizli anahtarı bir JWT_SECRET=… satırı olarak kopyalayın ve servisin ortamına bırakın. Geliştirme, hazırlık ve üretim için ayrı bir anahtar üretin — bir gizli anahtarı asla ortamlar arasında paylaşmayın.
Tehlikeye Düşmüş veya Eskimiş Bir Gizli Anahtarı Rotasyona Sokma
Bir anahtarın sızdığından şüphelenildiğinde veya yalnızca rotasyon zamanı geldiğinde, buradan yeni bir gizli anahtar üretin, ona yeni bir kid atayın ve canlı token'lar süresi dolana kadar doğrulanmaya devam edecek şekilde bir örtüşme penceresiyle yayına alın. Teyit edilmiş bir saldırıda, anında rotasyona sokun ve eski anahtarı kabul edilen kümeden çıkarın.
Zayıf veya Elle Yazılmış Bir Anahtarı Değiştirme
JWT_SECRET'i kısa bir ifade ya da kopyalanmış bir örnek değer olan bir kod tabanını mı devraldınız? O anahtar çevrimdışı kaba kuvvetle çözülebilir. Tam entropili 32 baytlık bir değiştirme üretin, bir rotasyon penceresi ardında değiştirin ve token taklidi açığını istismar edilmeden önce kapatın.
Bir Pipeline'da Anahtar Üretimini Betikleme
Anahtarın elle değil de CI'da veya bir Dockerfile'da oluşturulması mı gerekiyor? Sağlama betiğinizin içinde eşit güçte bir gizli anahtar basmak için CLI panelinin openssl, Node veya Python tek satırlığını kullanın ve her komutun ürettiği bayt uzunluklarını ve kodlamaları anlamak için bu sayfayı kullanın.
JWT İmzalamayı Güvenle Öğretme
Bir ekibe HS256'nın nasıl çalıştığını gerçek bir üretim anahtarını hiç açığa çıkarmadan anlatın — ekranda tek kullanımlık bir gizli anahtar üretin (siz açana kadar maskeli), JWT Oluşturucu ile örnek bir token imzalayın ve JWT Çözücü ile doğrulayın; böylece tüm imzala-ve-doğrula döngüsü görünür olsun.
HS256, HS384 ve HS512 Anahtar Boyutlarını Karşılaştırma
Hangi HMAC varyantında standartlaşacağınıza mı karar veriyorsunuz? Gereken anahtar uzunluğunun ve kodlanmış dizenin nasıl büyüdüğünü görmek için algoritmalar arasında geçiş yapın — 43, 64 ve 86 base64url karakter — ve yapılandırmaya işlemeden önce sisteminize uyan güç-token boyutu dengesini seçin.
Yerel Geliştirme İçin Anahtar Üretme
Bir yerel kimlik doğrulama akışını çalıştırmak için hızlı, geçerli bir gizli anahtar mı gerekiyor? Tek tıklamayla bir tane üretin, .env için kopyalayın ve önünüz açılsın — dağıtımdan önce değiştirmeyi unutacağınız bir yer tutucu yerine gerçek bir CSPRNG anahtarıyla.

Oluşturucu Nasıl Çalışır

crypto.getRandomValues (CSPRNG)
Gizli anahtarlar, Web Crypto'nun kriptografik olarak güvenli sözde rastgele sayı üreticisi olan crypto.getRandomValues ile bir Uint8Array doldurularak üretilir. Web Crypto anahtar üretiminin de dayandığı aynı entropi kaynağıdır. Math.random hiçbir yerde kullanılmaz — istatistiksel olarak öngörülebilirdir ve herhangi bir kriptografik anahtar için uygunsuzdur.
RFC 7518 §3.2 Anahtar Boyutlandırma
Algoritma başına bayt sayısı, bir HMAC anahtarının en az hash çıktısı boyutunda olması gerektiği yönündeki JSON Web Algorithms gereksinimini izler: HS256 (SHA-256) için 32 bayt, HS384 (SHA-384) için 48, HS512 (SHA-512) için 64. Algoritmayı seçmek minimumu belirler; oluşturucu, spesifikasyon zemininin altında bir anahtar üretmez.
RFC 4648 Kodlamaları (base64url / base64 / hex)
Ham baytlar RFC 4648 alfabeleriyle kodlanır. base64url, dolgusuz URL açısından güvenli alfabeyi kullanır (32 bayt → 43 karakter), standart base64; +, / ve = dolgusu kullanır (→ 44 karakter) ve hex, bayt başına iki karakter yazar (→ 64 karakter). Biçim değiştirmek aynı baytları yeniden kodlar — altta yatan entropi değişmez.
base64url Neden Varsayılan
JWT bileşenlerinin kendisi base64url ile kodlanmıştır ve URL açısından güvenli, dolgusuz alfabe, base64url'deki bir gizli anahtarın bir başlıkta, bir URL'de veya bir yapılandırma dosyasında asla kaçışlamaya gerek duymaması anlamına gelir. Standart base64'ün + ve / ve sondaki = işaretleri bu bağlamlarda sorun çıkarabilir; bu yüzden base64url, bir JWT_SECRET için temkinli varsayılandır.
.env için Kopyala Biçimlendirmesi
.env için kopyala, JWT_SECRET= ifadesini tek satırda, etrafında tırnak olmadan üretir — dotenv tarzı yükleyicilerin değişiklik olmadan ayrıştırdığı biçim. Ham gizli anahtar, bir .env dosyasında tırnak gerektirecek karakterler asla içermez; bu yüzden satır olduğu gibi yapıştırmak için güvenlidir.
Eşdeğer Güçte CLI Komutları, Bayt Bayt Aynı Değil
CLI panelinin openssl rand -base64 N, Node randomBytes(N).toString('base64url') ve Python secrets.token_urlsafe(N) komutları, seçilen algoritma için N güvenli rastgele bayt çeker. Eşit güçte anahtarlar üretirler, aynı dizeyi değil — openssl dolgulu standart base64 verir; bu yüzden alfabe ve sondaki karakterler bu aracın base64url varsayılanından farklıdır.

JWT Gizli Anahtarı En İyi Uygulamaları

Anahtar Uzunluğunu Algoritmayla Eşleştirin
RFC 7518 §3.2'nin gerektirdiği gibi HS256 için en az 32 bayt, HS384 için 48 ve HS512 için 64 bayt kullanın. Bu oluşturucu bunu sizin için yapar, ama bir anahtarı elle boyutlandırırsanız, asla hash çıktısı uzunluğunun altına inmeyin — boyutu yetersiz bir HMAC anahtarı hem imzayı zayıflatır hem de katı kütüphaneler tarafından reddedilebilir.
Daima Bir CSPRNG ile Üretin, Asla Bir Şifreyle Değil
Bir JWT gizli anahtarı, kimsenin ezberlemesine gerek olmayan bir makine kimlik bilgisidir; bu yüzden tam entropiyi harcayın: bir parola dizesi, bir sözlük sözcüğü veya elle yazılmış bir dize değil, kriptografik olarak güvenli rastgele bir anahtar kullanın. İnsan tarafından seçilen gizli anahtarlar, JWT kırma araçlarının otomatikleştirdiği çevrimdışı kaba kuvvet saldırıları için en kolay hedeftir.
Her Ortam İçin Benzersiz Bir Gizli Anahtar Kullanın
Geliştirme, hazırlık ve üretimin her biri kendi JWT_SECRET'ine sahip olmalıdır. Tek bir anahtarı paylaşmak, düşük riskli bir ortamdaki bir sızıntının her yerde token taklit etmesi ve rotasyonun ya hep ya hiç olması demektir. Her ortam için buradan ayrı bir gizli anahtar üretin ve her birini kendi secret yöneticisi kapsamında saklayın.
Doğrularken Algoritmayı Sabitleyin
Doğrulayan tarafta daima açık bir algoritma beyaz listesi geçirin — jsonwebtoken'da algorithms: ['HS256'], PyJWT'de algorithms=["HS256"] — ve token içindeki alg alanına asla güvenmeyin. Token'ın kendi beyan ettiği algoritmayı kabul etmek, gizli anahtarınız ne kadar güçlü olursa olsun klasik alg-confusion ve alg:none taklit saldırılarına olanak tanır.
Bir kid Başlığı ve Örtüşen Anahtarlarla Rotasyona Sokun
İmzalı token'ları bir anahtar tanımlayıcı (kid) ile etiketleyin ve etkin anahtarları bir JWKS uç noktası aracılığıyla yayımlayın; böylece kesinti olmadan rotasyona sokabilirsiniz: eski anahtarı token'larının süresi dolana kadar kabul etmeye devam ederken yeni token'ları yeni anahtarla imzalayın. Bir saldırı şüphesinde örtüşmeyi atlayın ve eski anahtarı anında iptal edin.

Sık Sorulan Sorular

Oluşturduğum JWT gizli anahtarı sunucunuza gönderiliyor mu?
Hayır. Gizli anahtar, platformun kriptografik olarak güvenli rastgele sayı üreticisi olan crypto.getRandomValues ile tamamen tarayıcınızda oluşturulur. Baytlar cihazınızda üretilir, yerel olarak kodlanır ve yalnızca size gösterilir. Hiçbir şey yüklenmez, hiçbir şey günlüğe kaydedilmez, hiçbir şey diske yazılmaz ve hiçbir şey üçüncü bir tarafa gönderilmez — Geliştirici Araçları → Ağ sekmesini açın; Yeniden Oluştur veya Kopyala'ya tıkladığınızda sıfır istek tetiklendiğini göreceksiniz. Bu, burada ürettiğiniz bir anahtarın belirdiği anda yalnızca size ait olduğu anlamına gelir; hiçbir sunucu onu asla görmez. İmzalama gizli anahtarını, ilkesel olarak verdiği her anahtarın bir kopyasını saklayabilecek bir web sitesi yerine istemci tarafında üretmenin bütün amacı budur.
Güvenli bir JWT gizli anahtarını nasıl oluştururum?
Üç adım. Önce, uygulamanızın kullandığı imzalama algoritmasını seçin — HS256, HS384 veya HS512 — ve oluşturucu, anahtarı o varyant için RFC 7518 §3.2 minimumuna (32, 48 veya 64 bayt) anında boyutlandırır; böylece asla elle bir sayı seçmez veya boyutu yetersiz bir anahtar riskine girmezsiniz. İkinci olarak, kodlamayı base64url'de (JWT'nin yerel, URL açısından güvenli biçimi) bırakın ya da yapılandırma yükleyiciniz bunlardan birini bekliyorsa base64 veya hex'e geçin. Üçüncü olarak, Kopyala'ya tıklayın — veya yapıştırmaya hazır bir JWT_SECRET=… satırı almak için .env için kopyala'ya tıklayın — ve değeri bir secret yöneticisinde veya ortam değişkeninde saklayın, asla kaynak kontrolünde değil. Her bayt crypto.getRandomValues'tan geldiğinden, 32 baytlık bir anahtar zaten 256 bit entropi taşır; bu da insan tarafından seçilen gizli anahtarları kıran çevrimdışı kaba kuvvet saldırılarının çok ötesindedir. Komut satırını mı tercih edersiniz? Araç ayrıca bir terminale yapıştırabileceğiniz eşdeğer openssl, Node ve Python tek satırlıklarını da yazdırır.
Bir HS256 JWT gizli anahtarı ne kadar uzun olmalı?
En az 32 bayt (256 bit). RFC 7518 §3.2 — JSON Web Algorithms spesifikasyonu — HMAC imzaları için "hash çıktısıyla aynı boyutta (örneğin HS256 için 256 bit) veya daha büyük bir anahtar KULLANILMALIDIR" der. HS256, HMAC-SHA-256 (256 bit hash) ile imzalar; bu nedenle minimum anahtar 32 bayttır; HS384, HMAC-SHA-384 kullanır ve en az 48 bayt (384 bit) gerektirir; HS512, HMAC-SHA-512 kullanır ve en az 64 bayt (512 bit) gerektirir. Bu oluşturucu, algoritmayı seçtiğinizde doğru minimumu otomatik olarak belirler ve daha uzun bir anahtar isteyebilirsiniz. Daha kısa bir anahtar yalnızca daha zayıf değildir — spesifikasyonu ihlal eder ve bazı kütüphaneler onunla imzalamayı reddeder.
base64url, base64 ve hex arasındaki fark nedir ve hangisini seçmeliyim?
Üçü de aynı rastgele baytları kodlar; yalnızca karakter alfabesinde farklılaşırlar, entropide değil. base64url, JWT'nin yerel kodlamasıdır — URL açısından güvenli bir alfabe kullanır (+ ve / yerine - ve _) ve dolguyu atlar; bu yüzden bir token'da, bir URL'de veya bir başlıkta asla kaçışlamaya gerek duymaz. Burada varsayılan olmasının nedeni budur. Standart base64; +, / ve = dolgusu kullanır; yalnızca bir yapılandırma yükleyicisi veya kütüphane özellikle klasik base64 beklediğinde seçin. hex (base16), her baytı 0–f arası iki karakter olarak yazar; sistemin alfasayısal olmayan karakterleri reddettiği durumlarda işe yarayan, daha uzun ama belirsizliği olmayan bir dize üretir. Bir JWT_SECRET ortam değişkeni için base64url en güvenli varsayılandır; tam dizeyi saklayıp imzalama kütüphanenize değiştirmeden geri verdiğiniz sürece üçü de çalışır.
Zayıf bir JWT gizli anahtarı kırılabilir mi?
Evet — ve bu, HMAC ile imzalanmış JWT'lerdeki en büyük tek risktir. HS256/384/512 tek bir paylaşılan gizli anahtar kullandığından, bir token'a sahip olan herkes imzaya karşı hız sınırı olmadan ve sunucuyla hiçbir temas olmadan çevrimdışı bir kaba kuvvet veya sözlük saldırısı çalıştırabilir. hashcat (mod 16500 JWT'yi hedefler) ve jwt_tool gibi araçlar tam da bunun için yapılmıştır; sıradan GPU'larda düşük entropili bir gizli anahtar genellikle saniyeler ile saatler içinde düşebilir ve bir sözlük sözcüğü veya sızdırılmış bir şifre neredeyse anında düşebilir. Bu oluşturucudan gelen tam entropili 32 baytlık rastgele bir anahtar ise kaba kuvvetin çok ötesindedir. Bir saldırgan gizli anahtarı bir kez kurtardığında herhangi bir token'ı taklit edebilir — yönetici ayrıcalıkları iddia eden bir token dahil — bu yüzden gizli anahtarın gücü isteğe bağlı değildir. İmzalama anahtarını bir CSPRNG ile üretin, asla insan tarafından seçilen bir dizeyle değil. Zayıf gizli anahtar, alg-confusion ve token-replay saldırılarının daha derinlemesine ele alındığı bir inceleme için JWT güvenliği en iyi uygulamaları rehberimize bakın.
JWT gizli anahtarı olarak bir şifre kullanabilir miyim?
Kullanabilirsiniz, ama kullanmamalısınız. İnsan tarafından akılda tutulabilen bir şifre — uzun bir parola dizesi bile — 32 rastgele bayttan çok daha az entropi taşır; bu da onu yukarıda anlatılan çevrimdışı kaba kuvvet ve sözlük saldırıları için gerçekçi bir hedef yapar. JWT gizli anahtarları makineden makineye kimlik bilgileridir; kimsenin onları ezberlemesine gerek yoktur, bu yüzden entropiyi akılda tutulabilirlik uğruna takas etmek için hiçbir neden yoktur. Buradan rastgele bir gizli anahtar üretin, bir secret yöneticisinde veya bir ortam değişkeninde saklayın ve uygulamanızın onu okumasına izin verin. Farklı bir amaç için akılda tutulabilir kimlik bilgileri gerekiyorsa, bu bir Şifre Üretici işidir veya kullanıcı şifrelerini saklamak için bcrypt Oluşturucu'dan tek yönlü bir karma işidir — bir token imzalama anahtarı işi değil.
Canlı token'ları bozmadan bir JWT gizli anahtarını nasıl rotasyona sokarım?
Sert bir geçiş yerine örtüşmeyle rotasyona sokun. İmzaladığınız token'lara bir anahtar tanımlayıcı (kid başlığı) ekleyin; böylece bir doğrulayıcı hangi gizli anahtara göre denetleyeceğini bilir ve etkin anahtarlarınızı yayımlayın — genellikle servislerinizin okuduğu bir JWKS uç noktası aracılığıyla. Rotasyon için: buradan yeni bir gizli anahtar üretin, yeni token'ları yeni kid ile imzalamaya başlarken önceki anahtarı doğrulama için kabul etmeye devam edin ve eski anahtarla imzalanan her token'ın süresi dolduktan sonra ancak o anahtarı emekliye ayırın. Bu örtüşme penceresi, hiçbir geçerli oturumun ortada geçersiz kılınmaması anlamına gelir. Bir saldırı şüphesinde nazik örtüşmeyi atlayın: anında rotasyona sokun, eski anahtarı kabul edilen kümeden çıkarın ve yeniden kimlik doğrulamayı zorlayın; böylece sızdırılan token'lar bir anda doğrulanmaz olsun.
Bir HMAC (HS*) anahtarı, bir RSA veya ECDSA (RS*/ES*) anahtarından nasıl farklıdır?
Aynı sorunu zıt anahtar modelleriyle çözerler. HS256/384/512 HMAC algoritmalarıdır: hem imzalayan hem doğrulayan tek bir simetrik gizli anahtar kullanırlar — bu aracın ürettiği türden — bu yüzden bir token'ı doğrulayabilen her taraf onu taklit de edebilir. Bu basit ve hızlıdır ve tek bir servis kendi token'larını hem verip hem denetlediğinde idealdir. RS* (RSA) ve ES* (ECDSA) asimetriktir: bir anahtar çifti kullanırlar; burada bir özel anahtar imzalar ve ayrı bir genel anahtar yalnızca doğrular. Genel anahtarı, imzalama anahtarını asla açığa çıkarmadan token'ları doğrulaması gereken herkese verirsiniz — bir kimlik sağlayıcının, birçok bağımsız servisin doğruladığı token'lar verdiği durumlarda doğru seçim. Bu oluşturucu yalnızca HMAC simetrik gizli anahtarlar üretir. Ürettiğiniz anahtarla gerçek bir token'ı oluşturup imzalamak için JWT Oluşturucu'yu kullanın; bir token'ı incelemek ve doğrulamak için JWT Çözücü'yü kullanın.

Bcrypt Karma Oluşturucu ve Doğrulayıcı

Güvenlik Araçları

bcrypt şifre karmalarını çevrimiçi oluşturun ve doğrulayın — ayarlanabilir maliyet, $2b$/$2a$/$2y$ önekleri. %100 tarayıcınızda; şifreniz asla yüklenmez.

JWT Çözücü

Güvenlik Araçları

Ücretsiz JWT çözücümüzle JWT token'larını online çözün. header, payload, signature, son kullanma, algoritma ve claim'leri anında inceleyin. %100 tarayıcıda çalışır — token'ınız cihazınızdan ayrılmaz. Kayıt yok, izleme yok.

JWT Oluşturucu ve Kodlayıcı

Güvenlik Araçları

Ücretsiz online JWT oluşturucu ve kodlayıcı. header ve payload'ı oluşturun, HS256, RS256 ya da ES256 ile anında imzalayın. %100 tarayıcıda çalışır — gizli anahtarınız ve özel anahtarınız cihazınızdan ayrılmaz.

MD5 Özet Üretici ve Dosya Sağlama Aracı

Güvenlik Araçları

MD5, SHA-256, SHA-1 ve SHA-512 özetlerini online ücretsiz üretin. Tarayıcınızda metin veya dosya özeti alın, sağlama değerlerini doğrulayın ve sonuçları kopyalayın. Kayıt gerekmez.

Rastgele Şifre Üretici — Özelleştirilebilir ve Güvenli

Güvenlik Araçları

Anında güçlü rastgele şifreler üretin — ücretsiz, %100 tarayıcınızda. Uzunluk ve karakterleri özelleştirin, entropi analiziyle 50'ye kadar toplu üretim.

SHA-1 Özet Üretici (160-bit Eski Algoritma)

Güvenlik Araçları

SHA-1 özetlerini tarayıcınızda üretin — 40 karakterlik hex çıktısı, yükleme yok. Git parmak izleri, eski sertifika kontrolleri ve taşıma denetimleri için eski araç. Veriler cihazınızdan ayrılmaz.