Ροή

Οδηγός: Ασφαλίστε τον Apache με το Let's Encrypt στο Debian 10/11

techne

Administrator
Joined
27 May 2010
Μηνύματα
1,157
Βαθμολογία
24
Points
38
Website
www.eltube.gr
apache_secure.jpg

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

Τα πιστοποιητικά που εκδίδονται από το Let's Encrypt ισχύουν για 90 ημέρες από την ημερομηνία έκδοσης και είναι αξιόπιστα από όλα τα μεγάλα προγράμματα περιήγησης σήμερα.
Αυτό το σεμινάριο δείχνει πώς να εγκαταστήσετε ένα δωρεάν πιστοποιητικό Let's Encrypt SSL στο Debian 10, το Buster που εκτελεί τον Apache ως διακομιστή ιστού. Θα δείξουμε επίσης πώς να ρυθμίσετε τον Apache ώστε να χρησιμοποιεί το πιστοποιητικό SSL και να ενεργοποιεί το HTTP/2.


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

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

Συνδεθείτε ως root ή χρήστης με δικαιώματα sudo .
Ο τομέας για τον οποίο θέλετε να αποκτήσετε το πιστοποιητικό SSL πρέπει να παραπέμπει στη δημόσια διεύθυνση IP του διακομιστή σας. θα χρησιμοποιήσουμε example.com.

Εγκατεστημένο το Apache .


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

Θα χρησιμοποιήσουμε το εργαλείο certbot για να αποκτήσουμε και να ανανεώσουμε τα πιστοποιητικά.

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

Το πακέτο certbot περιλαμβάνεται στα προεπιλεγμένα αποθετήρια του Debian. Εκτελέστε τις ακόλουθες εντολές για να εγκαταστήσετε το certbot:

Code:
sudo apt update
sudo apt install certbot


Δημιουργία Ομάδας Strong Dh (Diffie-Hellman).

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

Εκτελέστε την ακόλουθη εντολή για να δημιουργήσετε ένα νέο κλειδί DH 2048 bit:

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

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


Λήψη πιστοποιητικού Let's Encrypt SSL

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

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

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

Code:
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
Code:
Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/"
<Directory "/var/lib/letsencrypt/">
    AllowOverride None
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    Require method GET POST OPTIONS
</Directory>

/etc/apache2/conf-available/ssl-params.conf
Code:
SSLProtocol             all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite          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
SSLHonorCipherOrder     off
SSLSessionTickets       off

SSLUseStapling On
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"

Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Header always set X-Frame-Options SAMEORIGIN
Header always set X-Content-Type-Options nosniff

SSLOpenSSLConfCmd DHParameters "/etc/ssl/certs/dhparam.pem"

Ο κώδικας στο παραπάνω απόσπασμα χρησιμοποιεί τα chipper που προτείνει η Mozilla , ενεργοποιεί τη συρραφή OCSP, την αυστηρή ασφάλεια μεταφοράς HTTP (HSTS) και επιβάλλει λίγες κεφαλίδες HTTP που εστιάζονται στην ασφάλεια.

Βεβαιωθείτε ότι και τα δύο mod_ssl και mod_headers είναι φορτωμένα:

Code:
sudo a2enmod ssl
sudo a2enmod headers

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

Code:
sudo a2enmod http2

Ενεργοποιήστε τα αρχεία διαμόρφωσης SSL:

Code:
sudo a2enconf letsencrypt
sudo a2enconf ssl-params

Φορτώστε ξανά τη διαμόρφωση του Apache για να τεθούν σε ισχύ οι αλλαγές:

Code:
sudo systemctl reload apache2

Χρησιμοποιήστε το εργαλείο Certbot με την προσθήκη webroot για να αποκτήσετε τα αρχεία πιστοποιητικού SSL:

Code:
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 2020-04-02. 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"

- 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: https://eff.org/donate-le

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

/etc/apache2/sites-available/example.com.conf
Code:
<VirtualHost *:80>
  ServerName example.com
  ServerAlias www.example.com

  Redirect permanent / https://example.com/
</VirtualHost>

<VirtualHost *:443>
  ServerName example.com
  ServerAlias www.example.com

  Protocols h2 http/1.1

  <If "%{HTTP_HOST} == 'www.example.com'">
    Redirect permanent / https://example.com/
  </If>

  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

</VirtualHost>

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

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

Code:
sudo systemctl reload apache2

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

Εάν δοκιμάσετε τον τομέα σας χρησιμοποιώντας τη δοκιμή διακομιστή SSL Labs , θα λάβετε βαθμό A+, όπως φαίνεται παρακάτω:

ssllabs.jpg


Αυτόματη ανανέωση πιστοποιητικού Let's Encrypt SSL

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

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

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

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

Code:
sudo certbot renew --dry-run

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


Συμπέρασμα

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

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

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