Android

Ασφαλίστε την apache με την κρυπτογράφηση του ubuntu 18.04

Harvard CS50 Web HTTP

Harvard CS50 Web HTTP

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

Anonim

Το Let's Encrypt είναι μια αρχή πιστοποίησης που δημιουργήθηκε από την Ομάδα Ασφαλείας Ασφάλειας στο Internet (ISRG). Παρέχει δωρεάν πιστοποιητικά SSL μέσω πλήρως αυτοματοποιημένης διαδικασίας που αποσκοπεί στην εξάλειψη της δημιουργίας μη αυτόματων πιστοποιητικών, επικύρωσης, εγκατάστασης και ανανέωσης.

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

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

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

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

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

Εγκαταστήστε το Certbot

Το Certbot είναι ένα πλήρως εξοπλισμένο και εύκολο στη χρήση εργαλείο που μπορεί να αυτοματοποιήσει τις εργασίες για την απόκτηση και την ανανέωση του Let's Encrypt SSL certificates και της διαμόρφωσης web servers. Το πακέτο certbot περιλαμβάνεται στις προεπιλεγμένες αποθήκες του Ubuntu.

Ενημερώστε τη λίστα των πακέτων και εγκαταστήστε το πακέτο certbot:

sudo apt update sudo apt install certbot

Δημιουργήστε ομάδα ισχυρών 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 .

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

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

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

/etc/apache2/conf-available/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/apache2/conf-available/ssl-params.conf

SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH 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 Transport Security (HSTS) και επιβάλλει ελάχιστες κεφαλίδες HTTP με εστίαση στην ασφάλεια.

Πριν ενεργοποιήσετε τα αρχεία διαμόρφωσης, βεβαιωθείτε ότι και τα mod_ssl και mod_headers είναι ενεργοποιημένα εκδίδοντας:

sudo a2enmod ssl sudo a2enmod headers

Στη συνέχεια, ενεργοποιήστε τα αρχεία ρυθμίσεων SSL εκτελώντας τις ακόλουθες εντολές:

sudo a2enconf letsencrypt sudo a2enconf ssl-params

Ενεργοποιήστε τη λειτουργική μονάδα HTTP / 2, η οποία θα κάνει τους ιστότοπους σας ταχύτερους και πιο στιβαρούς:

sudo a2enmod

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

sudo systemctl reload apache2

Τώρα, μπορούμε να εκτελέσουμε το εργαλείο Certbot με το plugin webroot και να αποκτήσουμε τα αρχεία πιστοποιητικών SSL πληκτρολογώντας:

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

Εάν το πιστοποιητικό 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 2018-10-28. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot 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/apache2/sites-available/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 ${APACHE_LOG_DIR}/example.com-error.log CustomLog ${APACHE_LOG_DIR}/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 ${APACHE_LOG_DIR}/example.com-error.log CustomLog ${APACHE_LOG_DIR}/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 ${APACHE_LOG_DIR}/example.com-error.log CustomLog ${APACHE_LOG_DIR}/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 ${APACHE_LOG_DIR}/example.com-error.log CustomLog ${APACHE_LOG_DIR}/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 έκδοση. Χωρίς να ρυθμίσετε τη διαμόρφωση ανάλογα με τις ανάγκες σας.

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

sudo systemctl reload apache2

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

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

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

Μετά την ανανέωση του πιστοποιητικού πρέπει επίσης να φορτώσουμε ξανά την υπηρεσία Apache. Προσθέστε --renew-hook "systemctl reload apache2" στο αρχείο /etc/cron.d/certbot έτσι ώστε να μοιάζει με το ακόλουθο:

/etc/cron.d/certbot

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

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

sudo certbot renew --dry-run

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

συμπέρασμα

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

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

Αυτή η ανάρτηση αποτελεί μέρος της σειράς how-to-install-lamp-stack-on-ubuntu-18-04.

Άλλες θέσεις αυτής της σειράς:

• Πώς να εγκαταστήσετε το Apache στο Ubuntu 18.04 • Πώς να ρυθμίσετε τους Apache Virtual Hosts στο Ubuntu 18.04 • Ασφαλής Apache με την Κρυπτογράφηση για το Ubuntu 18.04 • Πώς να εγκαταστήσετε MySQL στο Ubuntu 18.04 • Πώς να εγκαταστήσετε την PHP στο Ubuntu 18.04