Հաստատեք CONNECT-ը Asio TLS ձեռքսեղմումը սկսելուց առաջ
Օգտագործեք Asio SSL հոսքի հաջորդ շերտը սովորական HTTP փրոքսի փոխանակման համար, ապա TLS-ը սկսեք ընդունված թունելով։
Սովորական HTTP փրոքսի միջոցով ssl::stream<tcp::socket>-ի համար օգտագործեք դրա հում տրանսպորտը, նախքան նրանից նպատակակետի 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 հաջորդականությունից։