Προσοχή
Βήμα 1: Δημιουργία πιστοποιητικού
Βήμα 2: Διαμόρφωση τείχους προστασίας
Βήμα 3: Διαμόρφωση εικονικού κεντρικού υπολογιστή Apache
Βήμα 4: Ενεργοποίηση λειτουργικής μονάδας Apache SSL
Βήμα 5: Ανακατεύθυνση όλης της κίνησης HTTP σε HTTPS (Προαιρετικό)
Το SSL και το διάδοχό του TLS (Secure Sockets Layer / Transport Layer Security) προσθέτουν ένα επίπεδο κρυπτογράφησης μεταξύ του πελάτη και του διακομιστή. Χωρίς αυτήν την τεχνολογία, τα δεδομένα αποστέλλονται στον διακομιστή σε απλό κείμενο, επιτρέποντας σε τρίτους να διαβάσουν όλες τις πληροφορίες που αποστέλλονται και λαμβάνονται από τον διακομιστή σας.
Αυτό το σεμινάριο θα σας διδάξει πώς να δημιουργήσετε ένα πιστοποιητικό SSL/TLS και να το ενεργοποιήσετε στο Apache 2.4 στο Ubuntu 16.04. Υποθέτω ότι το Apache είναι ήδη ρυθμισμένο και τρέχει. Εάν θέλετε να μάθετε πώς να εγκαταστήσετε μια στοίβα LAMP, ανατρέξτε σε αυτό το έγγραφο Vultr .
Προσοχή
SSL/TLS certificates are normally generated by a trusted CA (certificate authority).
By generating it yourself, you will be the signer, meaning the browser won't be able to verify whether the identity of the certificate should be trusted, and it will warn the user.
Although it is possible to bypass this alert, public-facing sites should be using a certificate signed by a trusted CA.
Let's encrypt is a CA that offers certificates for free. You can learn how to install their certificate in Apache and Ubuntu 16.04 here.
For internal applications, using a self-signed certificate might be valid, especially if you don't have a domain name.
Βήμα 1: Δημιουργία πιστοποιητικού
Αρχικά, ας δημιουργήσουμε ένα μέρος για την αποθήκευση του αρχείου.
mkdir ~/certificates
cd ~/certificates
Δημιουργήστε CSR και ιδιωτικό κλειδί.
openssl req -x509 -newkey rsa:4096 -keyout apache.key -out apache.crt -days 365 -nodes
Θα ζητήσει πληροφορίες για το αίτημα πιστοποιητικού. Συμπληρώστε με τις κατάλληλες πληροφορίες.
Country Name (2 letter code) [AU]: US
State or Province Name (full name) [Some-State]: FL
Locality Name (eg, city) []: Miami
Organization Name (eg, company) [My Company]: My Company
Organizational Unit Name (eg, section) []:
Το κοινό όνομα πρέπει να είναι το όνομα τομέα σας ή η διεύθυνση IP του διακομιστή. Επίσης, συμπληρώστε το email σας.
Common Name (e.g. server FQDN or YOUR name) []: 203.0.113.122
Email Address []:webmaster@example.com
Τώρα, μετακινήστε το πιστοποιητικό στον φάκελο διαμόρφωσης του Apache.
mkdir /etc/apache2/ssl
mv ~/certificates/* /etc/apache2/ssl/.
Το πιστοποιητικό είναι έτοιμο! Στη συνέχεια, θα προετοιμάσουμε το Apache για να εργαστεί με το πιστοποιητικό.
Βήμα 2: Διαμόρφωση τείχους προστασίας
Πρέπει να βεβαιωθούμε ότι η θύρα TCP 443 είναι ανοιχτή. Αυτή η θύρα χρησιμοποιείται σε συνδέσεις SSL αντί για τη θύρα 80. Σε αυτό το σεμινάριο, θα χρησιμοποιήσουμε το UFW.
Βεβαιωθείτε ότι το UFW είναι ενεργοποιημένο.
sudo ufw enable
Τώρα επιτρέψτε τις προκαθορισμένες ρυθμίσεις Apache για το τείχος προστασίας.
sudo ufw allow 'Apache Full'
Πληκτρολογώντας " sudo ufw status", μπορείτε να δείτε μια λίστα με τους τρέχοντες κανόνες. Η διαμόρφωσή σας θα πρέπει να μοιάζει με αυτό:
To Action From
-- ------ ----
Apache Full ALLOW Anywhere
OpenSSH ALLOW Anywhere
Apache Full (v6) ALLOW Anywhere (v6)
OpenSSH (v6) ALLOW Anywhere (v6)
Θα πρέπει επίσης να επιτρέψετε το OpenSSH εδώ για μελλοντικές συνδέσεις.
sudo ufw allow 'OpenSSH'
Βήμα 3: Διαμόρφωση εικονικού κεντρικού υπολογιστή Apache
Μεταβείτε στον προεπιλεγμένο κατάλογο διαμόρφωσης τοποθεσίας Apache.
sudo nano /etc/apache2/sites-available/default-ssl.conf
Αυτό το αρχείο λέει στον διακομιστή πού να αναζητήσει το πιστοποιητικό SSL. Με την αφαίρεση των σχολίων, θα πρέπει να μοιάζει με την ακόλουθη διαμόρφωση.
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
Επεξεργαστείτε αυτήν τη γραμμή:
ServerAdmin email@example.net
Προσθέστε αυτό ακριβώς κάτω από τη ServerAdminγραμμή:
ServerName ADD_YOUR_IP_OR_DOMAIN_NAME_HERE
Τώρα, επεξεργαστείτε αυτές τις γραμμές με τη θέση του πιστοποιητικού μας:
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
Το τελικό μας αρχείο θα πρέπει να μοιάζει με αυτό:
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin email@example.net
ServerName 203.0.113.122
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
Αποθηκεύστε και κλείστε το αρχείο.
Βήμα 4: Ενεργοποίηση λειτουργικής μονάδας Apache SSL
Ενεργοποιήστε τη μονάδα SSL πληκτρολογώντας:
sudo a2enmod ssl
Τώρα ενεργοποιήστε τον ιστότοπο που μόλις επεξεργαστήκαμε:
sudo a2ensite default-ssl.conf
Επανεκκινήστε τον Apache:
sudo service apache2 restart
Ας αποκτήσουμε πρόσβαση στον νέο ασφαλή ιστότοπο! Ανοίξτε το στο πρόγραμμα περιήγησής σας (βεβαιωθείτε ότι έχετε πληκτρολογήσει https:// ).
https://YOUR_SERVER_IP
Το πρόγραμμα περιήγησής σας θα σας προειδοποιήσει ότι το πιστοποιητικό δεν είναι έγκυρο, όπως περιμέναμε. Αυτό συμβαίνει επειδή το πιστοποιητικό δεν είναι υπογεγραμμένο. Ακολουθήστε τα βήματα που προσφέρει το πρόγραμμα περιήγησής σας για να προχωρήσετε στον ιστότοπό σας.
Βήμα 5: Ανακατεύθυνση όλης της κίνησης HTTP σε HTTPS (Προαιρετικό)
Ανοίξτε το προεπιλεγμένο αρχείο εικονικού κεντρικού υπολογιστή Apache:
nano /etc/apache2/sites-available/000-default.conf
Προσθέστε αυτήν τη γραμμή μέσα στην <VirtualHost *:80>ετικέτα:
Redirect / https://YOUR_SERVER_IP_OR_DOMAIN/
Επαναφόρτωση διαμόρφωσης Apache:
sudo service apache2 reload
Όλη η επισκεψιμότητα του ιστότοπου θα ανακατευθύνεται πλέον αυτόματα στο HTTPS.