TLS1.3 käyttöön Nginx-webpalvelimella

  • minh 

Nginx-webpalvelimen uusin versio (1.1.3 tai uudempi) tukee TLS1.3:sta, kunhan käytössäsi on uusin OpenSSL 1.1.1-versio palvelimella asennettuna. TLS1.3 parantaa sivuston latausnopeutta ja turvallisuutta. CloudFlaren blogissa tämä on hyvin selitetty.

Ubuntu 18.04 LTS tarjoaa vain OpenSSL 1.1.0:n ja toki on mahdollista päivittää kirjasto, mutta tämä ei ole hyvä asia sillä se voi rikkoa jotakin. Tästä syystä on parempi kääntää Nginx OpenSSL-kirjaston kanssa ottaakseen käyttöön TLS1.3-käyttöön.

Huomaa, että webbiselaimet eivät tue TLS1.3 viimeistä versiota kuin vasta lokakuun 2018 tulevassa päivityksessä, eli Chrome 70 on yksi ensimmäisistä versiosta, joka tätä tukee. Mikäli haluat jo testata tätä, sinun tulee asentaa BETA-versio Chromesta.

Lisää Nginx:n viralliset sourcet source.list-tiedostoon. Mikäli käytät Ubuntun 16.04 LTS-versiota, niin vaihda bionic-tilalle xenial.  Tämän jälkeen päivitä paikallinen paketti indeksi.

wget http://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key
sudo add-apt-repository -s "deb [arch=amd64] http://nginx.org/packages/mainline/ubuntu/ bionic nginx"
sudo apt update

Luodaan ensin hakemisto Nginx ja OpenSSL-lähdekoodeille ja sitten ladataan Nginx lähdekoodi.

sudo mkdir /usr/local/src/nginx
cd /usr/local/src/nginx/
sudo apt install dpkg-dev
sudo apt source nginx

Tämän jälkeen kloonataan OpenSSL-repo Githubista ja vaihda OpenSSL 1.1.1.1 vakaaseen branchiin.

cd /usr/local/src
sudo apt install git
sudo git clone https://github.com/openssl/openssl.git
cd openssl
sudo git checkout OpenSSL_1_1_1-stable

Muuta Nginx compile sääntöjä

sudo nano /usr/local/src/nginx/nginx-*/debian/rules

Etsi config.status.nginx: config.env.nginx osa ja lisää loppupäähän

--with-openssl=/usr/local/src/openssl

Siirry Nginx-lähdekoodihakemistoon ja käännä Nginx lähdekoodista

cd /usr/local/src/nginx/nginx-*/
sudo apt build-dep nginx
sudo dpkg-buildpackage -b

Mikäli saat virheen ”missing initializer for field ’md_ctrl’ of ’ENV_MD)…” niin muokkaa auto/cc/gcc tiedostoa ja kommentoi pois alla oleva rivi

CFLAGS="$CFLAGS -Werror"

Tallenna tiedosto ja yritä uudelleen. Kun lähdekoodin kääntäminen on valmis niin asenna dpkg-paketti.

cd /usr/local/src/nginx/
sudo dpkg -i nginx_*~bionic_amd64.deb

Tarkista lopuksi Nginx-versio ”nginx -V” -komennolla, jonka pitäisi palauttaa seuraavanlaisen tuloksen.

nginx version: nginx/1.15.4
built by gcc 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.10)
built with OpenSSL 1.1.1a-dev  xx XXX xxxx
TLS SNI support enabled

Nyt ota TLS1.3 käyttöön konfiguroimalla virtualhostit lisäämällä ssl_protocols kohtaan TLSv1.3 ja määrittämällä seuraavat cipherit

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'TLS-CHACHA20-POLY1305-SHA256:TLS-AES-256-GCM-SHA384:TLS-AES-128-GCM-SHA256: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';

Tarkista konfiguraatio ja lataa konfiguraatio uudelleen

sudo nginx -t
sudo systemctl reload nginx

On suositeltavaa poistaa automaattiset päivitykset pois käytöstä, sillä päivitämällä aptin kautta menetävät TLS1.3:sen.

sudo apt-mark hold nginx

Voit nyt testata TLS1.3 toimivuus esimerkiksi SSL Labsin testillä tai Chrome (70 tai uudempi) tai Firefoxin (63 tai uudempi) selaimella.

Chrome-selaimella näet TLS-version kehittäjän konsolista (pikapainikkeella F12 saat tämän auki selaimestasi). Firefoxilla näet kun valitset lukkokuvakkeesta osoiteriviltä -> Lisätietoa.

Avainsanat:

Kommentoi