Instal·leu Nginx
Certificat autofirmat i HTTP/2
Instal·leu elinks
Prova HTTP/2
Conclusió
HTTP/2 és la nova versió del protocol HTTP/1.1, ara obsolet, que es va estandarditzar l'any 1999. Des de llavors, ha canviat molt al web. Les nostres aplicacions són més complexes del que eren anteriorment, així que per fer-hi front, era necessari un canvi en el protocol de transport subjacent. El més important d' HTTP/2 és que farà que la vostra pàgina web sigui més ràpida per als usuaris finals.
En resum, HTTP/2 afegeix 5 funcions clau:
- Connexió única i persistent
- Multiplexació
- Compressió de capçalera
- Priorització dels recursos
- Capa de transport segura (només vàlida per a navegadors)
Explicar totes aquestes característiques està fora de l'abast d'aquest tutorial, però si voleu aprofundir en aquest tema, puc recomanar un extracte del llibre de xarxes de navegadors d'alt rendiment: extracte HTTP/2 .
En aquesta guia, instal·larem la darrera versió estable de Nginx a Ubuntu 16.04 (Xenial), generarem un certificat SSL autofirmat, habilitarem el protocol HTTP/2 a Nginx i instal·larem el navegador basat en text elinksper actuar com a client HTTP.
Instal·leu Nginx
Per instal·lar la darrera versió estable de Nginx, hem d'emetre unes quantes ordres:
Hem de descarregar la clau PGP pública de Nginx utilitzada per signar paquets i repositoris i afegir-la a l'anell de claus que utilitza el gestor de paquets per verificar l'autenticitat dels paquets descarregats del dipòsit.
wget https://nginx.org/keys/nginx_signing.key && apt-key add nginx_signing.key
Suprimiu la clau PGP del sistema de fitxers:
rm nginx_signing.key
Afegeix un repositori nou
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
Actualitzeu la llista de paquets i instal·leu Nginx:
apt update && apt install nginx -y
Per verificar la versió de Nginx podem utilitzar el següent:
nginx -v
# nginx version: nginx/1.10.1
Si tot va bé, hauríeu de veure un patró com 1.10.xa la sortida quan executeu l' nginx -vordre.
Certificat autofirmat i 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.
Crearem certificats autofirmats per a example.comdominis ficticis , per a la producció necessiteu un domini vàlid i utilitzeu una CA de confiança.
Generar clau privada:
openssl genrsa -aes128 -out example.com.key 2048
Després d'executar aquesta ordre, haureu d'introduir la contrasenya 2 vegades. Com que les frases de contrasenya són molestes, l'eliminarem.
Elimina la contrasenya de la clau privada:
openssl rsa -in example.com.key -out example.com.key
Genera una sol·licitud de signatura de certificat (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
Crear certificat:
openssl x509 -req -days 365 -in cert-request.csr -signkey example.com.key -out example.com.crt
Ordena el certificat i la clau privada:
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
Feu directoris d'amfitrió virtual nginx
mkdir /etc/nginx/sites-available && mkdir /etc/nginx/sites-enabled
A continuació, executeu nano /etc/nginx/nginx.confi busqueu una directiva include /etc/nginx/conf.d/*.conf;. A sota d'aquesta directiva, afegiu include /etc/nginx/sites-enabled/*;Desa ( CTRL+O ) i després sortiu ( CTRL+X ).
##
# Virtual Hosts
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
Creeu un fitxer anomenat example.com.confdins del /etc/nginx/sites-availabledirectori amb aquesta ordre nano /etc/nginx/sites-available/example.com.confi copieu/enganxeu el codi següent:
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;
}
Enhorabona, ara teniu un servidor web habilitat HTTP/2 . Afegir un http2paràmetre a la listendirectiva dins de l'amfitrió virtual HTTPS us donarà suport HTTP/2 .
Creeu un enllaç simbòlic per /etc/nginx/sites-available/example.com.confamb aquesta comanda:
ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled
Prova la sintaxi de configuració
nginx -t
Reinicieu Nginx per aplicar els vostres canvis:
systemctl restart nginx
Afegeix un example.comdomini al /etc/hostsfitxer
echo '127.0.0.1 example.com' >> /etc/hosts
Instal·leu elinks
Per provar el vostre host virtual necessitem un navegador basat en text: elinks.
Per instal·lar elinks, utilitzeu l'ordre següent:
apt install elinks
Per provar example.coml'execució de l'amfitrió virtual:
elinks https://example.com
Per sortir del navegador elinks, premeu q al teclat i, a continuació, Intro .
Prova HTTP/2
Per veure quins protocols anuncia el servidor, la manera més senzilla és utilitzar el opensslconjunt d'eines.
openssl s_client -connect example.com:443 -nextprotoneg ''
A la sortida d'aquesta comanda hauríeu de veure alguna cosa com això:
CONNECTED(00000003)
Protocols advertised by server: h2, http/1.1
Per veure HTTP/2 en acció, podeu utilitzar les eines de desenvolupament del navegador. El protocol HTTP/2 s'indica amb h2o amb HTTP/2.0identificadors. Obriu el tauler de xarxa a les eines de desenvolupament i actualitzeu la vostra pàgina.
Conclusió
Ara hauríeu de ser conscients de com de "fàcil" és habilitar HTTP/2 a la configuració de Nginx, però això no és tota la part de la imatge general. En primer lloc, hauríeu de pensar en habilitar TLS/SSL al vostre servidor amb suites de xifratge potents i assegurar-vos que no feu servir xifratges a la llista negra . Només després d'habilitar TLS/SSL fort al vostre servidor, podeu començar a pensar en habilitar HTTP/2 .