WireGuard повідомляє, що довжина закритого ключа неправильна: що робити далі?
Ключ із 32 байтів у base64 займає 44 символи. Вирішіть, чи текст пошкоджено, чи особа неправильна, перш ніж щось створювати заново.
Повідомлення каже, що закритий ключ має неправильну довжину, і це формулювання вказує спершу на кодування, а вже потім на криптографію. Ключі WireGuard кодують 32 байти в base64, що дає 44 символи разом із завершальним заповненням, тому значення іншого розміру не є ключем, хоч би як випадково воно виглядало. Доповнення рядка доти, доки аналізатор його не прийме, створює правильно оформлене значення, яке жоден партнер ніколи не впізнає.
За цією помилкою ховаються дві різні задачі: полагодити текст дійсного ключа й замінити особу, якої у вас більше немає. Їхні наслідки різні, і одна з них робить недійсним інший кінець.
Чого очікує аналізатор
Ключ WireGuard — це 32 байти ключового матеріалу в base64 зі стандартним заповненням, що дає фіксований рядок із 44 символів. Інструменти відхиляють усе, що не декодується рівно в 32 байти, бо основна крива приймає 32-байтовий скаляр і нічого більше. Відкриті та закриті значення використовують одне й те саме кодування, тому аналізатор не може лише за форматом визначити, яке з них ви вставили. Саме ця неоднозначність створює половину плутанини навколо цієї помилки.
wg genkey | tee private.key | wg pubkey > public.key
base64 -d private.key | wc -c
wc -c private.key
wg show wg0 public-key
Якщо ваше значення декодується в 32 байти, довжина правильна, і скарга надходить з іншого місця файлу. Якщо воно декодується в щось коротше, у вас обрізаний матеріал, а не проблема форматування.
Пошкодження форматування чи неправильний матеріал?
Пошкодження форматування скупчуються по краях: лапки, додані оболонкою, мітка на кшталт private_key, скопійована разом зі значенням, перенесення рядка, вставлене клієнтом чату, або завершальний пробіл, що пережив вставлення. Кожна з цих змін змінює рядок, не змінюючи байти, тому їх вилучення відновлює початкову особу. Порівнюйте файл із записом про забезпечення символ за символом, а не видаляйте пунктуацію, доки аналізатор не замовкне.
Неправильний матеріал — інша ситуація. Пароль, ключ сертифіката або відкрите значення можуть виглядати правдоподібно й декодуватися в неправильний розмір. Жодне очищення не перетворює будь-яке з них на скаляр, якого очікує партнер. Цей випадок потребує нової особи, а не редагування.
Відкритий ключ у закритому полі
Найпоширеніша плутанина — відкрите значення, вставлене в закрите поле, або навпаки. Обидва є чинним base64 із 32 байтів, тому перевірка довжини проходить, а рукостискання згодом зазнає невдачі без корисного повідомлення. Закритий ключ — це скаляр, що породжує відкритий, тому це можна з'ясувати, вивівши відкрите значення й порівнявши його з тим, що авторизує партнер. Коли виведене значення не збігається із записом, у вас неправильна особа, а не друкарська помилка.
Заміна закритого ключа клієнта без оновлення авторизованого відкритого ключа на іншому кінці знову створює ту саму невідповідність, до того ж файл самого клієнта тепер виглядає сам узгодженим. Змінюйте обидва кінці однією операцією, інакше наступна людина налагоджуватиме не ту половину.
Полагодьте профіль, а потім доведіть рукостискання
Коли ключ декодується в правильний розмір і збігається з авторизованою парою, залишаються профіль і маршрут. Наведені нижче команди створюють свіжу пару за потреби, перевіряють декодований розмір наявного ключа й читають відкрите значення, яке інтерфейс справді використовує. Ніколи не вставляйте закрите значення в тікет або на сайт декодування.
wg genkey | tee new.key | wg pubkey > new.pub
base64 -d private.key | wc -c
ip route get 10.60.9.5
wg show wg0 latest-handshakes
Перевірка розміру відповідає, чи має матеріал форму ключа, а запит маршруту відповідає, чи дійде пакет до інтерфейсу. Рядок рукостискання, що лишається порожнім після обох перевірок, переносить діагностику на кінцеву точку партнера й дозволені адреси. Прочитайте відкритий ключ інтерфейсу проти запису про забезпечення ще раз, бо застарілий збережений профіль може виглядати правильним, тоді як активний відрізняється].
Запишіть, яке значення ви замінили й де міститься авторизована копія. Наступний, хто торкнеться цього партнера, має знати, який кінець змінився.