Угледати реч TLS у опису VPN-а и закључити да ће веб-прокси разумети тај саобраћај уобичајен је кратки пут. Унутар овог протокола партнери размењују сопствене пакете, а TLS ради као део једног канала у тој размени. Корисни терет који је кориснику важан путује у другом формату порука, и зато се оно двоје никада не поклапа са обичном HTTPS сесијом.

Коверта долази прва

Сваки пакет тунела почиње сопственим заглављем протокола: типом поруке, идентификатором кључа и, на транспорту бајтовног тока, префиксом дужине који означава где се пакет завршава. Читалац који не рашчлањује ту коверту не може да зна где почиње следеће поље.

outer transport (UDP datagram or TCP stream)
  -> OpenVPN header (opcode, key id, length where needed)
    -> control message (reliability wrapper, TLS exchange)
    -> data message (protected inner packet)

Та скица је мапа, а не бајт-табела, јер тачна поља зависе од типа поруке, иако први октет увек заједно пакује операцијски код и идентификатор кључа. Погађање типа поруке из броја порта је начин на који декодери на крају погрешно именују оно што виде. Редослед је оно што је важно за дијагностику: транспорт, затим коверта протокола, затим један од две врсте посла. Прочитајте коверту пре него што створите мишљење о ономе што следи. Декодер који почне на погрешном месту производи самоуверену бесмислицу.

Слој поузданости припада протоколу

Контролне поруке захтевају уређену, потврђену испоруку, а протокол то сам обезбеђује потврдама и поновним преносима. Потврда може да стигне као сопствена порука или да путује са другом контролном поруком, што чини трагове неуреднима за сваког ко очекује једну чисту размену.

Предност је што TLS руковање добија поуздан носилац чак и када је спољашњи транспорт UDP. Цена је што један датаграм може да садржи само део тог разговора, па третирање као самосталног TLS записа производи бесмислицу. Поновно састављање мора да се догоди на слоју протокола. Зато снимљени пакет ретко изгледа као комплетан корак руковања.

Пребацивање спољашњег транспорта на TCP не уклања овај слој. Поуздан транспорт значи мање поновних преноса на нивоу протокола, а не да оквирење нестаје или да саобраћај постаје HTTP.

Податковни пакети користе другачији формат

Када сесија постоји, корисни терет стиже као податковне поруке које носе унутрашње IP пакете или Ethernet оквире. Заштићени су сопственим кључевима и сопственом обрадом, и нису TLS апликацијски записи ни у једном смислу који би TLS библиотека прихватила.

Та подела је видљива у конфигурацији: контролни канал и податковни канал имају одвојена подешавања шифре, па линија дневника која именује један не говори ништа о другом. Читање јаке контролне шифре као доказа јаке податковне шифре честа је грешка у извештајима.

Држите и сродну заблуду изван објашњења. TLS није канал са јавним кључем поред симетричног податковног канала, јер сам TLS симетрично штити своје записе након успостављања кључева. Права разлика је улога и формат пакета, а не какву врсту криптографије користи свака страна.

Зашто HTTPS прокси не може да помогне

Прокси који завршава TLS очекује ток TLS записа и затим апликацијски протокол у њему. Контролни канал овог протокола носи се унутар сопственог оквирења са слојем поузданости около, па прокси који завршава чита то оквирење као оштећен улаз.

Транспарентни прослеђивач који пушта бајтове или датаграме без њиховог тумачења може да ради, под условом да не преписује или поново не саставља ток. Питање које треба поставити о сваком посреднику је да ли прослеђује стварни транспорт и оквирење, а не да ли негде подржава TLS. Питајте то пре него што потрошите вече на прокси правила. Већина неуспеха овде је архитектонска, а не намештање које недостаје.

Исправно читање трага

Очекујте прво контролну размену, затим много већи број податковних порука, обе деле један транспорт. Ако се контролна фаза заврши, а податковна фаза закочи, квар се тиче кључева, рутирања или филтрирања податковне путање, а не руковања. Снимите неколико податковних порука и проверите да ли уопште напуштају клијента. То једно запажање дели потрагу на пола.

Историјски описи метода кључа у документацији протокола не значе да дато издање још увек подржава сваки стари формат. Проверите верзију коју извршавате пре него што изградите очекивање на пасусу који описује како су ствари раније функционисале.

Повезани чланци