Почему добавление opt-verify не исправит ошибку шифрования OpenVPN
Эта опция проверяла согласованность строк опций и удалена в 2.7. Профиль, который всё ещё разбирается, ничего не доказывает про шифрование, TLS или слой сертификатов.
Вы находите совет добавить opt-verify, добавляете строку, а ошибка шифрования остаётся ровно там, где была. Такой результат предсказуем, потому что опция никогда не согласовывала шифр. Это была проверка согласованности опций, устаревшая в 2.6 и удалённая в 2.7, и профиль, который с ней всё ещё разбирается, тем самым ничего не обеспечил.
Полезно знать, что строка делала раньше, прежде чем заключать, что это недостающая часть. История также объясняет, почему сейчас она не может помочь.
Что опция обеспечивала раньше
Руководство для 2.6 помечает opt-verify как устаревшую и описывает прежнее поведение: сервер отбрасывает клиентов, объявленные опции которых не совпадают с его собственными, сравнивая такие вещи, как тип устройства и MTU. Эта проверка также зависит от того, что проверка согласованности опций остаётся включённой, поэтому сервер, работающий с disable-occ, никогда её не имел. Обратите внимание, из чего построено сравнение: из текста, описывающего конфигурацию другой стороны. Он ничего не говорит о том, какой шифр будет использовать канал данных.
Это первая причина, по которой флаг не может исправить ошибку шифрования. Выбор шифра определяется политикой data-ciphers и тем, что поддерживают обе стороны, а текстовая проверка согласованности ни расширяет этот список, ни выполняет согласование. Вторая причина — охват: проверка касается того, выглядят ли объявленные опции совместимыми, а не качества получившегося пути.
Что делает 2.7, когда видит строку
В 2.7 опции нет. Парсер всё ещё распознаёт имя, поэтому старый профиль загружается без синтаксической ошибки, и он сообщает, что опция удалена, а не пропускает её молча. Распознать имя и обеспечить поведение — разные вещи, и сейчас происходит только первое. Примечания к удалению называют причину: как только параметры можно согласовывать, две стороны могут законно иметь разные строки опций, договариваясь о соединении.
Поэтому профиль, который разбирается, не является доказательством того, что выполнялась какая-либо проверка допуска. Если единственный сигнал — что клиент подключился, вы узнали, что синтаксис был принят.
Где на самом деле живёт сбой
Сохраните первую конкретную ошибку, прежде чем что-либо менять, потому что последующие сообщения обычно являются её следствиями. Сбой согласования канала данных относится к утверждённой политике шифров и к возможностям, которые обе стороны действительно объявляют. Сбой версии или набора TLS относится к каналу управления. Отказ сертификата требует идентичности и цепочки доверия, а не флага совместимости.
Определите также движок на обоих концах. Настольное приложение может содержать другую сборку, чем бинарный файл командной строки, с которым вы тестировали, и поддержка опций между ними различается. Сверьтесь с документацией этого движка, а не предполагайте, что каждая программа, импортирующая профиль, ведёт себя одинаково.
Замените намерение, а не только строку
Если старый управляемый сервер действительно полагался на проверку согласованности, запишите, какое ограничение она обеспечивала до обновления. Сохранение игнорируемой опции в более новом профиле не может сохранить эту политику, и бездумное удаление строк тоже не может.
Не отвечайте на старый совет, что все шифры отключены, включением каждого исторического алгоритма.
После одобренного исправления проверьте согласованные результаты на новом соединении и протестируйте приложение, которое действительно нужно пользователю. Держите версию сервера и действующую политику рядом с этим результатом, чтобы следующий человек видел, о чём договорились, а не только что было принято.
Цель — поддерживаемое ограничение и работающий аутентифицированный путь, а не устаревший флаг, который всё ещё разбирается.