Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

WG_INVALID_KEY_FORMAT Сетевое оборудование и VPN

Ошибка WireGuard: Invalid cryptographic private key / public key format

Обновлено: 24.08.2026 · Официальная документация ↗
  • Команда 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.key

3. Устранение скрытых символов переноса строк (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.conf

4. Проверка синтаксиса файла конфигурации

Убедитесь, что приватный и публичный ключи не перепутаны местами:

[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 — ключ валиден.

Полезные материалы
Рекомендуем