Android

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

Ασφαλίστε το σπίτι σας με συστήματα Cal στην καλύτερη τιμή.!!!

Ασφαλίστε το σπίτι σας με συστήματα Cal στην καλύτερη τιμή.!!!

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

Anonim

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

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

Αυτό το σεμινάριο εξηγεί τον τρόπο εγκατάστασης ενός ελεύθερου Let's Encrypt SSL certificate στο CentOS 8 που εκτελεί Apache ως διακομιστή ιστού. Θα χρησιμοποιήσουμε το εργαλείο certbot για να λάβουμε και να ανανεώσουμε τα πιστοποιητικά.

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

Βεβαιωθείτε ότι πληρούνται οι ακόλουθες προϋποθέσεις πριν συνεχίσετε:

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

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

sudo dnf install mod_ssl openssl

Όταν το πακέτο mod_ssl είναι εγκατεστημένο, θα πρέπει να δημιουργήσει ένα αυτοματοποιημένο αρχείο κλειδιών και πιστοποιητικών για το localhost. Αν τα αρχεία δεν δημιουργούνται αυτόματα, μπορείτε να τα δημιουργήσετε χρησιμοποιώντας την εντολή openssl :

sudo openssl req -newkey rsa:4096 -x509 -sha256 -days 3650 -nodes \ -out /etc/pki/tls/certs/localhost.crt \ -keyout /etc/pki/tls/private/localhost.key

Εγκαταστήστε το 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) είναι μια μέθοδος ασφαλούς ανταλλαγής κρυπτογραφικών κλειδιών πάνω σε ένα μη ασφαλισμένο κανάλι επικοινωνίας. Δημιουργήστε ένα νέο σύνολο παραμέτρων 2048 bit DH για να ενισχύσετε την ασφάλεια:

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

Μπορείτε να αλλάξετε το μέγεθος έως και 4096 bits, αλλά η παραγωγή μπορεί να διαρκέσει περισσότερο από 30 λεπτά, ανάλογα με την εντροπία του συστήματος.

Αποκτώντας πιστοποιητικό 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 .

Εκτελέστε τις ακόλουθες εντολές για να δημιουργήσετε τον κατάλογο και να το καταστήσετε writable για το διακομιστή Apache.

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

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

/etc/httpd/conf.d/letsencrypt.conf

Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/" AllowOverride None Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec Require method GET POST OPTIONS Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/" AllowOverride None Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec Require method GET POST OPTIONS /etc/httpd/conf.d/ssl-params.conf

SSLCipherSuite EECDH+AESGCM:EDH+AESGCM # Requires Apache 2.4.36 & OpenSSL 1.1.1 SSLProtocol -all +TLSv1.3 +TLSv1.2 SSLOpenSSLConfCmd Curves X25519:secp521r1:secp384r1:prime256v1 # Older versions # SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 SSLHonorCipherOrder On Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" Header always set X-Frame-Options DENY Header always set X-Content-Type-Options nosniff # Requires Apache >= 2.4 SSLCompression off SSLUseStapling on SSLStaplingCache "shmcb:logs/stapling-cache(150000)" # Requires Apache >= 2.4.11 SSLSessionTickets Off SSLOpenSSLConfCmd DHParameters "/etc/ssl/certs/dhparam.pem"

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

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

sudo systemctl reload

Τώρα, μπορείτε να εκτελέσετε δέσμη ενεργειών 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 θα εκτυπώσει το ακόλουθο μήνυμα:

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-01-26. 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" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF:

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

/etc/httpd/conf.d/example.com.conf

ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com Protocols h2 http:/1.1 Redirect permanent / https://example.com/ DocumentRoot /var/www/example.com/public_html ErrorLog /var/log/httpd/example.com-error.log CustomLog /var/log/httpd/example.com-access.log combined SSLEngine On SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem # Other Apache Configuration ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com Protocols h2 http:/1.1 Redirect permanent / https://example.com/ DocumentRoot /var/www/example.com/public_html ErrorLog /var/log/httpd/example.com-error.log CustomLog /var/log/httpd/example.com-access.log combined SSLEngine On SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem # Other Apache Configuration ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com Protocols h2 http:/1.1 Redirect permanent / https://example.com/ DocumentRoot /var/www/example.com/public_html ErrorLog /var/log/httpd/example.com-error.log CustomLog /var/log/httpd/example.com-access.log combined SSLEngine On SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem # Other Apache Configuration ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com Protocols h2 http:/1.1 Redirect permanent / https://example.com/ DocumentRoot /var/www/example.com/public_html ErrorLog /var/log/httpd/example.com-error.log CustomLog /var/log/httpd/example.com-access.log combined SSLEngine On SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem # Other Apache Configuration

Η παραπάνω διαμόρφωση αναγκάζει το HTTPS και την ανακατεύθυνση από www σε μη-www έκδοση. Ενεργοποιεί επίσης το HTTP / 2, το οποίο θα κάνει τους ιστότοπους σας ταχύτερους και πιο ισχυρούς. Χωρίς να ρυθμίσετε τη διαμόρφωση ανάλογα με τις ανάγκες σας.

Επανεκκινήστε την υπηρεσία Apache:

sudo systemctl restart

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

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

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

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

echo "0 0, 12 * * * root python3 -c 'import random; import time; time.sleep(random.random() * 3600)' && /usr/local/bin/certbot-auto -q renew --renew-hook \"systemctl reload httpd\"" | sudo tee -a /etc/crontab > /dev/null

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

sudo /usr/local/bin/certbot-auto renew --dry-run

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

συμπέρασμα

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

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

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