Στο προηγούμενο άρθρο για την ασφάλεια είχα γράψει ότι το λουκετάκι στη γραμμή διεύθυνσης δεν φτάνει. Έμεινε όμως μια ερώτηση αναπάντητη, και μου την έκαναν αρκετοί: εντάξει, και πώς ξέρω αν το δικό μου είναι καλά ρυθμισμένο;

Υπάρχει απάντηση, και είναι ένας βαθμός από το A+ ως το F. Το πρόβλημα είναι ότι σχεδόν κανείς δεν ξέρει τι μετράει αυτός ο βαθμός, οπότε είτε πανικοβάλλεται χωρίς λόγο είτε ησυχάζει χωρίς λόγο. Ας δούμε λοιπόν πώς βγαίνει, τι κρύβει, και ποια είναι τα δύο τρία πράγματα που στην πράξη κάνουν τη διαφορά. Δεν θα σας δώσω οδηγό ρυθμίσεων, δεν είναι δουλειά για άρθρο. Θα σας δώσω το λεξιλόγιο για να καταλάβετε τι σας λέει η αναφορά.

Πώς βγαίνει ο βαθμός

Ο οδηγός βαθμολόγησης του SSL Labs είναι δημόσιος και αξίζει να ξέρετε τη λογική του. Τρεις κατηγορίες με βάρη: υποστήριξη πρωτοκόλλου 30%, ανταλλαγή κλειδιών 30%, ισχύς κρυπτοαλγορίθμων 40%. Βγαίνει ένας αριθμός από το 0 ως το 100, και μετά γίνεται γράμμα: 80 και πάνω A, 65 και πάνω B, 50 και πάνω C, και ούτω καθεξής.

Δύο πράγματα όμως ανατρέπουν την απλή αριθμητική.

Το πρώτο: μηδέν σε οποιαδήποτε κατηγορία μηδενίζει το σύνολο. Δεν υπάρχει μέσος όρος που να σας σώσει. Είναι σαν εξέταση με βάση σε κάθε μάθημα χωριστά.

Το δεύτερο, και το πιο παρεξηγημένο: πάνω από τον αριθμό υπάρχει δεύτερο επίπεδο κανόνων που ρίχνει ή ανεβάζει τον βαθμό ανεξάρτητα από το πόσο καλά τα πήγατε. Εκεί κρίνονται τα περισσότερα.

Το B που δεν αξίζει να το έχετε

Αν το site σας παίρνει B, υπάρχει μια πολύ πιθανή αιτία και είναι εξοργιστικά απλή: ο server δέχεται ακόμη TLS 1.0 ή TLS 1.1. Ο οδηγός το λέει ρητά, πλαφόν στο B.

Δηλαδή μπορεί να έχετε τέλειο πιστοποιητικό, σύγχρονους αλγορίθμους, τα πάντα σωστά, και να κάθεστε στο B επειδή κάποιος άφησε ανοιχτή μια πόρτα που δεν την περνάει κανείς πια. Και όταν λέω κανείς, το εννοώ κυριολεκτικά: οι browsers τα έχουν κλείσει εδώ και χρόνια.

Η ιστορία εδώ έχει ενδιαφέρον, γιατί για μία φορά οι κατασκευαστές προηγήθηκαν του προτύπου. Στις 15 Οκτωβρίου 2018 Apple, Google, Microsoft και Mozilla ανακοίνωσαν από κοινού την κατάργηση. Ο Firefox τα απενεργοποίησε στην έκδοση 78, τον Ιούνιο του 2020. Ο Chrome ολοκλήρωσε την αφαίρεση στην έκδοση 98, τον Φεβρουάριο του 2022. Το επίσημο πρότυπο, το RFC 8996, ήρθε τον Μάρτιο του 2021, δηλαδή ανάμεσά τους, και γράφει χωρίς περιστροφές ότι το TLS 1.0 δεν πρέπει να χρησιμοποιείται και ότι η διαπραγμάτευσή του δεν πρέπει να επιτρέπεται.

