Προαπαιτούμενα
Ασφαλής εξυπηρέτηση μέσω HTTPS
Λάβετε πιστοποιητικό SSL/TLS
Διαμορφώστε τον διακομιστή Ιστού σας ώστε να χρησιμοποιεί το ιδιωτικό κλειδί και το πιστοποιητικό
Προαπαιτούμενα
- Ένας διακομιστής Vultr με ενημερωμένο Arch Linux (δείτε αυτό το άρθρο .)
- Ένας διακομιστής ιστού που λειτουργεί, είτε Apache είτε Nginx
- Πρόσβαση Sudo
- Οι εντολές που απαιτούνται για εκτέλεση ως ρίζα έχουν το πρόθεμα από
#, και εκείνες που μπορούν να εκτελεστούν ως κανονικός χρήστης με $. Ο συνιστώμενος τρόπος για να εκτελέσετε εντολές ως root είναι, ως κανονικός χρήστης, να προσθέσετε πρόθεμα σε καθεμία από αυτές με sudo.
- Έχετε εγκατεστημένο ένα πρόγραμμα επεξεργασίας κειμένου και εξοικειωθείτε με αυτό, όπως vi, vim, nano, emacs ή άλλο παρόμοιο πρόγραμμα επεξεργασίας.
Ασφαλής εξυπηρέτηση μέσω HTTPS
Η εξυπηρέτηση περιεχομένου μέσω HTTPS μπορεί να χρησιμοποιεί εξαιρετικά ισχυρή κρυπτογράφηση, έτσι ώστε κανείς που παρεμποδίζει την κυκλοφορία μεταξύ του χρήστη και του διακομιστή ιστού δεν μπορεί να το διαβάσει. Όχι μόνο κρυπτογραφεί την ίδια την επισκεψιμότητα, αλλά και τη διεύθυνση URL στην οποία προσπελάζεται, η οποία διαφορετικά μπορεί να εκθέσει πληροφορίες. Εδώ και αρκετό καιρό, η Google καθορίζει εν μέρει τις κατατάξεις αναζήτησης με βάση το αν μια σελίδα χρησιμοποιεί HTTPS, ως μέρος της πρωτοβουλίας HTTPS Everywhere.
Σημείωση : μια αναζήτηση DNS αποκαλύπτει το όνομα τομέα στον οποίο είναι συνδεδεμένος, αλλά ολόκληρη η διεύθυνση URL δεν εκτίθεται κατά τη διάρκεια αυτής της διαδικασίας.
Λάβετε πιστοποιητικό SSL/TLS
Τεχνικά, το TLS αντικατέστησε το SSL για Πιστοποιητικά HTTPS, αλλά τα περισσότερα μέρη απλώς συνέχισαν να καλούν Πιστοποιητικά TLS με τον πιο δημοφιλή όρο Πιστοποιητικά SSL. Ακολουθώντας την κοινή χρήση, αυτός ο οδηγός θα κάνει το ίδιο.
Για να χρησιμοποιήσετε το HTTPS, ο διακομιστής ιστού σας χρειάζεται ένα ιδιωτικό κλειδί ( .key) για ιδιωτική χρήση και ένα πιστοποιητικό ( .crt) για δημόσια κοινή χρήση, το οποίο περιλαμβάνει ένα δημόσιο κλειδί. Πρέπει να υπογραφεί πιστοποιητικό. Μπορείτε να το υπογράψετε μόνοι σας, αλλά τα σύγχρονα προγράμματα περιήγησης θα παραπονεθούν ότι δεν αναγνωρίζουν τον υπογράφοντα. Για παράδειγμα, το Chrome θα εμφανίσει: Your connection is not private. Attackers might be trying to steal your information... NET::ERR_CERT_AUTHORITY_INVALID. Εάν μόνο μια ιδιωτική ομάδα ατόμων θα χρησιμοποιεί τον ιστότοπο, αυτό μπορεί να γίνει αποδεκτό, επειδή τα προγράμματα περιήγησης θα επιτρέψουν έναν τρόπο να προχωρήσετε. Για παράδειγμα, στο Chrome, κάντε κλικ στο "Για προχωρημένους" και μετά στο "Προχωρήστε σε... (μη ασφαλές)". θα εξακολουθεί να δείχνει "Not safe" και θα διαγράψει το "https".
Λάβετε υπόψη ότι αυτή η διαδικασία θα σας ζητήσει τη χώρα, την πολιτεία/παροχή, την τοποθεσία, τον οργανισμό, την οργανωτική μονάδα και κοινά ονόματα και τη διεύθυνση email σας. όλα αυτά είναι προσβάσιμα στο πρόγραμμα περιήγησης οποιουδήποτε χρήστη που συνδέεται στον ιστότοπό σας μέσω HTTPS.
Σημειώστε επίσης ότι εάν δίνετε πιστοποιητικά εικονικών κεντρικών υπολογιστών, θα χρειαστεί να δώσετε διαφορετικά ονόματα αρχείων παρακάτω και να τα υποδείξετε στις διαμορφώσεις εικονικού κεντρικού υπολογιστή σας.
Μεταβείτε στον κατάλληλο κατάλογο για τον διακομιστή ιστού σας.
Εάν εγκαταστήσατε το Apache:
$ cd /etc/httpd/conf
Εάν εγκαταστήσατε το Nginx:
$ cd /etc/nginx
Μόλις μπείτε στον κατάλληλο κατάλογο, δημιουργήστε ένα ιδιωτικό κλειδί ( server.key) και ένα αυτο-υπογεγραμμένο πιστοποιητικό ( server.crt):
# openssl req -new -x509 -nodes -newkey rsa:4096 -keyout server.key -out server.crt -days 825
Ορίστε δικαιώματα μόνο για ανάγνωση και επιτρέψτε μόνο την ανάγνωση του ιδιωτικού κλειδιού από τη ρίζα:
# chmod 400 server.key
# chmod 444 server.crt
Εναλλακτικά, μπορείτε να αποκτήσετε ένα πιστοποιητικό υπογεγραμμένο από μια αξιόπιστη αρχή έκδοσης πιστοποιητικών. Μπορείτε να πληρώσετε διάφορες εταιρείες (αρχές έκδοσης πιστοποιητικών) για να υπογράψουν το πιστοποιητικό σας για εσάς. Όταν εξετάζετε τις αρχές έκδοσης πιστοποιητικών, μπορεί να είναι σημαντικό να εξετάσετε ποια προγράμματα περιήγησης και ποιες εκδόσεις θα τα αναγνωρίσουν. Ορισμένες νεότερες αρχές έκδοσης πιστοποιητικών ενδέχεται να μην αναγνωρίζονται ως πιο επίσημες από ένα αυτο-υπογεγραμμένο πιστοποιητικό σε παλιές εκδόσεις του προγράμματος περιήγησης.
Συνήθως δεν χρειάζεστε μόνο μια δημόσια διεύθυνση IP, αλλά και ένα όνομα τομέα. Ορισμένες αρχές έκδοσης πιστοποιητικών μπορούν να εκδώσουν ένα πιστοποιητικό σε μια δημόσια διεύθυνση IP, αλλά αυτό γίνεται σπάνια.
Πολλοί πάροχοι προσφέρουν μια δωρεάν δοκιμή 30 ημερών, με την οποία συνιστάται να ξεκινήσετε, ώστε να μπορείτε να βεβαιωθείτε ότι η διαδικασία λειτουργεί για εσάς προτού πληρώσετε για αυτήν. Οι τιμές μπορεί να ποικίλλουν από μερικά δολάρια ετησίως έως εκατοντάδες, ανάλογα με τον τύπο του και επιλογές όπως πολλαπλοί τομείς ή υποτομείς. Ένα τυπικό πιστοποιητικό θα υποδεικνύει μόνο ότι η αρχή που υπογράφει έχει επαληθεύσει ότι το άτομο που λαμβάνει το πιστοποιητικό μπορεί να κάνει αλλαγές στον τομέα. Ένα πιστοποιητικό εκτεταμένης επικύρωσης θα υποδεικνύει επίσης ότι η αρχή υπογραφής πραγματοποίησε κάποια επιμέλεια ελέγχου του αιτούντος και, στα σύγχρονα προγράμματα περιήγησης, θα εμφανίσει μια πράσινη γραμμή μέσα ή κοντά στη διεύθυνση URL. Κατά την επαλήθευση ότι μπορείτε να κάνετε αλλαγές στον τομέα, ορισμένες αρχές υπογραφής θα σας ζητήσουν να λαμβάνετε email σε μια σημαντική διεύθυνση στο όνομα τομέα, όπως π.χ.admin@your-domain.com. Πολλοί προσφέρουν εναλλακτική επαλήθευση, όπως να σας δίνουν ένα αρχείο για να τοποθετήσετε στον διακομιστή σας, όπως να τοποθετήσουν το αρχείο τους /srv/http/.well-known/pki-validation/για Apache ή /usr/share/nginx/html/.well-known/pki-validation/για Nginx, για διαμορφώσεις καταλόγου μεμονωμένων φιλοξενίας. ή δημιουργώντας προσωρινά μια καταχώριση CNAME που σας παρέχουν στις εγγραφές DNS του τομέα σας.
Η αρχή υπογραφής που θα επιλέξετε μπορεί να έχει ελαφρώς διαφορετικά βήματα, αλλά οι περισσότεροι θα αποδεχτούν την ακόλουθη διαδικασία:
Στον κατάλληλο κατάλογο, δημιουργήστε ένα ιδιωτικό κλειδί ( server.key):
# openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:4096 -out server.key
Ορίστε το ιδιωτικό κλειδί σε μόνο για ανάγνωση, μόνο μέσω root:
# chmod 400 server.key
Δημιουργήστε ένα αίτημα υπογραφής πιστοποιητικού ( server.csr). Πρέπει να βάλετε το όνομα τομέα σας όταν σας ζητήσει το Common Name, και μπορείτε να αφήσετε κενό τον κωδικό πρόσβασης πρόκλησης:
# openssl req -new -sha256 -key server.key -out server.csr
Ορίστε το αίτημα υπογραφής πιστοποιητικού σε μόνο για ανάγνωση, μόνο μέσω root:
# chmod 400 server.csr
Δείτε τα περιεχόμενα του αιτήματος υπογραφής πιστοποιητικού. Αυτές οι πληροφορίες είναι κωδικοποιημένες στο base64, επομένως θα μοιάζουν με τυχαίους χαρακτήρες:
# cat server.csr
-----BEGIN CERTIFICATE REQUEST-----
.....
-----END CERTIFICATE REQUEST-----
Περάστε από τη διαδικασία της αρχής υπογραφής σας και, όταν σας ζητηθεί να επικολλήσετε το CSR σας, αντιγράψτε και επικολλήστε ολόκληρο το αρχείο, συμπεριλαμβανομένων των -----γραμμών. Ανάλογα με την αρχή υπογραφής που επιλέξατε και τον τύπο του πιστοποιητικού, μπορεί να σας δώσει αμέσως το υπογεγραμμένο πιστοποιητικό ή μπορεί να είναι αρκετές ημέρες. Μόλις σας δώσουν το υπογεγραμμένο πιστοποιητικό, αντιγράψτε το (συμπεριλαμβανομένων των γραμμών -----BEGIN CERTIFICATE-----και -----END CERTIFICATE-----) σε ένα αρχείο με το όνομα server.crt, στον κατάλληλο κατάλογο, που δίνεται παραπάνω για τον διακομιστή ιστού σας και ρυθμίστε το σε μόνο για ανάγνωση:
# chmod 444 server.crt
Εάν χρησιμοποιείτε τείχος προστασίας, θα πρέπει να ενεργοποιήσετε την εισερχόμενη κυκλοφορία TCP στη θύρα 443.
Για Apache
Επεξεργαστείτε /etc/httpd/conf/httpd.confκαι καταργήστε το σχόλιο αυτών των γραμμών:
LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
Include conf/extra/httpd-ssl.conf
Σημειώστε εάν χρησιμοποιείτε εικονικούς κεντρικούς υπολογιστές, κάνοντας την παραπάνω αλλαγή σε /etc/httpd/conf/httpd.confθα χρησιμοποιήσετε το ίδιο πιστοποιητικό σε όλους τους κεντρικούς υπολογιστές. Για να δώσετε σε κάθε κεντρικό υπολογιστή το δικό του πιστοποιητικό για να αποφύγετε τα προγράμματα περιήγησης να διαμαρτύρονται για το πιστοποιητικό που δεν ταιριάζει με το όνομα τομέα, πρέπει να επεξεργαστείτε κάθε ένα από τα αρχεία διαμόρφωσής του /etc/httpd/conf/vhosts/ώστε να οδηγεί στο δικό του πιστοποιητικό και ιδιωτικό κλειδί:
- Αλλαγή
<VirtualHost *:80>σε <VirtualHost *:80 *:443>.
Μέσα στην VirtualHostενότητα, προσθέστε τα ακόλουθα:
SSLEngine on
SSLCertificateFile "/etc/httpd/conf/YOUR-DOMAIN-NAME.com.crt"
SSLCertificateKeyFile "/etc/httpd/conf/YOUR-DOMAIN-NAME.com.key"
Επανεκκινήστε τον Apache:
# systemctl restart httpd
Για το Nginx
Επεξεργαστείτε /etc/nginx/nginx.confκαι κοντά στο κάτω μέρος, αφαιρέστε το σχόλιο από την HTTPS serverενότητα και αλλάξτε τις γραμμές ως εξής:
ssl_certificate server.crt;
ssl_certificate_key server.key;
root /usr/share/nginx/html;
Σημειώστε ότι εάν χρησιμοποιείτε εικονικούς κεντρικούς υπολογιστές, η παραπάνω αλλαγή σε /etc/nginx/nginx.confθα στείλει όλους τους κεντρικούς υπολογιστές στη συγκεκριμένη τοποθεσία. Για να δώσετε σε κάθε κεντρικό υπολογιστή το δικό του πιστοποιητικό, πρέπει να επεξεργαστείτε κάθε ένα από τα αρχεία διαμόρφωσής του για /etc/nginx/sites-enabled/να έχετε ένα πρόσθετο μπλοκ διακομιστή για να οδηγεί στο δικό του πιστοποιητικό και ιδιωτικό κλειδί:
server {
listen 443 ssl;
server_name YOUR-DOMAIN-NAME.com;
ssl_certificate YOUR-DOMAIN-NAME.com.crt;
ssl_certificate_key YOUR-DOMAIN-NAME.com.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root /usr/share/nginx/YOUR-DOMAIN-NAME.com;
index index.html index.htm;
}
}
Επανεκκινήστε το Nginx:
# systemctl restart nginx