Android

Ασφαλίστε nginx με την κρυπτογράφηση του centos 8

73. Ασφαλίστε το PC σας με το Norton 360

73. Ασφαλίστε το PC σας με το Norton 360

Πίνακας περιεχομένων:

Anonim

Το Let's Encrypt είναι μια ελεύθερη, αυτοματοποιημένη και ανοιχτή αρχή πιστοποίησης που αναπτύχθηκε από την ομάδα ασφάλειας ISRG που παρέχει δωρεάν πιστοποιητικά SSL.

Τα πιστοποιητικά που εκδίδονται από το Let's Encrypt εμπιστεύονται όλα τα μεγάλα προγράμματα περιήγησης και ισχύουν για 90 ημέρες από την ημερομηνία έκδοσης.

Σε αυτό το σεμινάριο, θα παρέχουμε οδηγίες βήμα προς βήμα σχετικά με τον τρόπο εγκατάστασης ενός δωρεάν πιστοποιητικού SSL SSL στο CentOS 8 που τρέχει το Nginx ως διακομιστής ιστού. Θα δείξουμε επίσης πώς να ρυθμίσουμε το Nginx ώστε να χρησιμοποιεί το πιστοποιητικό SSL και να ενεργοποιεί το HTTP / 2.

Προϋποθέσεις

Προτού προχωρήσετε, βεβαιωθείτε ότι έχετε εκπληρώσει τις ακόλουθες προϋποθέσεις:

  • Έχετε ένα όνομα τομέα που δείχνει στην δημόσια IP σας. Θα χρησιμοποιήσουμε το example.com . Έχετε εγκαταστήσει το Nginx στον διακομιστή σας CentOS. Το τείχος προστασίας σας έχει ρυθμιστεί ώστε να δέχεται συνδέσεις στις θύρες 80 και 443.

Εγκατάσταση του Certbot

Το Certbot είναι ένα δωρεάν εργαλείο γραμμής εντολών που απλοποιεί τη διαδικασία για την απόκτηση και ανανέωση του Let's Encrypt SSL certificates από και την αυτόματη ενεργοποίηση του HTTPS στο διακομιστή σας.

Το πακέτο certbot δεν περιλαμβάνεται στα κανονικά αποθετήρια CentOS 8, αλλά μπορεί να μεταφορτωθεί από τον ιστότοπο του προμηθευτή.

Εκτελέστε την ακόλουθη εντολή wget ως χρήστη root ή sudo για να κατεβάσετε το script certbot στον κατάλογο /usr/local/bin :

sudo wget -P /usr/local/bin

Αφού ολοκληρωθεί η λήψη, κάντε το αρχείο εκτελέσιμο:

sudo chmod +x /usr/local/bin/certbot-auto

Δημιουργία ισχυρής ομάδας Dh (Diffie-Hellman)

Η ανταλλαγή πλήκτρων Diffie-Hellman (DH) είναι μια μέθοδος ασφαλούς ανταλλαγής κρυπτογραφικών κλειδιών πάνω σε ένα μη ασφαλισμένο κανάλι επικοινωνίας.

Δημιουργήστε ένα νέο σύνολο παραμέτρων DH 2048 bit πληκτρολογώντας την ακόλουθη εντολή:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Αποκτώντας πιστοποιητικό SSL

Για να αποκτήσετε ένα πιστοποιητικό SSL για τον τομέα, θα χρησιμοποιήσουμε την προσθήκη Webroot που λειτουργεί δημιουργώντας ένα προσωρινό αρχείο για την επικύρωση του ζητούμενου τομέα στο ${webroot-path}/.well-known/acme-challenge του ${webroot-path}/.well-known/acme-challenge . Ο διακομιστής "Ας κρυπτογραφήσει" κάνει αιτήσεις HTTP στο προσωρινό αρχείο για να επιβεβαιώσει ότι ο ζητούμενος τομέας επιλύεται στο διακομιστή όπου τρέχει το certbot.

Για να γίνει πιο απλό, θα χαρτογραφήσουμε όλα τα αιτήματα HTTP για .well-known/acme-challenge σε ένα μόνο κατάλογο, /var/lib/letsencrypt .

Οι ακόλουθες εντολές θα δημιουργήσουν τον κατάλογο και θα το καταστήσουν εγγράψιμο για τον διακομιστή Nginx.

sudo mkdir -p /var/lib/letsencrypt/.well-known sudo chgrp nginx /var/lib/letsencrypt sudo chmod g+s /var/lib/letsencrypt

Για να αποφύγετε την αναπαραγωγή κώδικα, δημιουργήστε τα ακόλουθα δύο αποσπάσματα τα οποία θα συμπεριληφθούν σε όλα τα αρχεία μπλοκ διακομιστή Nginx:

sudo mkdir /etc/nginx/snippets /etc/nginx/snippets/letsencrypt.conf