Ο λόγος; Το RFC τον εξηγεί: η ακεραιότητα και των δύο εκδόσεων στηρίζεται σε SHA-1, που επιτρέπει επίθεση υποβάθμισης σε επιτεθέμενο ικανό να εκτελέσει 2 εις την 77η πράξεις. Και προσθέτει κάτι πολύ πιο ανθρώπινο, που το βρίσκω σοφό: η υποστήριξη τεσσάρων εκδόσεων TLS αυξάνει την πιθανότητα λάθους ρύθμισης. Δηλαδή η ίδια η πολυπλοκότητα είναι κίνδυνος.

Άλλοι λόγοι που κλειδώνουν στο B, από τον ίδιο οδηγό: υποστήριξη SSL 3, υποστήριξη RC4, ελλιπής αλυσίδα πιστοποιητικών, απουσία forward secrecy, απουσία κρυπτοαλγορίθμων AEAD. Η ελλιπής αλυσίδα είναι ίσως η πιο ύπουλη, γιατί συνήθως δουλεύει μια χαρά στον δικό σας υπολογιστή και σκάει σε άλλες συσκευές.

Πότε πέφτετε στο F, και γιατί συνήθως δεν φταίει η κρυπτογραφία

Τα F δεν είναι λεπτές αποχρώσεις, είναι σπασμένα πράγματα. Και αν διαβάσετε τη λίστα, θα δείτε ότι η μεγάλη κατηγορία δεν αφορά αλγορίθμους αλλά το ίδιο το πιστοποιητικό: όνομα που δεν ταιριάζει με το domain, ληγμένο, αυτοϋπογεγραμμένο, από μη έμπιστη ή ανακληθείσα αρχή, υπογεγραμμένο με MD2 ή MD5, με ανασφαλές κλειδί.

Η υπόλοιπη λίστα είναι γνωστές ευπάθειες με ονόματα που θυμίζουν καφενείο: Heartbleed, DROWN, ROBOT, Ticketbleed, Zombie POODLE, GOLDENDOODLE. Αν εμφανιστεί κάποιο από αυτά, δεν συζητάμε βαθμούς, συζητάμε επείγουσα ενημέρωση.

Το πρακτικό συμπέρασμα είναι παρήγορο και το λέω σε πελάτες συνέχεια: το F συνήθως είναι διαχειριστικό λάθος, όχι τεχνολογικό. Κάποιος ξέχασε να ανανεώσει, ή έβαλε πιστοποιητικό για το www και όχι για το σκέτο domain. Λύνεται σε μία ώρα.

Το A+ και η μεγάλη παρεξήγηση με το HSTS

Εδώ είναι το σημείο που θα ήθελα να το ήξεραν περισσότεροι.

Το HSTS δεν μετράει καθόλου στον αριθμητικό βαθμό. Μπαίνει μόνο στην κορυφή: το A+ απονέμεται σε servers με καλή ρύθμιση, χωρίς προειδοποιήσεις, και με HSTS διάρκειας τουλάχιστον έξι μηνών.

Καταλαβαίνετε τι σημαίνει; Ένα site με A μπορεί κάλλιστα να μην έχει HSTS. Και το HSTS δεν είναι διακοσμητικό: είναι αυτό που λέει στον browser «σε αυτόν τον τόπο πηγαίνεις πάντα με https» και δεν αφήνει τον χρήστη να προσπεράσει ένα σφάλμα πιστοποιητικού πατώντας «συνέχεια ούτως ή άλλως». Δηλαδή προστατεύει ακριβώς από τη στιγμή που ο χρήστης βιάζεται.

Οπότε την επόμενη φορά που κάποιος σας δείξει ένα A και καμαρώσει, η σωστή ερώτηση είναι: «ωραία, HSTS έχουμε;».

Το preload, και η πόρτα που κλειδώνει από μέσα

Υπάρχει και ένα βήμα παραπέρα, το preload: μπαίνετε σε λίστα που έρχεται ενσωματωμένη μέσα στους ίδιους τους browsers, οπότε προστατεύεστε ακόμη και στην πρώτη επίσκεψη ενός χρήστη.

