שטעלט אויף CONNECT איידער איר הייבט אָן דעם Asio TLS האַנטשאַק
ניצט די אונטערשטע שיכטע פון דעם Asio SSL שטראָם פֿאַר דעם פּשוטן HTTP פּראָקסי אויסטויש, און דערנאָך הייבט אָן TLS דורך דעם אנגענומענעם טונעל.
פֿאַר ssl::stream<tcp::socket> דורך אַ געוויינטלעכן HTTP פּראָקסי, ניצט ערשט זיין רויער טראַנספּאָרט, איידער איר פֿאָדערט פֿון אים TLS צום ציל:
auto& transport = tlsStream.next_layer();
- פֿאַרבינדט דעם טראַנספּאָרט צום פּראָקסי האָסט און פּאָרט. ווען אַ דערלויבטער פּובליקער HTTPS ציל האָט נישט קיין פּראָקסי באַשטעטיקונג, HTTP פּראָקסי ליסטע פֿאָרשטלאָגט קאַנדידאַטן; פּרובירט אַז דער קאַנדידאַט דערלויבט דעם געפֿאָדערטן טונעל.
- שיקט CONNECT מיט דעם ציל authority, למשל
api.example:443, און צענעמט די פֿולע ענטפֿער קעפּלעך אויף דעם פּשוטן טראַנספּאָרט. אַ געראָטענער 2xx עפֿנט דעם טונעל; אַ אָפּוואַרף בלײַבט אַ HTTP פּראָקסי ענטפֿער. - שטעלט אַײַן דעם ציל האָסטנאָמען, דאָס נויטיקע SNI, די פֿאַרטרויאונג וואָרצלען און פּעער וועריפֿיקאַציע, און דערנאָך הייבט אָן דעם קליענט האַנטשאַק אויף
tlsStream. - נאָך דעם וואָס TLS איז געראָטן, ניצט לייענען און שרײַבן דורך דעם SSL שטראָם פֿאַר דער אַפּליקאַציע. לייענען די אונטערשטע שיכטע גלײַך אין דעם פּונקט פֿאַרבייַגייט TLS פּראָצעסירונג.
פֿירט וועטער איבער דעם HTTP פּאַרסער'ס איבעריקונג אין דער נעקסטער סטאַדיע. Asio האָט באַפֿערטע האַנטשאַק איבערלאָדונגען; אַוועקוואַרפֿן אַ זאַנג וואָס דער פּאַרסער האָט, קען פֿאַרלירן בייטן שוין געלייענט פֿון דעם סאָקעט.
מיט דעם פּשוטן טיפּ דערגרייכן ביידע next_layer און lowest_layer TCP. מער פֿאַרפּעקונגען קענען זיי מאַכן אַנדערש, דעריבער קלייבט די צווישנשאַנע וואָס פֿירט דעם פּראָקסי'ס טאַקע דראָט פּראָטאָקאָל. אַ HTTPS פּראָקסי לייגט צו נאָך אַ TLS סטאַדיע און איז אינדרויסן פֿון דער פּשוטער טעקסט CONNECT סעקווענץ.