На един сървър клиентите забиват за известно време и после се свързват отново, а друг отхвърля връзките веднага със съобщение за размера на ключа. Изглеждат като различни дефекти, а са един и същ дефект, сочещ в противоположни посоки. Криптографията на ръкостискането има цена, която расте с размера на параметрите, и има и долна граница, под която съвременните библиотеки не слизат. Определянето на размера на материала е контролният списък, а първият пункт е да решите кой от двата дефекта всъщност имате.

Прочетете отказа, преди да регенерирате каквото и да е

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

Тези две се нуждаят от противоположни поправки и точно тук повечето опити се объркват. Регенерирането на параметри с 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 модул.

Каквото и да изберете, тествайте с една реална връзка и гледайте колко време отнема ръкостискането, а не само дали накрая се свързва. Връзка, която успява за дванадесет секунди, има същата първопричина като тази, която се проваля на петнадесет.

Запишете избора, за да не го отмени преизграждане

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

Запишете същата информация до крайната точка и профила, за да не се налага прегледът да я извлича обратно от размера на файла. Когато следващата връзка забие, тази бележка е разликата между петминутна проверка и ново разследване. Тя също спира следващия инженер да реши бавния случай с поправка, предназначена за бързия.

Подобни статии