Οι προϋποθέσεις είναι τέσσερις: έγκυρο πιστοποιητικό, ανακατεύθυνση από http σε https στον ίδιο host, όλοι οι υποτομείς σας πάνω από https, και κεφαλίδα HSTS με διάρκεια τουλάχιστον ενός έτους, includeSubDomains και preload.

Και τώρα η προειδοποίηση, που τη γράφει η ίδια η υπηρεσία και θέλω να τη διαβάσετε δύο φορές: η ένταξη στη λίστα δεν αναιρείται εύκολα. Domains μπορούν να αφαιρεθούν, αλλά χρειάζονται μήνες για να φτάσει η αλλαγή στους χρήστες μέσω ενημέρωσης του browser, και δεν δίνονται εγγυήσεις για τους υπόλοιπους browsers.

Μεταφράζω: αν αύριο χρειαστεί να λειτουργήσει ένας υποτομέας σας σε http, για κάποιο μηχάνημα, για ένα παλιό σύστημα, για μια συσκευή στο γραφείο, δεν θα γίνεται. Ο browser θα αρνείται να τον ανοίξει, και δεν θα υπάρχει ρύθμιση δική σας που να το αλλάζει. Το preload είναι εξαιρετικό και το προτείνω, αλλά αφού πρώτα βεβαιωθούμε ότι όλο το σπίτι, μαζί με το υπόγειο, είναι σε https. Όχι επειδή είναι δύσκολο, αλλά επειδή είναι σχεδόν μη αναστρέψιμο.

Τα πιστοποιητικά ζουν όλο και λιγότερο, και αυτό σας αφορά

Αυτή είναι η αλλαγή που θα χτυπήσει φέτος πόρτες, και ελάχιστοι την έχουν προσέξει.

Το CA/Browser Forum, με την ψηφοφορία SC-081v3 που εγκρίθηκε τον Απρίλιο του 2025, όρισε χρονοδιάγραμμα μείωσης της μέγιστης διάρκειας των πιστοποιητικών:

ΑπόΜέγιστη διάρκεια
Πριν398 ημέρες
15 Μαρτίου 2026200 ημέρες
15 Μαρτίου 2027100 ημέρες
15 Μαρτίου 202947 ημέρες

Η πρώτη γραμμή ισχύει ήδη. Και το πρακτικό συμπέρασμα είναι ένα και μόνο: η χειροκίνητη ανανέωση τελείωσε. Όποιος έβαζε υπενθύμιση στο ημερολόγιο μία φορά τον χρόνο, θα τη βάζει δύο φορές φέτος, τρεις του χρόνου και οκτώ το 2029. Δεν γίνεται με το χέρι, και δεν πρέπει να γίνεται με το χέρι.

Στο ίδιο πνεύμα κινείται και η Let’s Encrypt, που έτσι κι αλλιώς δίνει 90 ημέρες από πάντα. Από τον Ιανουάριο του 2025 προσφέρει και πιστοποιητικά έξι ημερών ως πρόσθετη επιλογή, και έχει δηλώσει ότι σκοπεύει να κατεβάσει τη δική της μέγιστη διάρκεια στις 45 ημέρες έως τον Φεβρουάριο του 2028. Πιστοποιητικό έξι ημερών χωρίς αυτοματισμό δεν υφίσταται καν ως σκέψη.

Μια διόρθωση για ένα εργαλείο που άλλαξε σπίτι

Επειδή το έχω προτείνει και εγώ στο παρελθόν, το διορθώνω δημοσίως: η γεννήτρια ρυθμίσεων SSL της Mozilla δεν φιλοξενείται πλέον από τη Mozilla. Το αποθετήριο είναι αρχειοθετημένο και ο κώδικας συνεχίζεται από κοινοτικό έργο, στο configurator.tlsref.org.

Και έχει και ουσιαστική αλλαγή: τα επίπεδα δεν είναι πια τρία. Είναι δύο, Modern και Intermediate. Το Modern στοχεύει σε πελάτες που υποστηρίζουν TLS 1.3 και μόνο TLS 1.3. Το Intermediate, που είναι και η προτεινόμενη προεπιλογή για σχεδόν όλα τα συστήματα, δίνει TLS 1.2 και 1.3.

