Gosod CONNECT cyn dechrau ysgwyd llaw TLS Asio
Defnyddiwch haen nesaf ffrwd Asio SSL ar gyfer cyfnewid HTTP plaen y procsï, yna dechreuwch TLS drwy'r twnnel a dderbyniwyd.
Ar gyfer ssl::stream<tcp::socket> drwy brocsi HTTP cyffredin, defnyddiwch ei drafnidiaeth crai cyn gofyn iddo wneud TLS i'r cyrchfan:
auto& transport = tlsStream.next_layer();- Cysylltwch y drafnidiaeth honno â gwesteiwr a phorth y procsï. Ar gyfer cyrchfan HTTPS gyhoeddus a ganiatawyd heb gyfrifon procsï wedi'u ffurfweddu, mae rhestr procsïau HTTP yn cynnig penau terfyn ymgeiswyr; gwiriwch fod yr ymgeisydd yn caniatáu'r twnnel y gofynnwyd amdano.
- Anfonwch CONNECT gan enwi awdurdod y cyrchfan, fel
api.example:443, a dadansoddwch benawdau'r ymateb cyflawn ar y drafnidiaeth crai. Mae 2xx llwyddiannus yn agor y twnnel; mae gwrthodiad yn parhau'n ymateb procsï HTTP. - Ffurfweddwch enw gwesteiwr y cyrchfan, yr SNI gofynnol, y gwreiddiau ymddiriedaeth a gwirio'r cyfoed, yna dechreuwch ysgwyd llaw'r cleient ar
tlsStream. - Ar ôl i TLS lwyddo, defnyddiwch ddarlleniadau ac ysgrifeniadau'r ffrwd SSL ar gyfer y rhaglen. Mae darllen yr haen nesaf yn uniongyrchol ar y pwynt hwnnw'n osgoi prosesu TLS.
Cludwch unrhyw weddill o'r parslydd HTTP i'r cam nesaf. Mae gan Asio orlwythiadau ysgwyd llaw byfferog; gall taflu cynffon sy'n eiddo i'r parslydd golli beitiau a ddarllenwyd eisoes o'r soced.
Gyda'r math syml hwn, mae next_layer a lowest_layer ill dau'n cyrraedd TCP. Gall mwy o wrapwyr eu gwneud yn wahanol, felly dewiswch y rhyngwyneb sy'n cario protocol gwifren wirioneddol y procsï. Mae procsï HTTPS yn ychwanegu cam TLS arall ac yn gorwedd y tu allan i'r dilyniant CONNECT testun plaen hwn.