Telepítse az Nginx-et
Önaláírt tanúsítvány és HTTP/2
Telepítse elinks
Tesztelje a HTTP/2-t
Következtetés
A HTTP/2 a mára elavult HTTP/1.1 protokoll új verziója, amelyet még 1999-ben szabványosítottak. Azóta sok minden megváltozott az interneten. Alkalmazásaink összetettebbek, mint korábban voltak, ezért ennek megbirkózása érdekében az alapul szolgáló szállítási protokoll módosítására volt szükség. A HTTP/2 legfontosabb dologaz, hogy gyorsabbá teszi a weboldalt a végfelhasználók számára.
Röviden a HTTP/2 5 kulcsfontosságú szolgáltatást ad hozzá :
- Egyetlen, tartós kapcsolat
- Multiplexelés
- Fejléc tömörítés
- Az erőforrások prioritása
- Biztonságos szállítási réteg (csak böngészőkre érvényes)
Ezeknek a funkcióknak a magyarázata nem tartozik ennek az oktatóanyagnak a hatókörébe, de ha mélyebben szeretne ásni a témában, ajánlhatok egy részletet a High Performance Browser Networking könyvből – HTTP/2 kivonat .
Ebben az útmutatóban telepítjük az Nginx legújabb stabil verzióját az Ubuntu 16.04-re (Xenial), önaláírt SSL-tanúsítványt generálunk, engedélyezzük a HTTP/2 protokollt az Nginxben, és telepítjük a szöveges böngészőt elinks, hogy HTTP-kliensként működjön.
Telepítse az Nginx-et
Az Nginx legújabb stabil verziójának telepítéséhez jó néhány parancsot kell kiadnunk:
Le kell töltenünk a csomagok és tárolók aláírására használt Nginx nyilvános PGP-kulcsot, és hozzá kell adnunk a csomagkezelő által használt kulcstartóhoz, hogy ellenőrizzük a tárolóból letöltött csomagok hitelességét.
wget https://nginx.org/keys/nginx_signing.key && apt-key add nginx_signing.key
Törölje a PGP kulcsot a fájlrendszerből:
rm nginx_signing.key
Új tár hozzáadása
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
Frissítse csomaglistáját és telepítse az Nginx-et:
apt update && apt install nginx -y
Az Nginx verziójának ellenőrzéséhez a következőket használhatjuk:
nginx -v
# nginx version: nginx/1.10.1
Ha minden jól megy 1.10.x, a nginx -vparancs futtatásakor olyan mintát kell látnia, mint a kimenetben .
Önaláírt tanúsítvány és 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.
Önaláírt tanúsítványokat fogunk létrehozni kitalált example.comdomainhez, a termeléshez érvényes domainre van szükség, és megbízható CA-t kell használnia.
Privát kulcs generálása:
openssl genrsa -aes128 -out example.com.key 2048
A parancs futtatása után kétszer meg kell adnia a jelszót. Mivel a jelszavak bosszantóak, eltávolítjuk őket.
Jelszó eltávolítása a privát kulcsból:
openssl rsa -in example.com.key -out example.com.key
Tanúsítvány-aláírási kérelem (CSR) generálása:
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
Tanúsítvány létrehozása:
openssl x509 -req -days 365 -in cert-request.csr -signkey example.com.key -out example.com.crt
Tanúsítvány és privát kulcs rendezése:
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
Készítsen nginx virtuális gazdagép-könyvtárakat
mkdir /etc/nginx/sites-available && mkdir /etc/nginx/sites-enabled
Ezután futtassa, nano /etc/nginx/nginx.confés keressen egy direktívát include /etc/nginx/conf.d/*.conf;. Ez a direktíva alatt adja hozzá a include /etc/nginx/sites-enabled/*;Mentés ( CTRL+O ) billentyűt , majd lépjen ki ( CTRL+X ).
##
# Virtual Hosts
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
Hozzon létre egy example.com.confbelső /etc/nginx/sites-availablekönyvtár nevű fájlt ezzel a paranccsal, nano /etc/nginx/sites-available/example.com.confés másolja/illessze be a következő kódot:
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;
}
Gratulálunk, most már rendelkezik a HTTP/2-vel rendelkező webszerverrel. Ha http2paramétert ad hozzá a listendirektívához a HTTPS virtuális gazdagépen belül, akkor HTTP/2 támogatást kap.
Hozzon létre egy szimbolikus hivatkozást /etc/nginx/sites-available/example.com.confezzel a paranccsal:
ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled
Teszt konfigurációs szintaxis
nginx -t
Indítsa újra az Nginxet a módosítások alkalmazásához:
systemctl restart nginx
example.comDomain hozzáadása a /etc/hostsfájlhoz
echo '127.0.0.1 example.com' >> /etc/hosts
Telepítse elinks
A virtuális gazdagép teszteléséhez szöveges böngészőre van szükségünk - elinks.
Az elinks telepítéséhez használja a következő parancsot:
apt install elinks
A example.comvirtuális gazdagép futtatásának tesztelése :
elinks https://example.com
Az elinks böngészőből való kilépéshez nyomja meg a q gombot a billentyűzeten, majd az Enter billentyűt .
Tesztelje a HTTP/2-t
A szerver által hirdetett protokollok megtekintéséhez a legegyszerűbb az openssleszközkészlet használata .
openssl s_client -connect example.com:443 -nextprotoneg ''
A parancs kimenetében valami ilyesmit kell látnia:
CONNECTED(00000003)
Protocols advertised by server: h2, http/1.1
A HTTP/2 működésének megtekintéséhez használhatja a böngésző fejlesztői eszközeit. A HTTP/2 protokollt h2vagy HTTP/2.0azonosítók jelzik . Nyissa meg a hálózati panelt a fejlesztői eszközökben, és frissítse az oldalt.
Következtetés
Most már tisztában kell lennie azzal, hogy milyen "egyszerű" engedélyezni a HTTP/2-t az Nginx konfigurációjában, de ez nem a teljes kép része. Először is érdemes megfontolni a TLS/SSL engedélyezését a szerveren erős titkosítási csomagokkal, és meg kell győződni arról, hogy nem használsz tiltólistán szereplő titkosításokat . Csak az erős TLS/SSL engedélyezése után kezdhet el gondolkodni a HTTP/2 engedélyezésén .