ئادەتتىكى HTTP ۋاكالەتچى ئارقىلىق ssl::stream<tcp::socket> ئۈچۈن ئاۋۋال ئۇنىڭ خام يوللاش قەۋىتىنى ئىشلىتىڭ، ئاندىن ئۇنىڭدىن نىشان TLS نى ئىجرا قىلىشنى تەلەپ قىلىڭ:

auto& transport = tlsStream.next_layer();
  1. شۇ يوللاش قەۋىتىنى ۋاكالەتچى ئاساسىي ماشىنىسى ۋە پورتىغا ئۇلاڭ. رۇخسەت قىلىنغان ئاممىۋى HTTPS نىشانى ئۈچۈن ۋاكالەتچى كىنىشكىسى تەڭشەلمىگەن بولسا، HTTP ۋاكالەتچى تىزىملىكى نامزات ئاخىرقى نۇقتىلارنى تەمىنلەيدۇ؛ نامزاتنىڭ تەلەپ قىلىنغان تونېلگە رۇخسەت قىلىشىنى تەكشۈرۈڭ.
  2. نىشان authority نى كۆرسىتىپ CONNECT ئەۋەتىڭ، مەسىلەن api.example:443، ۋە ئاددىي يوللاش قەۋىتىدە تولۇق جاۋاب باشلىقلىرىنى تەھلىل قىلىڭ. مۇۋەپپەقىيەتلىك 2xx تونېلنى ئاچىدۇ؛ رەت قىلىش HTTP ۋاكالەتچى جاۋابى بولۇپ قالىدۇ.
  3. نىشان ئاساسىي ماشىنا نامى، زۆرۈر SNI، ئىشەنچ ئاساسلىرى ۋە peer دەلىللەشنى تەڭشەڭ، ئاندىن tlsStream دە خېرىدار قول ئېلىشىنى باشلاڭ.
  4. TLS مۇۋەپپەقىيەتلىك بولغاندىن كېيىن، ئەپ ئۈچۈن SSL ئېقىمى ئارقىلىق ئوقۇش ۋە يېزىشنى ئىشلىتىڭ. شۇ چاغدا ئاستىنقى قەۋەتنى بىۋاسىتە ئوقۇش TLS بىر تەرەپ قىلىشنى ئاتلاپ كېتىدۇ.

HTTP تەھلىلچىنىڭ قالدۇقىنى كېيىنكى باسقۇچقا ئېلىپ ئۆتۈڭ. Asio دا بۇفېرلىق قول ئېلىش ئاشقا يۈكلىمىلىرى بار؛ تەھلىلچىگە تەۋە قۇيرۇقنى تاشلاش socket تىن ئاللىبۇرۇن ئوقۇلغان بايتلارنى يوقىتىشى مۇمكىن.

بۇ ئاددىي تىپتا next_layer ۋە lowest_layer ھەر ئىككىسى TCP غا يېتىدۇ. تېخىمۇ كۆپ ئوراشلار ئۇلارنى پەرقلىق قىلىشى مۇمكىن، شۇڭا ۋاكالەتچىنىڭ ھەقىقىي سىم پروتوكولىنى كۆتۈرۈۋاتقان كۆرۈنۈشنى تاللاڭ. HTTPS ۋاكالەتچى يەنە بىر TLS باسقۇچىنى قوشىدۇ ۋە بۇ ئوچۇق تېكىست CONNECT تەرتىپىنىڭ سىرتىدا.

مۇناسىۋەتلىك ماقالىلەر