Τετάρτη, 7 Ιουλίου 2010 10:31 μμ
I.T. ΑΝΗΣΥΧΙΕΣ
Το SSL είναι αργό!
Συνάδελφος μου περιγράφει το εξής σενάριο όπου clients συνδέονται σε εσωτερικό web site μέσω https/ssl connection και για κάποιο λόγο παρατηρείται καθυστέρηση-πάγωμα στο φόρτωμα της σελίδας. Το site χρησιμοποιεί Verisign Certificate.
Μη έχοντας κάποιο network trace απαντώ πως είτε οφείλεται σε θέμα της εφαρμογής είτε στον ενδιάμεσο χρόνο της αναμονής ο client προσπαθεί κάτι να κάνει και αποτυγχάνει. Όλα αυτά βέβαια είναι φιλολογίες οπότε με την πρώτη ευκαιρία κάνουμε network trace για να δούμε καλύτερα τι γίνεται. Οπότε με την πρώτη ευκαιρία παίρνουμε network trace και το αναλύουμε.
Όταν ξεκινάμε να κάνουμε network trace για troubleshooting λόγους προτείνεται να μη φιλτράρουμε τίποτα με capture filters γιατί έτσι μπορεί να αποκλείσουμε πληροφορίες που θα φανούν χρήσιμες. Αφού λοιπόν πάρουμε το trace file εφαρμόζουμε display filters ώστε να δούμε καλύτερα το πρόβλημα.
Στο trace file εφαρμόζω display filter (tcp.port==443) για να δούμε αρχικά τι συμβαίνει στην SSL επικοινωνία.

Αν παρατηρήσετε τις στήλες "Time" & “Delta Time” η συγκεκριμένη σύνδεση ξεκινά στις 16:28:25.841 αλλά φαίνεται πως κάποια στιγμή( frames 179 & 346) υπάρχει κενό περίπου 45'' (delta time χρόνος μεταξύ των 2 πακέτων που απεικονίζονται). Μέχρι εδώ δεν έχει βρεθεί λύση αλλά βλέπουμε το πρόβλημα μπροστά μας.
Επόμενη λογική κίνηση είναι να καθαρίσουμε τα όποια display filter ώστε να δούμε τι υπάρχει ενδιάμεσα.

Αυτό που εμφανίζεται αμέσως είναι επικοινωνία του client με τον DNS ζητώντας την IP για το crl.verisign.com
Χμμ ενδιαφέρον και μοιάζει σχετικό, μιας και το certificate του https server είναι από τη Verisign. Στο frame 175 έρχεται η απάντηση από το DNS Server με την αντίστοιχη IP 199.7.51.190.
Στο επόμενο frame βλέπουμε τον client να ξεκινά το γνωστό 3-way TCP handshake (SYN, SYN-ACK, ACK) προς την IP που μόλις έλαβε από τον DNS Server. Φαίνεται λοιπόν ο client να στέλνει το πρώτο βήμα με το flag SYN enabled.
Στη συνέχεια πως δεν φαίνεται να έρχεται η απάντηση SYN-ACK πίσω στα επόμενα frames, αλλά αντιθέτως εμφανίζεται εκ νέου προσπάθεια σύνδεσης με νέο TCP Packet με SYN Flag. Αφnύ συνεχισθεί η προσπάθεια για 6 φορές με ενδιάμεσα διαστήματα των 3’’ & 6’’ ο client επιστρέφει πίσω στην αρχική επικοινωνία. Να σημειώσω εδώ πως τα 3 & 6 δευτερόλεπτα είναι default συμπεριφορά για tcp connections.
Αυτό που παρατηρείται είναι default συμπεριφορά του Internet Explorer όπου όταν συνδέεται σε https site προσπαθεί να κατεβάσει την CRL ώστε να ελέγξει αν το συγκεκριμένο certificate έχει γίνει revoke από την αρχή έκδοσης, στην προκειμένη περίπτωση Verisign.
Έτσι λοιπόν στην περίπτωσή μας ο browser προσπαθεί συνδεθεί στο crl.verisign.com και αποτυγχάνει μιας και δεν υπάρχει δικαίωμα πρόσβασης στο συγκεκριμένο site λόγω firewall κλπ.