Προσέξτε τι σημαίνει αυτό: σε καμία από τις δύο επιλογές δεν υπάρχει TLS 1.0 ή 1.1. Ούτε καν στη «συμβατική». Αν λοιπόν ο πάροχός σας τα κρατά ανοιχτά «για συμβατότητα», δεν είναι συντηρητικός, είναι εκτός εποχής.

Το mixed content, όπως είναι σήμερα

Παλιά μαθαίναμε για «ενεργό» και «παθητικό» mixed content. Το MDN έχει πλέον αλλάξει τη γλώσσα, και η νέα είναι πιο χρήσιμη: υπάρχει αναβαθμίσιμο και μπλοκαρισμένο περιεχόμενο.

Το αναβαθμίσιμο, δηλαδή εικόνες, ήχος και βίντεο, το ανεβάζει ο browser μόνος του από http σε https. Το μπλοκαρισμένο, δηλαδή scripts, φύλλα στυλ, iframes, κλήσεις fetch και γραμματοσειρές, απορρίπτεται εντελώς.

Και μια λεπτομέρεια που την πληρώνει όποιος δεν την ξέρει: εικόνα με srcset ή μέσα σε <picture> δεν είναι αναβαθμίσιμη, είναι μπλοκαρισμένη. Δηλαδή ακριβώς οι σύγχρονες, responsive εικόνες που συστήνουμε παντού, αν δείχνουν σε http, δεν αναβαθμίζονται, εξαφανίζονται.

Και η φράση που πρέπει επιτέλους να πάψουμε να λέμε

«Βάλε SSL για να ανέβεις στη Google». Το ακούω ακόμη, και ήταν κάποτε σωστό. Η Google όντως ανακοίνωσε το 2014 το HTTPS ως σήμα κατάταξης.

Σήμερα όμως η τεκμηρίωσή της για την εμπειρία σελίδας γράφει κάτι διαφορετικό: ότι τα Core Web Vitals χρησιμοποιούνται από τα συστήματα κατάταξης, αλλά ότι πέρα από αυτά, οι υπόλοιπες πτυχές της εμπειρίας σελίδας δεν βοηθούν άμεσα τη σελίδα σας να καταταγεί ψηλότερα. Προσθέτει μάλιστα ότι η Google επιδιώκει πάντα να δείχνει το πιο σχετικό περιεχόμενο, ακόμη κι αν η εμπειρία σελίδας υστερεί.

Δεν σημαίνει «μη βάλετε HTTPS», προφανώς. Σημαίνει ότι το βάζετε για τον σωστό λόγο: επειδή χωρίς αυτό ο browser γράφει «μη ασφαλές» δίπλα στο όνομά σας και οι φόρμες σας ταξιδεύουν ανοιχτές. Όχι για να κερδίσετε θέσεις.

Τι κάνουμε, στην πράξη

Το ίδιο πράγμα που κάναμε στο mswriter.eu, όπου οι κεφαλίδες ασφαλείας πήγαν από 1 στις 7 σε 7 στις 7, βαθμός A+. Δεν είναι ηρωικό, είναι μεθοδικό: κλείνουμε τα παλιά πρωτόκολλα, φτιάχνουμε την αλυσίδα, βάζουμε HSTS με σωστή διάρκεια, στήνουμε αυτόματη ανανέωση ώστε το χρονοδιάγραμμα των 100 και μετά των 47 ημερών να μη μας αφορά, και ελέγχουμε ξανά.

Κι έτσι επιστρέφουμε στο ερώτημα που άνοιξε το άρθρο: πώς ξέρετε αν το δικό σας είναι καλά ρυθμισμένο. Τώρα ξέρετε τι να κοιτάξετε, και κυρίως ξέρετε ότι ένα A χωρίς HSTS δεν είναι ό,τι νομίζατε. Αν θέλετε να το δούμε μαζί, με μέτρηση αντί για εντυπώσεις, επικοινωνήστε μαζί μου.