Asio TLS ಹ್ಯಾಂಡ್ಶೇಕ್ ಪ್ರಾರಂಭಿಸುವ ಮೊದಲು CONNECT ಸ್ಥಾಪಿಸಿ
ಸಾಮಾನ್ಯ HTTP ಪ್ರಾಕ್ಸಿ ವಿನಿಮಯಕ್ಕಾಗಿ Asio SSL ಸ್ಟ್ರೀಮ್ನ ಮುಂದಿನ ಪದರವನ್ನು ಬಳಸಿ, ನಂತರ ಸ್ವೀಕರಿಸಿದ ಸುರಂಗದ ಮೂಲಕ TLS ಪ್ರಾರಂಭಿಸಿ.
ಸಾಮಾನ್ಯ HTTP ಪ್ರಾಕ್ಸಿ ಮೂಲಕ ssl::stream<tcp::socket> ಗಾಗಿ, ಗಮ್ಯಸ್ಥಾನಕ್ಕೆ TLS ಮಾಡಲು ಕೇಳುವ ಮೊದಲು ಅದರ ಕಚ್ಚಾ ಸಾಗಣೆಯನ್ನು ಬಳಸಿ:
auto& transport = tlsStream.next_layer();- ಆ ಸಾಗಣೆಯನ್ನು ಪ್ರಾಕ್ಸಿ ಹೋಸ್ಟ್ ಮತ್ತು ಪೋರ್ಟ್ಗೆ ಸಂಪರ್ಕಿಸಿ. ಪ್ರಾಕ್ಸಿ ರುಜುವಾತುಗಳನ್ನು ಸಂರಚಿಸದೆ ಅನುಮತಿಸಲಾದ ಸಾರ್ವಜನಿಕ HTTPS ಗಮ್ಯಸ್ಥಾನಕ್ಕೆ HTTP ಪ್ರಾಕ್ಸಿ ಪಟ್ಟಿ ಅಭ್ಯರ್ಥಿ ಎಂಡ್ಪಾಯಿಂಟ್ಗಳನ್ನು ನೀಡುತ್ತದೆ; ಅಭ್ಯರ್ಥಿ ಕೋರಿದ ಸುರಂಗವನ್ನು ಅನುಮತಿಸುತ್ತದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಿ.
- ಗಮ್ಯಸ್ಥಾನದ authority ಹೆಸರಿಸಿ CONNECT ಕಳುಹಿಸಿ, ಉದಾಹರಣೆಗೆ
api.example:443, ಮತ್ತು ಕಚ್ಚಾ ಸಾಗಣೆಯಲ್ಲಿ ಸಂಪೂರ್ಣ ಪ್ರತಿಕ್ರಿಯೆ ಹೆಡರ್ಗಳನ್ನು ವಿಶ್ಲೇಷಿಸಿ. ಯಶಸ್ವಿ 2xx ಸುರಂಗವನ್ನು ತೆರೆಯುತ್ತದೆ; ನಿರಾಕರಣೆ HTTP ಪ್ರಾಕ್ಸಿ ಪ್ರತಿಕ್ರಿಯೆಯಾಗಿಯೇ ಉಳಿಯುತ್ತದೆ. - ಗಮ್ಯಸ್ಥಾನದ ಹೋಸ್ಟ್ಹೆಸರು, ಅಗತ್ಯವಿರುವ SNI, ವಿಶ್ವಾಸ ಮೂಲಗಳು ಮತ್ತು ಸಹಭಾಗಿ ಪರಿಶೀಲನೆಯನ್ನು ಸಂರಚಿಸಿ, ನಂತರ
tlsStreamನಲ್ಲಿ ಕ್ಲೈಂಟ್ ಹ್ಯಾಂಡ್ಶೇಕ್ ಪ್ರಾರಂಭಿಸಿ. - TLS ಯಶಸ್ವಿಯಾದ ನಂತರ, ಅಪ್ಲಿಕೇಶನ್ಗಾಗಿ SSL ಸ್ಟ್ರೀಮ್ ಓದುವಿಕೆ ಮತ್ತು ಬರವಣಿಗೆಯನ್ನು ಬಳಸಿ. ಆ ಸಮಯದಲ್ಲಿ ಮುಂದಿನ ಪದರವನ್ನು ನೇರವಾಗಿ ಓದುವುದು TLS ಸಂಸ್ಕರಣೆಯನ್ನು ಬೈಪಾಸ್ ಮಾಡುತ್ತದೆ.
HTTP ಪಾರ್ಸರ್ನ ಯಾವುದೇ ಹೆಚ್ಚುವರಿ ಭಾಗವನ್ನು ಮುಂದಿನ ಹಂತಕ್ಕೆ ಒಯ್ಯಿರಿ. Asio ನಲ್ಲಿ ಬಫರ್ ಮಾಡಿದ ಹ್ಯಾಂಡ್ಶೇಕ್ ಓವರ್ಲೋಡ್ಗಳಿವೆ; ಪಾರ್ಸರ್ನ ಮಾಲೀಕತ್ವದ ಬಾಲವನ್ನು ಎಸೆದರೆ ಸಾಕೆಟ್ನಿಂದ ಈಗಾಗಲೇ ಓದಿದ ಬೈಟ್ಗಳು ಕಳೆದುಹೋಗಬಹುದು.
ಈ ಸರಳ ಪ್ರಕಾರದೊಂದಿಗೆ next_layer ಮತ್ತು lowest_layer ಎರಡೂ TCP ತಲುಪುತ್ತವೆ. ಹೆಚ್ಚು ಆವರಣಗಳು ಅವುಗಳನ್ನು ವಿಭಿನ್ನಗೊಳಿಸಬಹುದು, ಆದ್ದರಿಂದ ಪ್ರಾಕ್ಸಿಯ ನೈಜ ವೈರ್ ಪ್ರೋಟೋಕಾಲ್ ಒಯ್ಯುವ ಇಂಟರ್ಫೇಸ್ ಆಯ್ಕೆಮಾಡಿ. HTTPS ಪ್ರಾಕ್ಸಿ ಇನ್ನೊಂದು TLS ಹಂತವನ್ನು ಸೇರಿಸುತ್ತದೆ ಮತ್ತು ಈ ಸ್ಪಷ್ಟ ಪಠ್ಯ CONNECT ಅನುಕ್ರಮದ ಹೊರಗಿದೆ.