Anahtarlar tarayıcınızın kriptografik rastgele sayı kaynağıyla (crypto.getRandomValues) cihazınızda üretilir; sunucuya gönderilmez ve kaydedilmez. Üretilen anahtarı kaynak koduna veya herkese açık depolara yazmayın; ortam değişkeni ya da gizli anahtar kasasında saklayın.
Kısaca cevap
Secret key oluşturucu, JWT imzalama, oturum çerezleri, API anahtarları ve uygulama yapılandırmaları için kriptografik olarak güvenli rastgele anahtarlar üretir. Uzunluğu (128–512 bit) ve biçimi (Base64, Base64URL, hex veya harf-rakam) seçin; anahtarlar anında oluşur. HS256 ile imzalanan JWT'ler için en az 256 bit (32 bayt) önerilir. Anahtarlar tarayıcınızda üretilir, sunucuya gönderilmez.
Bu sayfada
Nasıl kullanılır?
- Uzunluğu seçin: Varsayılan 32 bayt (256 bit) çoğu kullanım için uygundur.
- Biçimi seçin: Kullanacağınız kütüphanenin beklediği biçimi seçin. Emin değilseniz Base64URL, hem ortam değişkenlerinde hem URL'lerde sorunsuz çalışır.
- Adedi belirleyin ve “Yeniden üret” ile yeni anahtarlar oluşturun. Her satırdaki kopyala düğmesiyle anahtarı panoya alın.
Hangi uzunluk, hangi biçim?
| Kullanım | Önerilen uzunluk | Not |
|---|---|---|
| JWT HS256 | 32 bayt (256 bit) | Anahtar, özet uzunluğundan kısa olmamalı |
| JWT HS384 / HS512 | 48 / 64 bayt | Algoritmanın özet uzunluğu kadar |
| Oturum ve çerez imzalama | 32–64 bayt | Çerçevenin belgesindeki biçime bakın |
| AES-256 anahtarı | 32 bayt | Genellikle Base64 veya hex olarak saklanır |
| API anahtarı | 32 bayt | Harf-rakam biçimi kopyalaması kolaydır |
Biçim yalnızca aynı rastgele baytların nasıl yazıldığını değiştirir: 32 baytlık bir anahtar Base64'te 44, Base64URL'de 43, hex'te 64 karakterdir. Harf-rakam biçiminde aynı güvenlik için 43 karakter üretilir. Önemli olan uzunluk ve rastgeleliktir.
Neden şifre değil, rastgele anahtar?
“benimgizlianahtarim2024” gibi insan yapımı bir değer, JWT imza anahtarı olarak kullanıldığında sözlük saldırısıyla bulunabilir. Saldırgan elindeki tek bir token ile anahtar tahminlerini çevrimdışı ve çok hızlı deneyebilir; anahtarı bulduğunda istediği kullanıcı adına geçerli token üretebilir. 256 bitlik rastgele bir anahtarı bu şekilde bulmak ise mümkün değildir. Ayrıntılar için JWT secret key oluşturma yazımıza bakabilirsiniz.
Komut satırında aynı işlem
openssl rand -base64 32
openssl rand -hex 32
Programlama dillerinde de güvenli kaynaklar vardır: Python'da secrets.token_urlsafe(32), Node.js'de crypto.randomBytes(32), .NET'te RandomNumberGenerator.GetBytes(32). Ayrıntılar Python secrets modülü ve CSPRNG nedir yazılarında.
Anahtarı güvenle saklamak
- Anahtarı kaynak koduna yazmayın ve Git deposuna eklemeyin;
.envdosyalarını.gitignoreiçine alın. - Sunucuda ortam değişkeni, kullandığınız bulut sağlayıcısının gizli anahtar kasası veya çerçevenin gizli yapılandırma özelliğini kullanın.
- Geliştirme, test ve canlı ortam için ayrı anahtarlar üretin.
- Anahtarın sızdığından şüpheleniyorsanız hemen yenisiyle değiştirin; JWT kullanıyorsanız eski anahtarla imzalanmış token'lar geçersiz olur ve kullanıcıların yeniden giriş yapması gerekir.
Kullanıcı şifresi gerekiyorsa şifre üretici, benzersiz kimlik değeri gerekiyorsa GUID oluşturucu daha uygun araçlardır; GUID'ler gizli anahtar olarak kullanılmamalıdır.
Çerçevelere göre kullanım
| Ortam | Anahtarın konduğu yer | Önerilen biçim |
|---|---|---|
| Node.js (jsonwebtoken) | Ortam değişkeni, ör. JWT_SECRET | Base64URL veya hex |
| ASP.NET Core | User Secrets (geliştirme), ortam değişkeni veya anahtar kasası (canlı) | Base64 |
| Laravel | .env içindeki APP_KEY (base64: önekiyle) | Base64, 32 bayt |
| Django | SECRET_KEY ayarı, ortam değişkeninden okunarak | Harf-rakam, 50+ karakter |
Laravel ve Django gibi çerçevelerin kendi anahtar üretme komutları da vardır; bu araç, komut satırına erişiminiz olmadığında veya anahtarı farklı bir biçimde istediğinizde pratik bir alternatiftir. Hangi yolu seçerseniz seçin, anahtarın uzunluğu ve rastgele üretilmiş olması belirleyicidir.
Sık sorulan sorular
JWT secret key kaç karakter olmalı?
HS256 için en az 256 bit (32 bayt) rastgelelik önerilir. Bu, Base64'te 44, hex'te 64 karakterlik bir anahtara karşılık gelir.
Üretilen anahtarlar bir yere kaydediliyor mu?
Hayır. Anahtarlar tarayıcınızın kriptografik rastgele sayı kaynağıyla cihazınızda üretilir; sunucuya gönderilmez ve kaydedilmez.
Base64 mü hex mi kullanmalıyım?
İkisi de aynı güvenliği sağlar. Kullandığınız kütüphane veya çerçeve hangisini bekliyorsa onu seçin; emin değilseniz Base64URL ortam değişkenlerinde sorunsuz çalışır.
GUID'i secret key olarak kullanabilir miyim?
Önerilmez. GUID'ler benzersiz kimlik için tasarlanmıştır; bazı sürümleri tahmin edilebilir bölümler içerir ve 122 bitten az rastgelelik taşır.