Ενότητα 3 · 3.1
Https και το certificate
Ενότητα 3: Διεύθυνση, https και χρήστες · Χρόνος ανάγνωσης: 8 λεπτά
Μαθησιακός στόχος: Μετά από αυτό το μάθημα θα μπορείτε να ρυθμίσετε έναν ιστότοπο WordPress πλήρως σε https και θα γνωρίζετε τι κάνουν το WordPress-adres και το siteadres.
Βασικές έννοιες: TLS, certificate, Let's Encrypt, αυτόματη ανανέωση, WordPress-adres (siteurl), siteadres (home), WP_HOME και WP_SITEURL, HSTS, αποκλεισμός πρόσβασης
Τι κάνει το https
Με το https όλα όσα ανταλλάσσονται μεταξύ browser και server κρυπτογραφούνται: κωδικοί πρόσβασης, φόρμες, cookies, ακόμη και απλές σελίδες. Χωρίς https, οποιοσδήποτε βρίσκεται στο ίδιο δίκτυο (ένα δημόσιο wifi, ένα παραβιασμένο router) μπορεί να διαβάσει τα δεδομένα και να τροποποιήσει ακόμη και τη σελίδα. Οι browsers εμφανίζουν έναν ιστότοπο χωρίς https ως "μη ασφαλή" και ορισμένες λειτουργίες (όπως η τοποθεσία ή η κάμερα) λειτουργούν μόνο με https.
Η κρυπτογράφηση ονομάζεται TLS. Για να αποδειχθεί ότι ο browser επικοινωνεί πράγματι με το example.com και όχι με κάποιον ενδιάμεσο, ο server διαθέτει ένα certificate: μια ψηφιακή απόδειξη, υπογεγραμμένη από έναν εκδότη που εμπιστεύονται οι browsers. Το certificate αναφέρει τα ονόματα για τα οποία ισχύει και μέχρι πότε.
Δωρεάν certificates και ανανέωση
Το Let's Encrypt εκδίδει δωρεάν certificates. Σχεδόν κάθε πάροχος φιλοξενίας τα αιτείται αυτόματα και τα ανανεώνει επίσης αυτόματα. Ένα certificate από το Let's Encrypt ισχύει πλέον για 90 ημέρες, και το Let's Encrypt έχει ανακοινώσει ότι θα μειώσει σταδιακά αυτή τη διάρκεια ισχύος σε 45 ημέρες. Η χειροκίνητη ανανέωση επομένως δεν αποτελεί επιλογή: πρέπει να γίνεται αυτόματα.
Ένα επί πληρωμή certificate δεν κρυπτογραφεί καλύτερα. Η διαφορά βρίσκεται στον επιπλέον έλεγχο του οργανισμού (και μερικές φορές σε μια εγγύηση). Για τους περισσότερους ιστοτόπους, ένα δωρεάν certificate είναι απολύτως επαρκές.
Σε τι πρέπει να προσέξετε:
- Το certificate πρέπει να καλύπτει κάθε όνομα που μπορεί να πληκτρολογήσει ένας επισκέπτης:
example.comαλλά καιwww.example.com. Ακόμη και το όνομα που κάνει μόνο ανακατεύθυνση, γιατί ο browser ελέγχει το certificate πριν από την ανακατεύθυνση. - Η αυτόματη ανανέωση λειτουργεί μόνο αν το DNS δείχνει προς τον server σας. Αν έχετε μεταφέρει το DNS ή έχετε τοποθετήσει μπροστά έναν proxy (όπως το Cloudflare), ελέγξτε αν η ανανέωση συνεχίζει να λειτουργεί.
- Μια εγγραφή CAA στο DNS μπορεί να καθορίσει ποιοι εκδότες επιτρέπεται να δημιουργούν certificates. Αν το Let's Encrypt δεν περιλαμβάνεται εκεί, η αίτηση αποτυγχάνει (μάθημα 5.2 του μαθήματος DNS).
Δύο διευθύνσεις στο WordPress
Στο Ρυθμίσεις > Γενικά υπάρχουν δύο διευθύνσεις. Φαίνονται περιττά διπλές, αλλά σημαίνουν κάτι διαφορετικό:
| Πεδίο | Στη βάση δεδομένων | Σημασία |
|---|---|---|
| WordPress-adres (URL) | siteurl | Πού βρίσκονται τα αρχεία του WordPress (wp-admin, wp-includes) |
| Siteadres (URL) | home | Η διεύθυνση που χρησιμοποιούν οι επισκέπτες |
Συνήθως είναι ίδιες, για παράδειγμα και οι δύο https://example.com. Διαφέρουν μόνο όταν το WordPress βρίσκεται σε υποφάκελο αλλά ο ιστότοπος πρέπει να εμφανίζεται στον κύριο φάκελο.
Με αυτές τις διευθύνσεις το WordPress δημιουργεί όλους τους συνδέσμους: προς σελίδες, stylesheets, εικόνες, τον Πίνακα Ελέγχου. Αν εδώ αναγράφεται http://, τότε το WordPress δημιουργεί σελίδες με συνδέσμους http://, ακόμη και αν ο επισκέπτης έρχεται μέσω https. Αυτό δημιουργεί μικτό περιεχόμενο (mixed content) (μάθημα 3.2) και ανακατευθύνσεις μπρος πίσω.
Μετάβαση ενός ιστοτόπου σε https
Αν έχετε έναν υπάρχοντα ιστότοπο σε http, αυτά είναι τα βήματα:
- Αίτηση certificate και για τα δύο ονόματα και έλεγχος ότι το
https://example.comλειτουργεί (θα δείτε τότε μια σελίδα WordPress, ίσως ακόμη χωρίς μορφοποίηση). - αντιγράφου ασφαλείας (μάθημα 8.1).
- Ρύθμιση και των δύο διευθύνσεων στο Ρυθμίσεις > Γενικά σε
https://και αποθήκευση. Θα αποσυνδεθείτε· συνδεθείτε ξανά μέσω https. - Μετατροπή παλιών συνδέσμων στο περιεχόμενο από
http://example.comσεhttps://example.com. Κάντε το αυτό με ένα εργαλείο που κατανοεί σειριοποιημένα δεδομένα (serialized data), όπως τοwp search-replaceή ένα πρόσθετο αναζήτησης και αντικατάστασης (μάθημα 3.2), ποτέ με απλή εντολή SQL. - Ανακατεύθυνση: ρυθμίστε τον web server ώστε να στέλνει όλα τα αιτήματα σε http με κωδικό 301 προς https (μάθημα 3.2). Πολλοί πάροχοι φιλοξενίας διαθέτουν ένα σχετικό κουτάκι επιλογής· διαφορετικά, μερικές γραμμές στο
.htaccess. - Έλεγχος με την άσκηση αυτού του μαθήματος και αυτήν του μαθήματος 3.2.
Αποκλεισμός πρόσβασης: όταν η διεύθυνση είναι λανθασμένη
Αν πληκτρολογήσετε κάποιο τυπογραφικό λάθος στις διευθύνσεις (htps://, λανθασμένο domain), το WordPress θα σας στείλει μετά την αποθήκευση σε αυτή τη λανθασμένη διεύθυνση. Δεν μπορείτε πλέον να προσπελάσετε τον Πίνακα Ελέγχου. Μην πανικοβάλλεστε, υπάρχουν δύο διέξοδοι:
Μέσω του wp-config.php. Τοποθετήστε πάνω από τη γραμμή "σταματήστε την επεξεργασία":
define( 'WP_HOME', 'https://example.com' );
define( 'WP_SITEURL', 'https://example.com' );Αυτές οι γραμμές υπερισχύουν των τιμών στη βάση δεδομένων. Τα πεδία στο Ρυθμίσεις > Γενικά γίνονται τότε γκρίζα. Συνδεθείτε, ορίστε τις σωστές τιμές στη βάση δεδομένων, και αφαιρέστε ξανά τις γραμμές (ή αφήστε τις σκόπιμα, ώστε κανείς να μην μπορεί να αλλάξει κατά λάθος τις διευθύνσεις μέσω του Πίνακα Ελέγχου).
Μέσω phpMyAdmin. Ανοίξτε τον πίνακα wp_options και προσαρμόστε τις τιμές των siteurl και home.
HSTS: να θυμάται ο browser
Με την κεφαλίδα HSTS (Strict-Transport-Security) ο server λέει στον browser: "έλα εδώ για το προσεχές διάστημα μόνο μέσω https." Ο browser στη συνέχεια μετατρέπει μόνος του κάθε http:// σε https://, χωρίς να κάνει πρώτα ένα μη προστατευμένο αίτημα.
Strict-Transport-Security: max-age=31536000; includeSubDomainsΤο HSTS είναι ένα καλό επιπλέον βήμα, αλλά με μια προειδοποίηση: ένας browser που έχει δει το HSTS αρνείται στη συνέχεια να ανοίξει τον ιστότοπο χωρίς έγκυρο certificate, ακόμη και με την επιλογή "συνέχεια ούτως ή άλλως". Με το includeSubDomains αυτό ισχύει για κάθε subdomain. Αν έχετε ένα subdomain χωρίς certificate (για παράδειγμα ένα παλιό εσωτερικό σύστημα), αυτό γίνεται μετά το HSTS μη προσβάσιμο. Ξεκινήστε λοιπόν με μικρό max-age (για παράδειγμα μία ημέρα, 86400), ελέγξτε τα πάντα, και έπειτα παρατείνετε το.
Στην πράξη: έτσι φαίνεται σε ένα panel
Ως παράδειγμα χρησιμοποιούμε το DirectAdmin. Στο cPanel η ενότητα ονομάζεται SSL/TLS Status (AutoSSL), στο Plesk SSL/TLS Certificates.
- Ανοίξτε SSL-certificaten στο domain σας και επιλέξτε Δωρεάν και αυτόματο certificate από το Let's Encrypt.
- Επιλέξτε
example.comκαιwww.example.comκαι αιτηθείτε το certificate. - Στις ρυθμίσεις domain, ενεργοποιήστε το κουτάκι που στέλνει πάντα τους επισκέπτες σε https (στο DirectAdmin: Forceer SSL met https omleiding). Χρησιμοποιήστε μόνο έναν τρόπο ανακατεύθυνσης: δύο διαφορετικοί ταυτόχρονα μπορεί να προκαλέσουν βρόχο ("πάρα πολλές ανακατευθύνσεις").
- Πηγαίνετε στο WordPress στο Ρυθμίσεις > Γενικά και ορίστε και τις δύο διευθύνσεις σε
https://.
Σύνοψη
- Το https κρυπτογραφεί όλα όσα ανταλλάσσονται μεταξύ browser και server· το certificate αποδεικνύει ποιος είναι ο server.
- Τα δωρεάν certificates του Let's Encrypt έχουν σύντομη διάρκεια ισχύος και ανανεώνονται αυτόματα· πρέπει να καλύπτουν κάθε όνομα που πληκτρολογεί ένας επισκέπτης.
- Το WordPress-adres (siteurl) και το siteadres (home) πρέπει να είναι και τα δύο σε
https://. - Αν αποκλειστείτε λόγω λανθασμένης διεύθυνσης, επαναφέρετε με WP_HOME και WP_SITEURL στο wp-config.php ή στο phpMyAdmin.
- Το HSTS είναι ένα καλό επιπλέον βήμα· ξεκινήστε με σύντομη διάρκεια ισχύος.
Κουίζ
Άσκηση
Άσκηση A3.1: Είναι σωστό το πιστοποιητικό σας; Συμπληρώστε τη διεύθυνση του ιστοτόπου σας. Το πρόγραμμα δημιουργεί μια σύνδεση TLS με το domain χωρίς www και με το www (αν υπάρχει) και ελέγχει: είναι το certificate έγκυρο και αξιόπιστο, καλύπτει και τα δύο ονόματα, ισχύει για περισσότερες από 14 ημέρες, και στέλνει ο ιστότοπος κεφαλίδα HSTS; Αν λείπει το HSTS, αυτό εμφανίζεται πορτοκαλί με εξήγηση, όχι ως σφάλμα.
Περαιτέρω ανάγνωση
Αυτά τα άρθρα περιγράφουν τα βήματα στα panel του WebOké· σε άλλα panel λειτουργούν με παρόμοιο τρόπο.
- Εγχειρίδιο DirectAdmin 6.1: Τι είναι το SSL και πώς το ρυθμίζει το WebOké;
- Εγχειρίδιο DirectAdmin 6.2: Αίτηση για ένα δωρεάν πιστοποιητικό Let's Encrypt
- Εγχειρίδιο DirectAdmin 6.3: Πιστοποιητικό για www, subdomains και wildcard
- Εγχειρίδιο DirectAdmin 6.4: Επισκέπτες πάντα προς https
- Ενεργοποίηση, ανανέωση και επίλυση προβλημάτων πιστοποιητικού SSL
- Η διαφορά ανάμεσα σε δωρεάν και επί πληρωμή πιστοποιητικό
- Δωρεάν μάθημα DNS 5.2: CAA: ποιος επιτρέπεται να εκδίδει πιστοποιητικά;
