Πώς να δημιουργήσετε ένα τοπικό αυτο-υπογεγραμμένο πιστοποιητικό SSL στο CentOS 8


Το SSL (Secure Socket Layer) και η βελτιωμένη έκδοσή του, TLS (Transport Socket Layer), είναι πρωτόκολλα ασφαλείας που χρησιμοποιούνται για την ασφάλεια της κυκλοφορίας Ιστού που αποστέλλεται από το πρόγραμμα περιήγησης ιστού ενός πελάτη σε έναν διακομιστή ιστού.

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

Τι είναι ένα αυτο-υπογεγραμμένο πιστοποιητικό SSL;

Ένα αυτο-υπογεγραμμένο πιστοποιητικό SSL, σε αντίθεση με άλλα πιστοποιητικά SSL που είναι υπογεγραμμένα και αξιόπιστα από μια Αρχή έκδοσης πιστοποιητικών (CA), είναι ένα πιστοποιητικό που υπογράφεται από ένα άτομο που το κατέχει.

Είναι εντελώς δωρεάν η δημιουργία ενός και είναι ένας φθηνός τρόπος κρυπτογράφησης του τοπικά φιλοξενούμενου web server σας. Ωστόσο, η χρήση ενός αυτουπογεγραμμένου πιστοποιητικού SSL αποθαρρύνεται ιδιαίτερα σε περιβάλλοντα παραγωγής για τους ακόλουθους λόγους:

  1. Δεδομένου ότι δεν είναι υπογεγραμμένο από μια Αρχή έκδοσης πιστοποιητικών, ένα αυτουπογεγραμμένο πιστοποιητικό SSL δημιουργεί ειδοποιήσεις σε προγράμματα περιήγησης ιστού που προειδοποιούν τους χρήστες για πιθανούς κινδύνους σε περίπτωση που αποφασίσουν να συνεχίσουν. Αυτές οι ειδοποιήσεις είναι ανεπιθύμητες και θα αποτρέψουν τους χρήστες από το να επισκεφτούν τον ιστότοπό σας, οδηγώντας ενδεχομένως σε μείωση της επισκεψιμότητας στον ιστό. Ως λύση σε αυτές τις ειδοποιήσεις, οι οργανισμοί συνήθως ενθαρρύνουν τους υπαλλήλους τους να αγνοήσουν απλώς τις ειδοποιήσεις και να προχωρήσουν. Αυτό μπορεί να δημιουργήσει μια επικίνδυνη συνήθεια μεταξύ των χρηστών που μπορεί να αποφασίσουν να συνεχίσουν να αγνοούν αυτές τις ειδοποιήσεις σε άλλους διαδικτυακούς ιστότοπους, πιθανώς να πέσουν θύματα ιστότοπων phishing.
  2. Τα αυτο-υπογεγραμμένα πιστοποιητικά έχουν χαμηλό επίπεδο ασφάλειας, καθώς εφαρμόζουν τεχνολογίες κρυπτογράφησης χαμηλού επιπέδου και κατακερματισμούς. Επομένως, το επίπεδο ασφάλειας ενδέχεται να μην είναι στο ίδιο επίπεδο με τις τυπικές πολιτικές ασφαλείας.
  3. Επιπλέον, δεν υπάρχει υποστήριξη για λειτουργίες υποδομής δημόσιου κλειδιού (PKI).

Τούτου λεχθέντος, η χρήση ενός αυτουπογεγραμμένου πιστοποιητικού SSL δεν είναι κακή ιδέα για τη δοκιμή υπηρεσιών και εφαρμογών σε τοπικό μηχάνημα που απαιτεί κρυπτογράφηση TLS/SSL.

Σε αυτόν τον οδηγό, θα μάθετε πώς να εγκαταστήσετε ένα τοπικό αυτο-υπογεγραμμένο πιστοποιητικό SSL στον διακομιστή web Apache localhost σε ένα σύστημα διακομιστή CentOS 8.

Προαπαιτούμενα:

Πριν ξεκινήσετε, βεβαιωθείτε ότι έχετε τις ακόλουθες βασικές απαιτήσεις:

  1. Μια παρουσία του διακομιστή CentOS 8.
  2. Ο διακομιστής ιστού Apache είναι εγκατεστημένος στον διακομιστή
  3. Ένα όνομα κεντρικού υπολογιστή έχει ήδη διαμορφωθεί και οριστεί στο αρχείο /etc/hosts. Για αυτόν τον οδηγό, θα χρησιμοποιήσουμε το tecmint.local ένα όνομα κεντρικού υπολογιστή για τον διακομιστή μας.

