На одном сервере клиенты зависают на некоторое время и затем переподключаются, а другой сразу отклоняет соединения с сообщением о размере ключа. Они выглядят как разные ошибки, а это одна и та же ошибка, направленная в противоположные стороны. Криптография рукопожатия имеет стоимость, которая растёт с размером параметров, и имеет нижний предел, ниже которого современные библиотеки не опускаются. Подбор размера материала — это и есть контрольный список, и первый пункт — решить, какая из двух ошибок у вас на самом деле.

Прочитайте сбой, прежде чем что-либо перегенерировать

Время говорит о большей части. Рукопожатие, которое занимает несколько секунд и затем умирает, обычно означает, что вычисление пережило терпение собеседника, что указывает на параметры, слишком большие для оборудования или для тайм-аута. Немедленный отказ, называющий размер ключа или группы, указывает в другую сторону, на материал, который библиотека вообще не примет.

Этим двум нужны противоположные исправления, и именно здесь ошибается большинство попыток. Перегенерация параметров на 8192 бита на клиенте, который уже отклонил маленькую группу, ухудшает медленный случай, ничего не делая для быстрого. Запишите, какой симптом вы наблюдали, прежде чем трогать файл.

Затем проверьте, что требуется от собеседника. Сервер, настроенный на большую группу конечного поля, заставляет каждого клиента тратить одно и то же процессорное время при каждом повторном согласовании, а не только при подключении. Если проблема появляется через равные промежутки, а не при запуске, этот промежуток — сильная подсказка, какая настройка дорогая. Повторное согласование повторяет всё вычисление, поэтому зависание, возвращающееся каждый час, обычно та же стоимость, оплаченная снова.

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

Работа Diffie-Hellman и RSA быстро растёт с размером ключа, и всё это происходит до того, как по туннелю пойдёт хоть какой-то трафик. На маленьком маршрутизаторе или маломощном клиенте достаточно большая группа может вытолкнуть обмен за тайм-аут другой стороны, так что соединение повторяет попытку или просто выглядит зависшим без какой-либо ошибки.

Исправление — спуститься до размера, который поддерживает каждый собеседник и который каждое устройство может спокойно вычислить. Ключ RSA на 2048 бит и группа на 2048 бит остаются широко совместимой базовой линией; больше помогает только тогда, когда все стороны согласны и процессор может оплачивать это при каждом повторном согласовании. Всё выше этой базовой линии — намеренный компромисс, а не обновление.

Размер — не оценка, и наибольшее число в таблице сравнения не является автоматически правильным выбором. Выберите наименьшее значение, которое допускает ваша политика и принимают все собеседники, а затем измерьте рукопожатие, вместо того чтобы предполагать улучшение. Меньшая группа, которая всё ещё выходит за тайм-аут, говорит вам, что размер никогда не был всей историей.

Быстрый случай: группа, которую библиотека отклоняет

Современные сборки OpenSSL отклоняют самые маленькие группы конечного поля сразу, а повышенный уровень безопасности поднимает нижнюю границу ещё выше. Прошивка маршрутизатора, которая несёт файл параметров возраста в десятилетия, — обычный источник, а симптом — соединение, которое сразу терпит неудачу с сообщением, называющим группу или размер ключа. Ничто в этом сбое не является периодическим, и именно это делает его легко узнаваемым.

Замените файл вместо того, чтобы править конфигурацию и обходить проверку. Сгенерируйте актуальную группу, проверьте её, а затем установите туда, где демон действительно её читает. Держите старый файл, пока клиент не подключится успешно с новым:

openssl dhparam -out /etc/openvpn/ffdhe2048.pem 2048
openssl dhparam -in /etc/openvpn/ffdhe2048.pem -check -noout
ls -l /etc/openvpn/ffdhe2048.pem

Команда проверки проверяет файл и при успехе не выводит ничего полезного; список подтверждает, что вы заменили файл, который загружает служба, а не устаревшую копию рядом. Направьте конфигурацию на этот путь, перезапустите демон и убедитесь, что клиент, который раньше терпел неудачу, теперь завершает рукопожатие.

Если сервер также задаёт уровень безопасности или профиль сертификата, прочитайте их, прежде чем заключить, что группа была неверной. Профиль, требующий более строгого класса, может отклонить материал, который значение по умолчанию приняло бы, и удаление этой настройки — более узкое изменение, чем глобальное отключение проверки.

Выберите размер для собеседника и оборудования

Выясните, что выдерживает дальняя сторона, прежде чем генерировать что-то экзотическое. Устройство, слишком старое для группы на 2048 бит, — это устройство на замену, поскольку направление сервера на более слабую группу лишь превращает жалобу на совместимость в простой. Устойчивые исправления движутся к более новому программному обеспечению, а не к более старым параметрам. У каждого временного исключения в этой области есть привычка становиться постоянной конфигурацией.

Там, где предел — процессор сервера, смените алгоритм, вместо того чтобы опускаться ниже политики. Обмен ключами на эллиптической кривой, например X25519, радикально дешевле большой группы конечного поля и широко поддерживается, что делает его лучшим ответом на жалобу о производительности, чем меньший модуль RSA.

Что бы вы ни выбрали, проверьте одним реальным соединением и следите, сколько длится рукопожатие, а не только соединится ли оно в итоге. Соединение, которое удаётся за двенадцать секунд, имеет ту же корневую причину, что и то, которое срывается на пятнадцати.

Запишите выбор, чтобы пересборка не могла его отменить

Держите файл параметров под управлением конфигурацией и рядом запишите размер, причину и дату. Пересобранный сервер, который тихо генерирует собственные значения по умолчанию, — это путь, которым та же ошибка возвращается через шесть месяцев, и никто не может объяснить исходное решение.

Запишите ту же информацию рядом с конечной точкой и профилем, чтобы обзор не должен был восстанавливать её из размера файла. Когда следующее соединение зависнет, эта заметка — разница между проверкой на пять минут и новым расследованием. Она также мешает следующему инженеру решить медленный случай исправлением, предназначенным для быстрого.

Похожие статьи