Εγκαταστήστε το Let’s Encrypt SSL Certificate for Nginx στο RHEL 9/8


Σε αυτό το άρθρο, θα σας καθοδηγήσουμε για το πώς να δημιουργήσετε και να εγκαταστήσετε ένα πιστοποιητικό SSL/TLS που αποκτήθηκε δωρεάν από την Let's Encrypt Certificate Authority που θα χρησιμοποιήσουμε για την ασφάλεια των συναλλαγών HTTP του διακομιστή ιστού Nginx στο RHEL και Διανομές που βασίζονται σε RHEL όπως Fedora, Rocky Linux και AlmaLinux.

Αν θέλετε να εγκαταστήσετε το Let’s Encrypt for Apache σε διανομές RHEL και RHEL, ακολουθήστε αυτόν τον παρακάτω οδηγό:

Απαιτήσεις

  • Ένα καταχωρημένο όνομα τομέα με έγκυρες εγγραφές DNS A για να οδηγεί πίσω στη δημόσια διεύθυνση IP του διακομιστή.
  • Διακομιστής ιστού Nginx εγκατεστημένος με ενεργοποιημένο το SSL και ενεργοποιημένο τους εικονικούς κεντρικούς υπολογιστές (μόνο για πολλούς τομείς ή υποτομείς που φιλοξενούν).

Ρύθμιση περιβάλλοντος δοκιμών

Βήμα 1: Εγκαταστήστε τον διακομιστή Web Nginx στα συστήματα RHEL

1. Στο πρώτο βήμα, σε περίπτωση που δεν έχετε ήδη εγκαταστήσει τον δαίμονα Nginx, εκδώστε τις παρακάτω εντολές με δικαιώματα root για να εγκαταστήσετε τον διακομιστή ιστού Nginx από τα αποθετήρια Epel.


------------- On RHEL, Rocky & AlmaLinux 9 ------------- 
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm

------------- On RHEL, Rocky & AlmaLinux 8 -------------
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

------------- Install Nginx Web Server -------------
yum install nginx

Σημείωση: Οι χρήστες του Fedora δεν χρειάζεται να εγκαταστήσουν το αποθετήριο epel.

Βήμα 2: Εγκαταστήστε το Let’s Encrypt (Certbot) στα συστήματα RHEL

2. Η ταχύτερη μέθοδος εγκατάστασης του προγράμματος-πελάτη Let's Encrypt σε συστήματα Linux είναι η εγκατάσταση πακέτων certbot και python3-certbot-nginx από το αποθετήριο epel .


dnf install certbot python3-certbot-nginx

3. Αφού εγκατασταθεί ο πελάτης certbot, επαληθεύστε την εγκατεστημένη έκδοση του λογισμικού Let’s Encrypt εκτελώντας την παρακάτω εντολή:


certbot --version

certbot 1.30.0

Βήμα 3: Αποκτήστε ένα δωρεάν πιστοποιητικό Let’s Encrypt SSL για το Nginx

4. Η διαδικασία απόκτησης ενός δωρεάν Πιστοποιητικού SSL/TLS για το Nginx θα γίνει με μη αυτόματο τρόπο χρησιμοποιώντας το Let's Encrypt Standalone πρόσθετο.

Αυτή η μέθοδος απαιτεί ότι η θύρα 80 πρέπει να είναι ελεύθερη κατά τη διάρκεια του χρόνου που ο πελάτης Let’s Encrypt επικυρώνει την ταυτότητα του διακομιστή και δημιουργεί πιστοποιητικά.

Έτσι, εάν το Nginx εκτελείται ήδη, σταματήστε τον δαίμονα με την ακόλουθη εντολή και εκτελέστε το βοηθητικό πρόγραμμα ss για να επιβεβαιώσετε ότι η θύρα 80 δεν χρησιμοποιείται πλέον στη στοίβα δικτύου.


service nginx stop
systemctl stop nginx
ss -tln

5. Τώρα ήρθε η ώρα να αποκτήσετε ένα δωρεάν πιστοποιητικό SSL από το Let's Encrypt εκτελώντας την εντολή certbot με --nginx για να αρχικοποιήσετε την ανάκτηση και τη διαμόρφωση του πιστοποιητικού ασφαλείας Let's Encrypt για τομείς Nginx.


certbot --nginx
Or
certbot --nginx -d example.com -d www.example.com

6. Τέλος, εάν όλα πήγαν όπως θα έπρεπε, θα εμφανιστεί ένα συγχαρητήριο μήνυμα πληροφοριών στο τερματικό σας bash. Το μήνυμα θα εμφανιστεί επίσης όταν λήξει το πιστοποιητικό.

Βήμα 4: Εγκαταστήστε το Let’s Encrypt SSL Certificate στο Nginx

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

Όλα τα νέα πιστοποιητικά SSL τοποθετούνται στο /etc/letsencrypt/live/ σε έναν κατάλογο με το όνομα του ονόματος τομέα σας. Χρησιμοποιήστε την εντολή ls για να παραθέσετε τα αρχεία πιστοποιητικού που εκδόθηκαν για τον τομέα σας και να τα αναγνωρίσετε.

sudo ls /etc/letsencrypt/live/
sudo ls -al /etc/letsencrypt/live/your_domain.tld

