CLOUD CONCEPT
Νερατζιωτίσσης 15, Μαρούσι, Αθήνα, 15124, Αττική
+30 211 8005 401
info@c2.gr
Τα πιστοποιητικά SSL χρησιμοποιούνται από τους web servers για να κρυπτογραφούν την μεταφορά πακέτων ανάμεσα σε client-server(HTTPS σύνδεση). Το Let’s Encrypt είναι μια αρχή πιστοποίησης (CA) που επιτρέπει την εγκατάσταση πιστοποιητικών SSL/TLS. Τα πλεονεκτήματα του Let’s Encrypt είναι ότι πρώτον είναι δωρεάν, και δεύτερον, όλη η διαδικασία εγκατάστασης μπορεί να αυτοματοποιηθεί, κάτι που το κάνει αρκετά εύκολο στη χρήση.
Μαζί θα δούμε πώς μπορούμε να αυτοματοποιήσουμε τη διαδικασία λήψης ενός πιστοποιητικού και να το χρησιμοποιήσουμε με τον Nginx σε Debian 8. Επίσης, θα δούμε πώς να κάνουμε το πιστοποιητικό SSL να ανανεώνεται αυτόματα.
Για να γίνει λήψη ενος πιστοποιητικού, πρέπει πρώτα να εγκαταστήσουμε το Let’s Encrypt Client ή αλλιώς Certbot στον server μας. Θα χρησιμοποιήσουμε την -apt get , αλλά πρώτα πρέπει να εισάγουμε το repository.
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python-certbot-apache
Αν όλα πάνε καλά, το Certbot είναι έτοιμο για χρήση.
Το Certbot μπορεί να ρυθμίσει αυτόματα το SSL για το Nginx, αλλά πρέπει να είναι σε θέση να βρει το σωστό block server στο config. Το κάνει αυτό αναζητώντας μια οδηγία server_name που αντιστοιχεί στον τομέα στον οποίο ζητάμε ένα πιστοποιητικό. Αν ξεκινάτε με μια νέα εγκατάσταση του Nginx, μπορείτε να ενημερώσετε το προεπιλεγμένο αρχείο ρυθμίσεων:
sudo vi /etc/nginx/sites-available/default
Βρείτε την υπάρχουσα γραμμή server_name:
/etc/nginx/sites-available/default
server_name localhost;
Αντικαταστήστε το localhost με το όνομα τομέα σας:
/etc/nginx/sites-available/default
server_name example.com www.example.com;
Αποθηκεύστε το αρχείο και κλείστε το. Επαληθεύστε τη σύνταξη των τροποποιήσεων διαμόρφωσης με:
sudo nginx -t
Εάν αυτό τρέχει χωρίς σφάλματα, επαναλάβετε τη φόρτωση του Nginx για να φορτώσετε το νέο configuration:
sudo service nginx reload
Το Certbot θα πρέπει να είναι τώρα σε θέση να βρει το σωστό μπλοκ διακομιστή και να το ενημερώσει. Τώρα θα ενημερώσουμε το τείχος προστασίας για να επιτρέψουμε το HTTPS traffic.
Αν έχουμε ενεργοποιήσει το ufw firewall, πρέπει να το ρυθμίσουμε ώστε να επιτρέπει https traffic.
Αρχικά βλέπουμε τις τωρινές του ρυθμίσεις:
sudo ufw status
Το πιο πιθανό είναι να επιτρέπουν μόνο http traffic
Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)
Για να επιτρέψουμε HTTP traffic πρέπει να διαγράψουμε το προφιλ Nginx HTTP και να προσθέσουμε το προφίλ Nginx Full:
sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Nginx HTTP'
Το Certbot παρέχει διάφορους τρόπους για την απόκτηση πιστοποιητικών SSL μέσω διαφόρων πρόσθετων στοιχείω. Το plugin Nginx θα φροντίσει να αναδιαμορφώσει το Nginx και να φορτώσει ξανά το config όποτε είναι απαραίτητο:
sudo certbot --nginx -d example.com -d www.example.com
Αυτό τρέχει certbot με το plugin -nginx, χρησιμοποιώντας -d για να καθορίσουμε τα ονόματα στα οποία θέλουμε να είναι έγκυρο το πιστοποιητικό.
Αφού εκτελέσουμε την παραπάνω εντολή θα μας ζητηθούν κάποιες πληροφορίες όπως το email μας για επαναφορά μυσιτκού κλειδιού, αν θέλουμε μόνιμα το http ή να υπάρχει εναλλαγή ανάμεσα σε http και https κλπ.
Οταν τελειώσει όλη η διαδικασία τα αρχεία του πιστοποιητικού, λογικά θα είναι στον φάκελο /etc/letsencrypt/live.
Για να δούμε ότι όλα πήγαν καλά, επισκεφτόμαστε τον ιστότοπο μας γράφοντας https: // και παρατηρούμε την ένδειξη ασφαλείας του προγράμματος περιήγησης. Θα πρέπει να μας λεει ότι ο ιστότοπος είναι σωστά ασφαλισμένος (συνήθως με μια πράσινη κλειδαριά).
Τα πιστοποιητικά του Let’s Encrypt διαρκούν μόνο για 90 μέρες. Για αυτό θα χρησιμοποιήσουμε το cron, ένα service των συστημάτων Linux, που τρέχει περιοδικές εργασίες, για να ανανεώνουμε το πιστοποιητικό αυτόματα.
Αρχικά θα ανοίξουμε το crontab, ένα text file στο οποίο γράφουμε τις εργασίες που θέλουμε να εκτελέσει το cron.
sudo crontab -e
Αφού ανοίξει ο text editor θα προσθέσουμε την ακόλουθη γραμμή.
15 3 * * * /usr/bin/certbot renew --quiet
Η παραπάνω γραμμή λέει στο certbot να κάνει ανανέωση κάθε μέρα στις 3:15 μ.μ. Προφανώς αυτό είναι ένα παράδειγμα και μπορούμε να διαλέξουμε ό,τι ώρα θέλουμε.
Το επίθεμα --quiet δηλώνει στο certbot να μην περίμενει είσοδο απο το χρήστη για να ξεκινήσει τη διαδικασία, αλλά ούτε και να βγάλει κάποια έξοδο.
Συνοψίζοντας, όλη η διαδικασία που περιγράψαμε είναι μια καλή αρχή για να χρησιμοποιήσετε κρυπτογράφηση στον ιστοχώρο σας και να αυξήσετε την ασφάλεια του. Για περισσότερες πληροφορίες σχετικά με το Certbot και την Let’s Encrypt μπορείτε να δείτε το επίσημο documentation εδώ.
Μάθετε περισσότερα για τις υπηρεσίες μας εδώ.
Ακολουθήστε μας σε LinkedIn, Facebook & Instagram για να μένετε ενημερωμένοι!