Ολοκληρώστε την ανάλυση των κεφαλίδων CONNECT πριν προωθήσετε τη ροή του πελάτη
Ένας διακομιστής μεσολάβησης που προωθεί μόνο μετά τη γραμμή αιτήματος μπορεί να στείλει τη δική του κεφαλίδα Host στη θύρα TLS του προορισμού.
Μετά τη γραμμή αιτήματος CONNECT, αυτά τα byte ανήκουν ακόμη στον μεσολαβητή:
CONNECT service.example:443 HTTP/1.1\r\n
Host: service.example:443\r\n
User-Agent: example-client\r\n
\r\nΗ προώθηση των Host ή User-Agent στη θύρα 443 δίνει στον προορισμό κεφαλίδες απλού κειμένου εκεί όπου περιμένει TLS. Αυτή η αποτυχία μπορεί να συμβεί πριν η επιλογή κρυπτογράφησης αποκτήσει σημασία.
- Διαβάστε και αναλύστε μέχρι τον τερματιστή κεφαλίδων με κενή γραμμή, εντός προθεσμίας ρύθμισης και ορίου μεγέθους κεφαλίδων.
- Εφαρμόστε τον έλεγχο ταυτότητας του μεσολαβητή και την πολιτική προορισμού.
- Δημιουργήστε την εγκεκριμένη σύνδεση με τον στόχο.
- Στείλτε την επιτυχή απάντηση CONNECT και περάστε σε λειτουργία τούνελ.
Διατηρήστε τα αποθηκευμένα byte μετά το όριο για την κατάλληλη επόμενη κατάσταση. Μην τα απορρίψετε και μην αντιμετωπίσετε τις κεφαλίδες αιτήματος του μεσολαβητή ως μεταγενέστερη αίτηση του ιστότοπου.
Ο πελάτης έχει αντίστοιχη υποχρέωση στην πλευρά της απάντησης: ολοκληρώστε την ανάγνωση της επιτυχούς απάντησης CONNECT πριν ξεκινήσει το πρωτόκολλο τούνελ. Και οι δύο πλευρές πρέπει να συμφωνήσουν για το όριο όπου η ροή αλλάζει ρόλο.