location ^~ /.well-known/acme-challenge/ { allow all; root /var/lib/letsencrypt/; default_type "text/plain"; try_files $uri =404; } /etc/nginx/snippets/ssl.conf

ssl_dhparam /etc/ssl/certs/dhparam.pem; ssl_session_timeout 1d; ssl_session_cache shared:SSL:10m; ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers off; ssl_stapling on; ssl_stapling_verify on; resolver 8.8.8.8 8.8.4.4 valid=300s; resolver_timeout 30s; add_header Strict-Transport-Security "max-age=63072000" always; add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff;

Το απόσπασμα παραπάνω περιλαμβάνει τους τσιπς που συνιστώνται από το Mozilla, επιτρέπει την OCSP Συρραφή, το HTTP Strict Transport Security (HSTS) και επιβάλλει ελάχιστες επικεφαλίδες HTTP με εστίαση στην ασφάλεια.

Μόλις δημιουργηθούν τα αποσπάσματα, ανοίξτε το μπλοκ διακομιστή τομέα και συμπεριλάβετε το απόσπασμα του letsencrypt.conf , όπως φαίνεται παρακάτω:

/etc/nginx/conf.d/example.com.conf

server { listen 80; server_name example.com www.example.com; include snippets/letsencrypt.conf; }

Επανεκκινήστε τη διαμόρφωση Nginx για να εφαρμοστούν οι αλλαγές:

sudo systemctl reload nginx

Εκτελέστε το εργαλείο certbot με το plugin webroot για να αποκτήσετε τα αρχεία πιστοποιητικών SSL για τον τομέα σας:

sudo /usr/local/bin/certbot-auto certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/ -d example.com -d www.example.com

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

Μόλις ληφθεί επιτυχώς το πιστοποιητικό SSL, η certbot θα εκτυπώσει το ακόλουθο μήνυμα:

IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/example.com/privkey.pem Your cert will expire on 2020-03-12. To obtain a new or tweaked version of this certificate in the future, simply run certbot-auto again. To non-interactively renew *all* of your certificates, run "certbot-auto renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF:

Τώρα που έχετε τα αρχεία πιστοποιητικών, μπορείτε να επεξεργαστείτε το μπλοκ διακομιστή τομέα σας ως εξής:

/etc/nginx/conf.d/example.com.conf

server { listen 80; server_name www.example.com example.com; include snippets/letsencrypt.conf; return 301 https://$host$request_uri; } server { listen 443 ssl http2; server_name www.example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; include snippets/ssl.conf; include snippets/letsencrypt.conf; return 301 https://example.com$request_uri; } server { listen 443 ssl http2; server_name example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; include snippets/ssl.conf; include snippets/letsencrypt.conf; #… other code }

Με τη παραπάνω διαμόρφωση αναγκάζουμε το HTTPS και ανακατευθύνουμε την έκδοση www σε μη www.

Τέλος, επαναφορτώστε την υπηρεσία Nginx για να εφαρμοστούν οι αλλαγές:

sudo systemctl reload nginx

Τώρα, ανοίξτε τον ιστότοπό σας χρησιμοποιώντας τη https:// και θα παρατηρήσετε ένα πράσινο εικονίδιο κλειδώματος.

Αυτόματη ανανέωση Ας κρυπτογραφήσουμε το πιστοποιητικό SSL

Τα πιστοποιητικά της Κρυπτογράφησης ισχύουν για 90 ημέρες. Για να ανανεώσετε αυτόματα τα πιστοποιητικά προτού λήξουν, δημιουργήστε ένα cronjob που θα εκτελείται δύο φορές την ημέρα και θα ανανεώνεται αυτόματα οποιοδήποτε πιστοποιητικό 30 ημέρες πριν τη λήξη του.

Χρησιμοποιήστε την εντολή crontab για να δημιουργήσετε ένα νέο cronjob:

sudo crontab -e

Επικολλήστε την ακόλουθη γραμμή:

0 */12 * * * root test -x /usr/local/bin/certbot-auto -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && /usr/local/bin/certbot-auto -q renew --renew-hook "systemctl reload nginx"

Αποθηκεύστε και κλείστε το αρχείο.

Για να ελέγξετε τη διαδικασία ανανέωσης, μπορείτε να χρησιμοποιήσετε την εντολή certbot ακολουθούμενη από το διακόπτη --dry --dry-run :

sudo certbot renew --dry-run

Εάν δεν υπάρχουν σφάλματα, αυτό σημαίνει ότι η διαδικασία ανανέωσης της δοκιμής ήταν επιτυχής.

συμπέρασμα

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

Για να μάθετε περισσότερα σχετικά με το Certbot, επισκεφθείτε τη σελίδα τεκμηρίωσης.

nginx centos ας κρυπτογραφήσουμε το certbot ssl