Εγκαταστήστε το Nginx
Αυτουπογεγραμμένο πιστοποιητικό και HTTP/2
Εγκαταστήστε elinks
Δοκιμή HTTP/2
συμπέρασμα
Το HTTP/2 είναι η νέα έκδοση του πλέον απαρχαιωμένου πρωτοκόλλου HTTP/1.1, το οποίο τυποποιήθηκε το 1999. Πολλά έχουν αλλάξει στον Ιστό από τότε. Οι εφαρμογές μας είναι πιο περίπλοκες από ό,τι ήταν πίσω, επομένως για να το αντιμετωπίσουμε, ήταν απαραίτητη η αλλαγή στο υποκείμενο πρωτόκολλο μεταφοράς. Το πιο σημαντικό πράγμα για το HTTP/2 είναι ότι θα κάνει την ιστοσελίδα σας πιο γρήγορη για τους τελικούς χρήστες.
Εν συντομία, το HTTP/2 προσθέτει 5 βασικά χαρακτηριστικά:
- Ενιαία, επίμονη σύνδεση
- Πολυπλεξία
- Συμπίεση κεφαλίδας
- Προτεραιοποίηση πόρων
- Ασφαλίζει το επίπεδο μεταφοράς (ισχύει μόνο για προγράμματα περιήγησης)
Η εξήγηση όλων αυτών των χαρακτηριστικών δεν εμπίπτει στο πεδίο αυτού του σεμιναρίου, αλλά αν θέλετε να εμβαθύνετε σε αυτό το θέμα, μπορώ να προτείνω απόσπασμα από το βιβλίο Δικτύωση με πρόγραμμα περιήγησης υψηλής απόδοσης - απόσπασμα HTTP/2 .
Σε αυτόν τον οδηγό πρόκειται να εγκαταστήσουμε την τελευταία σταθερή έκδοση του Nginx στο Ubuntu 16.04 (Xenial), να δημιουργήσουμε αυτοϋπογεγραμμένο πιστοποιητικό SSL, να ενεργοποιήσουμε το πρωτόκολλο HTTP/2 στο Nginx και να εγκαταστήσουμε το πρόγραμμα περιήγησης που βασίζεται σε κείμενο elinksγια να λειτουργεί ως πελάτης HTTP.
Εγκαταστήστε το Nginx
Για να εγκαταστήσουμε την τελευταία σταθερή έκδοση του Nginx πρέπει να εκδώσουμε αρκετές εντολές:
Πρέπει να κατεβάσουμε το δημόσιο κλειδί PGP Nginx που χρησιμοποιείται για την υπογραφή πακέτων και αποθετηρίων και να το προσθέσουμε στο μπρελόκ που χρησιμοποιείται από τον διαχειριστή πακέτων για να επαληθεύσουμε την αυθεντικότητα των πακέτων που έχουν ληφθεί από το αποθετήριο.
wget https://nginx.org/keys/nginx_signing.key && apt-key add nginx_signing.key
Διαγράψτε το κλειδί PGP από το σύστημα αρχείων:
rm nginx_signing.key
Προσθήκη νέου αποθετηρίου
printf "deb http://nginx.org/packages/ubuntu/ xenial nginx \ndeb-src http://nginx.org/packages/ubuntu/ xenial nginx \n" >> /etc/apt/sources.list.d/nginx.list
Ενημερώστε τη λίστα πακέτων σας και εγκαταστήστε το Nginx:
apt update && apt install nginx -y
Για να επαληθεύσουμε την έκδοση Nginx μπορούμε να χρησιμοποιήσουμε τα εξής:
nginx -v
# nginx version: nginx/1.10.1
Εάν όλα πάνε καλά, θα πρέπει να δείτε μοτίβο όπως 1.10.xστην έξοδο κατά την εκτέλεση της nginx -vεντολής.
Αυτουπογεγραμμένο πιστοποιητικό και HTTP/2
Although HTTP/2 spec doesn’t force browsers to implement HTTP/2 over TLS, all major browsers decided to only implement HTTP/2 over TLS, but not any TLS version, only TLS 1.2 or higher.
Θα δημιουργήσουμε αυτο-υπογεγραμμένα πιστοποιητικά για φανταστικό example.comτομέα, για την παραγωγή χρειάζεστε έγκυρο τομέα και να χρησιμοποιήσετε αξιόπιστη ΑΠ.
Δημιουργία ιδιωτικού κλειδιού:
openssl genrsa -aes128 -out example.com.key 2048
Αφού εκτελέσετε αυτήν την εντολή, θα χρειαστεί να εισαγάγετε τη φράση πρόσβασης 2 φορές. Επειδή οι φράσεις πρόσβασης είναι ενοχλητικές, θα το αφαιρέσουμε.
Αφαιρέστε τη φράση πρόσβασης από το ιδιωτικό κλειδί:
openssl rsa -in example.com.key -out example.com.key
Δημιουργία αιτήματος υπογραφής πιστοποιητικού (CSR):
openssl req -new -sha256 -key example.com.key -out cert-request.csr
We are creating single-domain certificate so we need to set common-name field equal to example.com domain
Δημιουργία πιστοποιητικού:
openssl x509 -req -days 365 -in cert-request.csr -signkey example.com.key -out example.com.crt
Ταξινόμηση πιστοποιητικού και ιδιωτικού κλειδιού:
mkdir -p /etc/ssl/testing/private && mkdir /etc/ssl/testing/certs
mv example.com.key /etc/ssl/testing/private && mv example.com.crt /etc/ssl/testing/certs
Δημιουργήστε καταλόγους εικονικού κεντρικού υπολογιστή nginx
mkdir /etc/nginx/sites-available && mkdir /etc/nginx/sites-enabled
Μετά τρέξε nano /etc/nginx/nginx.confκαι βρες μια οδηγία include /etc/nginx/conf.d/*.conf;. Κάτω από αυτήν την οδηγία προσθέστε include /etc/nginx/sites-enabled/*;Αποθήκευση ( CTRL+O ) και μετά κλείστε ( CTRL+X ).
##
# Virtual Hosts
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
Δημιουργήστε ένα αρχείο που ονομάζεται example.com.confεσωτερικός /etc/nginx/sites-availableκατάλογος με αυτήν την εντολή nano /etc/nginx/sites-available/example.com.confκαι αντιγράψτε/επικολλήστε τον ακόλουθο κώδικα:
server {
listen 80;
listen [::]:80;
server_name example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com;
root /var/www/html;
index index.nginx-debian.html;
ssl_certificate /etc/ssl/testing/certs/example.com.crt;
ssl_certificate_key /etc/ssl/testing/private/example.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
ssl_prefer_server_ciphers on;
}
Συγχαρητήρια, έχετε πλέον ενεργοποιημένο διακομιστή ιστού HTTP/2 . Η προσθήκη http2παραμέτρου στην listenοδηγία εντός του εικονικού κεντρικού υπολογιστή HTTPS θα σας προσφέρει υποστήριξη HTTP/2 .
Δημιουργήστε έναν συμβολικό σύνδεσμο για /etc/nginx/sites-available/example.com.confμε αυτήν την εντολή:
ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled
Δοκιμή σύνταξης διαμόρφωσης
nginx -t
Επανεκκινήστε το Nginx για να εφαρμόσετε τις αλλαγές σας:
systemctl restart nginx
Προσθήκη example.comτομέα σε /etc/hostsαρχείο
echo '127.0.0.1 example.com' >> /etc/hosts
Εγκαταστήστε elinks
Για να δοκιμάσουμε τον εικονικό σας κεντρικό υπολογιστή χρειαζόμαστε πρόγραμμα περιήγησης που βασίζεται σε κείμενο - συνδέσμους.
Για να εγκαταστήσετε elinks χρησιμοποιήστε την ακόλουθη εντολή:
apt install elinks
Για να δοκιμάσετε την εκτέλεση του example.comεικονικού κεντρικού υπολογιστή σας:
elinks https://example.com
Για έξοδο από το πρόγραμμα περιήγησης elinks, πατήστε q στο πληκτρολόγιό σας και μετά Enter .
Δοκιμή HTTP/2
Για να δείτε ποια πρωτόκολλα διαφημίζει ο διακομιστής με τον ευκολότερο τρόπο είναι να χρησιμοποιήσετε την opensslεργαλειοθήκη.
openssl s_client -connect example.com:443 -nextprotoneg ''
Στην έξοδο αυτής της εντολής θα πρέπει να δείτε κάτι σαν αυτό:
CONNECTED(00000003)
Protocols advertised by server: h2, http/1.1
Για να δείτε το HTTP/2 σε δράση, μπορείτε να χρησιμοποιήσετε τα εργαλεία προγραμματιστή του προγράμματος περιήγησης. ΗΤΤΡ / 2 πρωτόκολλο υποδεικνύεται είτε με h2ή HTTP/2.0αναγνωριστικά. Ανοίξτε το πλαίσιο δικτύου στα εργαλεία dev-tools και ανανεώστε τη σελίδα σας.
συμπέρασμα
Τώρα θα πρέπει να γνωρίζετε πόσο «εύκολο» είναι να ενεργοποιήσετε το HTTP/2 στη διαμόρφωση Nginx, αλλά αυτό δεν είναι ολόκληρο το μέρος της συνολικής εικόνας. Πρώτα θα πρέπει να σκεφτείτε να ενεργοποιήσετε το TLS/SSL στον διακομιστή σας με ισχυρές σουίτες κρυπτογράφησης και να βεβαιωθείτε ότι δεν χρησιμοποιείτε κρυπτογράφηση στη μαύρη λίστα . Μόνο αφού ενεργοποιήσετε το ισχυρό TLS/SSL στον διακομιστή σας, μπορείτε να αρχίσετε να σκέφτεστε να ενεργοποιήσετε το HTTP/2 .