Βήμα 1: Εγκατάσταση Mod_SSL στο CentOS

1. Για να ξεκινήσετε, πρέπει να επαληθεύσετε ότι ο διακομιστής web Apache είναι εγκατεστημένος και εκτελείται.

sudo systemctl status httpd

Εδώ είναι το αναμενόμενο αποτέλεσμα.

Εάν ο διακομιστής ιστού δεν εκτελείται, μπορείτε να τον ξεκινήσετε και να τον ενεργοποιήσετε κατά την εκκίνηση χρησιμοποιώντας την εντολή.

sudo systemctl start httpd
sudo systemctl enable httpd

Στη συνέχεια, μπορείτε να επιβεβαιώσετε εάν το Apache είναι σε λειτουργία.

2. Για να ενεργοποιήσετε την εγκατάσταση και τη ρύθμιση του τοπικού αυτο-υπογεγραμμένου πιστοποιητικού SSL, απαιτείται το πακέτο mod_ssl.

sudo dnf install mod_ssl

Αφού εγκατασταθεί, μπορείτε να επαληθεύσετε την εγκατάστασή του εκτελώντας.

sudo rpm -q mod_ssl

Επίσης, βεβαιωθείτε ότι είναι εγκατεστημένο το πακέτο OpenSSL (τοOpenSSL είναι εγκατεστημένο από προεπιλογή στο CentOS 8).

sudo rpm -q openssl 

Βήμα 2: Δημιουργήστε ένα τοπικό αυτο-υπογεγραμμένο πιστοποιητικό SSL για Apache

3. Με τον διακομιστή web Apache και όλες τις προϋποθέσεις υπό έλεγχο, πρέπει να δημιουργήσετε έναν κατάλογο εντός του οποίου θα αποθηκεύονται τα κρυπτογραφικά κλειδιά.

Σε αυτό το παράδειγμα, δημιουργήσαμε έναν κατάλογο στη διεύθυνση /etc/ssl/private.

sudo mkdir -p /etc/ssl/private

Τώρα δημιουργήστε το τοπικό κλειδί και το αρχείο πιστοποιητικού SSL χρησιμοποιώντας την εντολή:

sudo openssl req -x509 -nodes -newkey rsa:2048 -keyout tecmint.local.key -out tecmint.local.crt

Ας ρίξουμε μια ματιά στο τι αντιπροσωπεύουν μερικές από τις επιλογές στην εντολή:

  • req -x509 – Αυτό σημαίνει ότι χρησιμοποιούμε το x509 Certificate Signing Request (CSR).
  • -nodes – Αυτή η επιλογή δίνει εντολή στο OpenSSL να παραλείψει την κρυπτογράφηση του πιστοποιητικού SSL χρησιμοποιώντας μια φράση πρόσβασης. Η ιδέα εδώ είναι να επιτραπεί στον Apache να μπορεί να διαβάσει το αρχείο χωρίς κανενός είδους παρέμβαση του χρήστη, κάτι που δεν θα ήταν δυνατό εάν παρέχεται μια φράση πρόσβασης.
  • -newkey rsa:2048 – Αυτό υποδηλώνει ότι θέλουμε να δημιουργήσουμε ταυτόχρονα ένα νέο κλειδί και ένα νέο πιστοποιητικό. Το τμήμα rsa:2048 υποδηλώνει ότι θέλουμε να δημιουργήσουμε ένα κλειδί RSA 2048-bit.
  • -keyout – Αυτή η επιλογή καθορίζει πού να αποθηκεύεται το αρχείο ιδιωτικού κλειδιού που δημιουργείται κατά τη δημιουργία.
  • -out – Η επιλογή καθορίζει πού θα τοποθετηθεί το πιστοποιητικό SSL που δημιουργήθηκε.

Βήμα 3: Εγκαταστήστε το τοπικό αυτο-υπογεγραμμένο πιστοποιητικό SSL στον Apache

