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.