ಸಾಮಾನ್ಯ HTTP ಪ್ರಾಕ್ಸಿ ಮೂಲಕ ssl::stream<tcp::socket> ಗಾಗಿ, ಗಮ್ಯಸ್ಥಾನಕ್ಕೆ TLS ಮಾಡಲು ಕೇಳುವ ಮೊದಲು ಅದರ ಕಚ್ಚಾ ಸಾಗಣೆಯನ್ನು ಬಳಸಿ:

auto& transport = tlsStream.next_layer();
  1. ಆ ಸಾಗಣೆಯನ್ನು ಪ್ರಾಕ್ಸಿ ಹೋಸ್ಟ್ ಮತ್ತು ಪೋರ್ಟ್‌ಗೆ ಸಂಪರ್ಕಿಸಿ. ಪ್ರಾಕ್ಸಿ ರುಜುವಾತುಗಳನ್ನು ಸಂರಚಿಸದೆ ಅನುಮತಿಸಲಾದ ಸಾರ್ವಜನಿಕ HTTPS ಗಮ್ಯಸ್ಥಾನಕ್ಕೆ HTTP ಪ್ರಾಕ್ಸಿ ಪಟ್ಟಿ ಅಭ್ಯರ್ಥಿ ಎಂಡ್‌ಪಾಯಿಂಟ್‌ಗಳನ್ನು ನೀಡುತ್ತದೆ; ಅಭ್ಯರ್ಥಿ ಕೋರಿದ ಸುರಂಗವನ್ನು ಅನುಮತಿಸುತ್ತದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಿ.
  2. ಗಮ್ಯಸ್ಥಾನದ authority ಹೆಸರಿಸಿ CONNECT ಕಳುಹಿಸಿ, ಉದಾಹರಣೆಗೆ api.example:443, ಮತ್ತು ಕಚ್ಚಾ ಸಾಗಣೆಯಲ್ಲಿ ಸಂಪೂರ್ಣ ಪ್ರತಿಕ್ರಿಯೆ ಹೆಡರ್‌ಗಳನ್ನು ವಿಶ್ಲೇಷಿಸಿ. ಯಶಸ್ವಿ 2xx ಸುರಂಗವನ್ನು ತೆರೆಯುತ್ತದೆ; ನಿರಾಕರಣೆ HTTP ಪ್ರಾಕ್ಸಿ ಪ್ರತಿಕ್ರಿಯೆಯಾಗಿಯೇ ಉಳಿಯುತ್ತದೆ.
  3. ಗಮ್ಯಸ್ಥಾನದ ಹೋಸ್ಟ್‌ಹೆಸರು, ಅಗತ್ಯವಿರುವ SNI, ವಿಶ್ವಾಸ ಮೂಲಗಳು ಮತ್ತು ಸಹಭಾಗಿ ಪರಿಶೀಲನೆಯನ್ನು ಸಂರಚಿಸಿ, ನಂತರ tlsStream ನಲ್ಲಿ ಕ್ಲೈಂಟ್ ಹ್ಯಾಂಡ್‌ಶೇಕ್ ಪ್ರಾರಂಭಿಸಿ.
  4. TLS ಯಶಸ್ವಿಯಾದ ನಂತರ, ಅಪ್ಲಿಕೇಶನ್‌ಗಾಗಿ SSL ಸ್ಟ್ರೀಮ್ ಓದುವಿಕೆ ಮತ್ತು ಬರವಣಿಗೆಯನ್ನು ಬಳಸಿ. ಆ ಸಮಯದಲ್ಲಿ ಮುಂದಿನ ಪದರವನ್ನು ನೇರವಾಗಿ ಓದುವುದು TLS ಸಂಸ್ಕರಣೆಯನ್ನು ಬೈಪಾಸ್ ಮಾಡುತ್ತದೆ.

HTTP ಪಾರ್ಸರ್‌ನ ಯಾವುದೇ ಹೆಚ್ಚುವರಿ ಭಾಗವನ್ನು ಮುಂದಿನ ಹಂತಕ್ಕೆ ಒಯ್ಯಿರಿ. Asio ನಲ್ಲಿ ಬಫರ್ ಮಾಡಿದ ಹ್ಯಾಂಡ್‌ಶೇಕ್ ಓವರ್‌ಲೋಡ್‌ಗಳಿವೆ; ಪಾರ್ಸರ್‌ನ ಮಾಲೀಕತ್ವದ ಬಾಲವನ್ನು ಎಸೆದರೆ ಸಾಕೆಟ್‌ನಿಂದ ಈಗಾಗಲೇ ಓದಿದ ಬೈಟ್‌ಗಳು ಕಳೆದುಹೋಗಬಹುದು.

ಈ ಸರಳ ಪ್ರಕಾರದೊಂದಿಗೆ next_layer ಮತ್ತು lowest_layer ಎರಡೂ TCP ತಲುಪುತ್ತವೆ. ಹೆಚ್ಚು ಆವರಣಗಳು ಅವುಗಳನ್ನು ವಿಭಿನ್ನಗೊಳಿಸಬಹುದು, ಆದ್ದರಿಂದ ಪ್ರಾಕ್ಸಿಯ ನೈಜ ವೈರ್ ಪ್ರೋಟೋಕಾಲ್ ಒಯ್ಯುವ ಇಂಟರ್‌ಫೇಸ್ ಆಯ್ಕೆಮಾಡಿ. HTTPS ಪ್ರಾಕ್ಸಿ ಇನ್ನೊಂದು TLS ಹಂತವನ್ನು ಸೇರಿಸುತ್ತದೆ ಮತ್ತು ಈ ಸ್ಪಷ್ಟ ಪಠ್ಯ CONNECT ಅನುಕ್ರಮದ ಹೊರಗಿದೆ.

ಸಂಬಂಧಿತ ಲೇಖನಗಳು