AES-256-GCM не е намерен: възможност на клиента или преговори?
Две грешки на OpenVPN изглеждат еднакво: сборка без алгоритъма и страни без общ шифър. Прочетете --show-ciphers и data-ciphers, преди да редактирате профила.
Профил на OpenVPN, който работи другаде, съобщава, че AES-256-GCM не е намерен или че страните нямат общ шифър, и първият импулс е да редактирате профила. Тези две съобщения описват различни откази. Едното казва, че локалната програма няма такъв алгоритъм; другото че двете страни имат алгоритми, но не и общ избор. Редакцията на профила не решава нито едното, докато не знаете кое имате.
Прочетете точния текст на грешката и програмата, която я е издала.
Определете коя грешка имате
Съобщението за шифър, който не е намерен, идва от разбора на опциите на локалната машина, преди да е изпратен какъвто и да е пакет. Това означава, че изпълнимият файл пред вас или библиотеката, с която е свързан, не предлага този алгоритъм. Съобщението за липса на общ шифър идва по-късно, по време на преговорите, и означава, че двете страни поддържат шифри, но не могат да се споразумеят за един.
Разликата е важна, защото едното е проблем с версията на софтуера, а другото с конфигурацията. Първото се решава с номер на версия. Второто се решава чрез сравняване на два списъка.
Локална липса на възможност
Старите общностни сборки предхождат съвременните настройки по подразбиране, а настолно приложение може да носи собствен двигател, който се различава от инсталирания наблизо пакет за команден ред. Правете проверките върху изпълнимия файл, който действително е стартирал връзката, после изберете поддържана сборка, вместо да учите стара програма на нов алгоритъм.
openvpn --version openvpn --show-ciphers | grep -i gcm openvpn --show-tls | head -5
Ако AES-256-GCM не се появи в този списък, никой ред от профила няма да го добави. Решението е по-нов клиент или друга сборка, а ограниченията на по-старата страна стават отделен въпрос за дизайна.
При клиентите на базата на OpenVPN 3 двигателят и приетите директиви се различават от общностната линия 2.x, затова същият текст на профила може да се провали по причини, които нямат нищо общо със списъка с шифри.
Липса при преговорите
Когато двете страни изброяват алгоритъма, остава въпросът кой списък предлага всяка от тях. Общностният OpenVPN преименува директивата за преговори: ncp-ciphers в 2.4 стана data-ciphers в 2.5, а в 2.6 по-старият ред cipher служи главно за съвместимост и резервен вариант, а не за определяне на договорения набор.
Затова промяната само на стария ред cipher може да остави списъка за преговори непроменен. Старият ред все още е важен за резервния вариант, което е отделна задача. Объркването между двете дава редакции, които не променят нищо видимо.
openvpn --version | head -2 grep -n -E '^(data-ciphers|ncp-ciphers|cipher|tls-cipher)' server.conf client.ovpn
Сравнете списъците на двата края и съобщението на сървъра за отказ. Ако пресечната точка е празна, изравнете списъците съзнателно, вместо да копирате стойност от статия, писана за друга версия. Твърде щедър списък тихо отслабва всяка връзка. Твърде тесен списък изключва страната, която сте искали да запазите.
Пазете съвместимостта явна
Резервен вариант за една стара страна е решение с цена: цялото внедряване приема по-слаб вариант, за да се свърже едно устройство. Запишете го като такова и го ограничете до страната, която се нуждае.
Две условия решават изхода. Ако грешката е локална, сменете сборката. Ако грешката е при преговорите, изравнете списъците от двата края и запишете кои версии поддържате.
После докладвайте точната грешка с приложен изход за версията и възможностите. Тази двойка отделя липсващия алгоритъм от несъгласие и спира следващия кръг предположения преди да е започнал.