Ошибка WireGuard: Invalid cryptographic private key / public key format
- Команда
wg-quick up wg0завершается аварийно:Configuration parsing error: Key is not valid base64 or has incorrect length. - В выводе утилиты:
Invalid cryptographic key: Line 3 of /etc/wireguard/wg0.conf. - Сетевой интерфейс WireGuard не создается в системе.
1. Архитектура ключей WireGuard
WireGuard использует криптографию на эллиптических кривых Curve25519. Ключ представляет собой 32-байтный массив данных, закодированный строго в формате Base64. Длина валидной строки ключа всегда составляет ровно 44 символа и заканчивается знаком равенства = (например, 4aB...z9=).
2. Проверка и генерация валидной пары ключей
# Генерация приватного ключа
umask 077
wg genkey > private.key
# Генерация соответствующего публичного ключа
wg pubkey < private.key > public.key
# Проверка длины ключа (должно быть ровно 44 символа без пробелов)
wc -c private.key public.key3. Устранение скрытых символов переноса строк (CRLF / BOM)
Если конфигурационный файл редактировался в текстовом редакторе Windows (Notepad), символы \r\n или заголовок UTF-8 BOM делают ключ невалидным для парсера Linux:
# Очистка невидимых символов и пробелов в конфиге
sed -i 's/\r$//' /etc/wireguard/wg0.conf
sed -i 's/[[:space:]]*$//' /etc/wireguard/wg0.conf4. Проверка синтаксиса файла конфигурации
Убедитесь, что приватный и публичный ключи не перепутаны местами:
[Interface]
Address = 10.0.0.2/24
# Сюда вставляется ТОЛЬКО PrivateKey (44 символа)
PrivateKey = aaaaaaaa...aaaa=
[Peer]
# Сюда вставляется ТОЛЬКО PublicKey удаленной стороны (44 символа)
PublicKey = bbbbbbbb...bbbb=
Endpoint = 198.51.100.1:51820
AllowedIPs = 0.0.0.0/0 Частые вопросы (FAQ)
Почему ключ WireGuard обязательно имеет длину 44 символа?
Сырой ключ Curve25519 имеет размер 32 байта (256 бит). При кодировании алгоритмом Base64 каждые 3 байта превращаются в 4 символа (32 * 4 / 3 = 42.66), что с учетом паддинга '=' дает ровно 44 символа.
Можно ли использовать пароль вместо ключа в WireGuard?
Нет, WireGuard не поддерживает пароли или традиционные логины. Аутентификация выполняется исключительно по криптографическим асимметричным ключам.
Что такое PresharedKey в WireGuard?
Это дополнительный 256-битный симметричный ключ (генерация: wg genpsk), обеспечивающий квантово-устойчивый уровень защиты поверх Curve25519.
Как быстро проверить валидность строки ключа без запуска туннеля?
Выполните команду: echo 'ваш_ключ' | base64 -d | wc -c. Если вывод равен 32 — ключ валиден.