4. Έχοντας δημιουργήσει το αρχείο πιστοποιητικού SSL, ήρθε η ώρα να εγκαταστήσετε το πιστοποιητικό χρησιμοποιώντας τις ρυθμίσεις του διακομιστή ιστού Apache. Ανοίξτε και επεξεργαστείτε το αρχείο διαμόρφωσης /etc/httpd/conf.d/ssl.conf.

sudo vi /etc/httpd/conf.d/ssl.conf

Βεβαιωθείτε ότι έχετε τις ακόλουθες γραμμές μεταξύ των ετικετών εικονικού κεντρικού υπολογιστή.

<VirtualHost *:443>
    ServerAdmin [email 
    ServerName www.tecmint.local
    ServerAlias tecmint.local
 
    DocumentRoot /var/www/html
 
    SSLEngine on
    SSLCertificateFile /etc/ssl/private/tecmint.local.crt
    SSLCertificateKeyFile /etc/ssl/private/tecmint.local.key
</VirtualHost>

Αποθηκεύστε και βγείτε από το αρχείο. Για να πραγματοποιηθούν οι αλλαγές, επανεκκινήστε τον Apache χρησιμοποιώντας την εντολή:

sudo systemctl restart httpd

5. Για να έχουν πρόσβαση οι εξωτερικοί χρήστες στον διακομιστή σας, πρέπει να ανοίξετε τη θύρα 443 μέσω του τείχους προστασίας όπως φαίνεται.

sudo firewall-cmd --add-port=443 --zone=public --permanent
sudo firewall-cmd --reload

Βήμα 3: Δοκιμή τοπικού αυτουπογεγραμμένου πιστοποιητικού SSL στον Apache

Με όλες τις διαμορφώσεις στη θέση τους, ενεργοποιήστε το πρόγραμμα περιήγησής σας και περιηγηθείτε στη διεύθυνση του διακομιστή σας χρησιμοποιώντας τη διεύθυνση IP ή το όνομα τομέα του διακομιστή χρησιμοποιώντας το πρωτόκολλο https.

Για να απλοποιήσετε τη δοκιμή, μπορείτε να εξετάσετε το ενδεχόμενο ανακατεύθυνσης του πρωτοκόλλου HTTP σε HTTPS στον διακομιστή ιστού Apache. Αυτό γίνεται έτσι ώστε κάθε φορά που περιηγείστε στον τομέα σε απλό HTTP, θα ανακατευθύνεται αυτόματα στο πρωτόκολλο HTTPS.

Περιηγηθείτε λοιπόν στον τομέα ή την IP του διακομιστή σας

https://domain_name/

Θα λάβετε μια ειδοποίηση που θα σας ενημερώνει ότι η σύνδεση δεν είναι ασφαλής όπως φαίνεται. Αυτό θα διαφέρει από το ένα πρόγραμμα περιήγησης στο άλλο. Όπως μπορείτε να μαντέψετε, η ειδοποίηση οφείλεται στο γεγονός ότι το πιστοποιητικό SSL δεν είναι υπογεγραμμένο από την Αρχή έκδοσης πιστοποιητικών και το πρόγραμμα περιήγησης το καταχωρεί και αναφέρει ότι το πιστοποιητικό δεν είναι αξιόπιστο.

Για να προχωρήσετε στον ιστότοπό σας, κάντε κλικ στην καρτέλα «Για προχωρημένους», όπως φαίνεται παραπάνω:

Στη συνέχεια, προσθέστε την εξαίρεση στο πρόγραμμα περιήγησης.

Τέλος, φορτώστε ξανά το πρόγραμμα περιήγησής σας και παρατηρήστε ότι μπορείτε πλέον να έχετε πρόσβαση στον διακομιστή, αν και θα υπάρχει μια προειδοποίηση στη γραμμή URL ότι ο ιστότοπος δεν είναι πλήρως ασφαλής για τον ίδιο λόγο που το πιστοποιητικό SSL είναι αυτο-υπογεγραμμένο και δεν έχει υπογραφεί από τον Αρχή έκδοσης πιστοποιητικών.

Ελπίζουμε ότι μπορείτε τώρα να προχωρήσετε και να δημιουργήσετε και να εγκαταστήσετε ένα αυτο-υπογεγραμμένο πιστοποιητικό SSL στον διακομιστή ιστού Apache localhost στο CentOS 8.