Генератор JWT-секрету
Випадкові секретні ключі HS256, HS384 і HS512 у форматі hex або Base64, готові для вашого .env. Усе виконується локально — нічого не надсилається на сервер.
- Вхід
- HS256 · HS384 · HS512
- Вихід
- Hex · Base64 · Base64URL · .env
HS256 потребує щонайменше 32 байтів.
Ваш секрет
Ключ на 256 бітів · HS256 · Кількість символів: 0
.env рядок
JWT_SECRET=Створено на вашому пристрої через crypto.getRandomValues. Нічого не надсилається й не зберігається.
Секрет, яким варто підписувати
JWT, підписаний за допомогою HMAC, настільки надійний, наскільки надійний його секрет. Той, хто його вгадає, зможе створювати токени, яким довірятиме ваш сервер, а короткі або придумані людиною секрети — це саме те, з чого починають програми для офлайн-підбору. Цей генератор бере ключ із криптографічного генератора випадкових чисел вашого браузера й робить його такої довжини, якої вимагає алгоритм.
Якою має бути довжина секрету
- HS256 потребує щонайменше 32 байтів (256 бітів). Коротший секрет слабший за хеш, з яким він використовується, і багато бібліотек його відхиляють.
- HS384 потребує щонайменше 48 байтів (384 біти).
- HS512 потребує щонайменше 64 байтів (512 бітів).
- Довший теж підходить. Ключ, довший за розмір блока хеша, спочатку хешується, тож понад 64 байти для HS256 або 128 байтів для HS512 нічого не виграти.
Як використовувати секрет
- Тримайте його поза кодом. Зберігайте його в змінній середовища або в менеджері секретів; «Скопіювати як .env» дає готовий до вставлення рядок.
- Зважайте на кодування. Одні бібліотеки приймають секрет як текст, інші очікують сирі байти в Base64. Якщо ви декодуєте його в байти, оберіть тут Base64 або Base64URL; якщо бібліотека використовує рядок як є, найнадійніший вибір — hex.
- Заміна секрету розлогінює всіх. Усі токени, підписані старим секретом, перестають проходити перевірку, тому плануйте ротацію заздалегідь, а не робіть її нашвидкуруч.
- Перевірте перед розгортанням. «Перевірити в декодері JWT» відкриває декодер із прикладом токена, підписаного цим секретом, щоб ви побачили, як виглядає дійсний підпис.
Поширені запитання
- Як згенерувати секретний ключ JWT?
- Оберіть алгоритм, який використовує ваш сервер, і секрет потрібної довжини буде згенеровано одразу. Виберіть кодування, яке очікує ваша бібліотека, а потім скопіюйте секрет або готовий рядок .env. Натисніть «Згенерувати знову», щоб отримати новий.
- Якою має бути довжина секрету JWT для HS256?
- Щонайменше 32 байти, тобто 256 бітів: 64 символи hex або 43 символи Base64URL. Коротший секрет слабший за хеш SHA-256, з яким він використовується.
- Чи безпечно генерувати секрет у браузері?
- Так. Ключ створюється через crypto.getRandomValues — той самий криптографічний генератор, який браузери використовують для TLS, і створюється на вашому пристрої. Його не надсилають на сервер, не журналюють і не зберігають.
- Що обрати для секрету JWT: hex чи Base64?
- Обидва формати містять однакові випадкові байти. Hex найнадійніший, якщо бібліотека сприймає секрет як звичайний текст; Base64 або Base64URL підходить, якщо бібліотека спочатку декодує секрет у сирі байти, як цього вимагають багато параметрів конфігурації.
- Чи можна використовувати пароль як секрет JWT?
- Це погана ідея. Паролі короткі й передбачувані порівняно з 32 випадковими байтами, а будь-хто, хто має один із ваших токенів, може вгадувати секрет офлайн так швидко, як дозволяє його обладнання.