Սովորական HTTP փրոքսի միջոցով ssl::stream<tcp::socket>-ի համար օգտագործեք դրա հում տրանսպորտը, նախքան նրանից նպատակակետի TLS պահանջելը.

auto& transport = tlsStream.next_layer();
  1. Միացրեք այդ տրանսպորտը փրոքսի հոսթին և պորտին։ Թույլատրված հանրային HTTPS նպատակակետի համար, երբ փրոքսի հավատարմագրեր կարգավորված չեն, HTTP փրոքսիների ցանկը առաջարկում է թեկնածու վերջնակետեր. ստուգեք, որ թեկնածուն թույլ է տալիս պահանջված թունելը։
  2. Ուղարկեք CONNECT՝ նշելով նպատակակետի authority-ն, օրինակ՝ api.example:443, և վերլուծեք ամբողջ պատասխանի վերնագրերը հում տրանսպորտի վրա։ Հաջող 2xx-ը բացում է թունելը. մերժումը մնում է HTTP փրոքսի պատասխան։
  3. Կարգավորեք նպատակակետի հոսթի անունը, պահանջվող SNI-ն, վստահության արմատները և գործընկերոջ ստուգումը, ապա սկսեք հաճախորդի ձեռքսեղմումը tlsStream-ի վրա։
  4. TLS-ի հաջողությունից հետո օգտագործեք SSL հոսքի ընթերցումներն ու գրառումները հավելվածի համար։ Այդ պահին հաջորդ շերտն ուղղակիորեն կարդալը շրջանցում է TLS մշակումը։

HTTP վերլուծիչի ցանկացած ավելցուկ տարեք հաջորդ փուլ։ Asio-ն ունի բուֆերացված ձեռքսեղմման ծանրաբեռնված տարբերակներ. վերլուծիչին պատկանող պոչը դեն նետելը կարող է կորցնել սոքեթից արդեն կարդացված բայթեր։

Այս պարզ տիպի դեպքում next_layer-ը և lowest_layer-ը երկուսն էլ հասնում են TCP-ին։ Ավելի շատ փաթաթաններ կարող են դրանք տարբեր դարձնել, այնպես որ ընտրեք այն ինտերֆեյսը, որը կրում է փրոքսի իրական մետաղալարային արձանագրությունը։ HTTPS փրոքսին ավելացնում է ևս մեկ TLS փուլ և դուրս է այս բաց տեքստով CONNECT հաջորդականությունից։

Առնչվող հոդվածներ