10. Για να εγκαταστήσετε τα αρχεία πιστοποιητικού στο Nginx και να ενεργοποιήσετε το SSL, ανοίξτε το αρχείο /etc/nginx/nginx.conf για επεξεργασία και προσθέστε τις παρακάτω δηλώσεις μετά την τελευταία γραμμή ακρόασης από μπλοκ διακομιστή. Χρησιμοποιήστε την παρακάτω εικόνα ως οδηγό.

vi /etc/nginx/nginx.conf

Απόσπασμα μπλοκ Nginx SSL:

SSL configuration
listen 443 ssl default_server;
ssl_certificate /etc/letsencrypt/live/your_domain.tld/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your_domain.tld/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';

Αντικαταστήστε τη συμβολοσειρά όνομα τομέα για πιστοποιητικά SSL ώστε να ταιριάζει με τον δικό σας τομέα.

11. Τέλος, επανεκκινήστε την υπηρεσία Nginx και επισκεφτείτε τον τομέα σας μέσω του πρωτοκόλλου HTTPS στη διεύθυνση https://yourdomain. Η σελίδα πρέπει να φορτώνεται ομαλά, χωρίς κανένα σφάλμα πιστοποιητικού.

systemctl restart nginx
service nginx restart

12. Για να επαληθεύσετε το πιστοποιητικό SSL/TLS και την ευθύτητα του, επισκεφτείτε τον ακόλουθο σύνδεσμο:

https://www.ssllabs.com/ssltest/analyze.html 

13. Σε περίπτωση που λάβετε μια ειδοποίηση ότι ο διακομιστής σας υποστηρίζει μια ασθενή ανταλλαγή κλειδιών DH και μια συνολική βαθμολογία B, δημιουργήστε μια νέα Diffie-Hellman κρυπτογραφήστε στον κατάλογο /etc/nginx/ssl/ για να προστατέψετε τον διακομιστή σας από την επίθεση Logjam εκτελώντας τις ακόλουθες εντολές.

mkdir /etc/nginx/ssl
cd /etc/nginx/ssl
openssl dhparam -out dhparams.pem 4096

Σε αυτό το παράδειγμα χρησιμοποιήσαμε ένα κλειδί 4096 bit, το οποίο στην πραγματικότητα χρειάζεται πολύ χρόνο για να δημιουργηθεί και επιβαρύνει επιπλέον τον διακομιστή σας και τη χειραψία SSL.

Σε περίπτωση που δεν υπάρχει ρητή ανάγκη να χρησιμοποιήσετε ένα κλειδί για τόσο μεγάλο χρονικό διάστημα και δεν είστε παρανοϊκοί, θα πρέπει να είστε ασφαλείς με ένα κλειδί 2048 bit.

14. Αφού δημιουργηθεί το κλειδί DH, ανοίξτε το αρχείο διαμόρφωσης Nginx και προσθέστε τις παρακάτω δηλώσεις μετά τη γραμμή ssl_ciphers για να προσθέσετε το κλειδί DH και αυξήστε το επίπεδο ασφάλειας του τομέα σας σε βαθμό A+.

vi /etc/nginx/nginx.conf

Προσθέστε το ακόλουθο απόσπασμα μπλοκ στο Nginx.conf:

ssl_dhparam /etc/nginx/ssl/dhparams.pem;
ssl_session_timeout 30m;
ssl_session_cache shared:SSL:10m;
ssl_buffer_size 8k;
add_header Strict-Transport-Security max-age=31536000;

15. Επανεκκινήστε την υπηρεσία Nginx για να εφαρμόσετε αλλαγές και να δοκιμάσετε ξανά το πιστοποιητικό SSL σας, εκκαθαρίζοντας την προηγούμενη προσωρινή μνήμη αποτελεσμάτων από τον σύνδεσμο που αναφέρεται παραπάνω.

systemctl restart nginx
service nginx restart

Βήμα 5: Αυτόματη ανανέωση Nginx Free Lets Encrypt Certificates SSL

16. Let’s Encrypt CA εκδίδει δωρεάν πιστοποιητικά SSL/TLS που ισχύουν για 90 ημέρες. Τα πιστοποιητικά μπορούν να ανανεωθούν με μη αυτόματο τρόπο και να εφαρμοστούν πριν από τη λήξη τους, χρησιμοποιώντας την προσθήκη webroot, χωρίς διακοπή του διακομιστή ιστού σας, εκδίδοντας τις παρακάτω εντολές:


certbot --nginx -d example.com -d www.example.com
systemctl reload nginx

Όταν εκτελείτε την παραπάνω εντολή, βεβαιωθείτε ότι έχετε αντικαταστήσει το example.com ώστε να ταιριάζει με τον τομέα σας.

17. Για να ανανεώσετε αυτόματα το πιστοποιητικό πριν λήξει, δημιουργήστε την εργασία cron σε ένα υπάρχον αρχείο crontab.


crontab -e

Προσθέστε την παρακάτω εργασία cron στο κάτω μέρος του αρχείου, η οποία θα εκτελείται κάθε μέρα το μεσημέρι για να ελέγξετε τη λήξη του πιστοποιητικού και να το ανανεώσετε. Η επιλογή --quiet λέει στο certbot να μην παράγει έξοδο.


0 12 * * * /usr/bin/certbot renew --quiet

Αυτό είναι όλο! Τώρα, ο διακομιστής Nginx μπορεί να παρέχει ασφαλές περιεχόμενο ιστού με ένα δωρεάν πιστοποιητικό SSL/TLS Let’s Encrypt στον ιστότοπό σας.