GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Mengaktifkan TLS 1.3 di Nginx di Ubuntu 18.04 dan 16.04

HTTPS menjadi lebih cepat dan aman berkat rilis TLS 1.3 oleh IETF (RFC 8446) pada Agustus 2018. TLS 1.3 kini merupakan versi terbaru dari protokol TLS. Tutorial ini akan menunjukkan cara mengaktifkan TLS 1.3 di server web Nginx di Ubuntu 18.04 dan Ubuntu 16.04.

Perbarui :Ada cara yang lebih mudah untuk mengaktifkan TLS 1.3. Lihat artikel ini:Cara mudah mengaktifkan TLS 1.3 di Nginx di Ubuntu 18.10, 18.04, 16.04, 14.04

TLS 1.3:Peningkatan Performa dan Keamanan

Dari segi kinerja, TLS 1.2 membutuhkan dua perjalanan pulang pergi untuk membuat koneksi HTTPS. Dengan TLS 1.3, hanya diperlukan satu perjalanan pulang pergi. TLS 1.3 juga mendukung mode nol perjalanan pulang pergi (sesi dimulai kembali 0-RTT), memungkinkan klien yang sebelumnya terhubung ke situs web Anda untuk mengirim permintaan HTTP pada pesan pertama ke server. Hal ini membuat perbedaan besar bagi pengguna di jaringan seluler atau di lokasi yang jauh.

Dalam hal keamanan, TLS 1.3 menghapus dukungan untuk cipher suites lama, yang bertanggung jawab atas eksploitasi seperti serangan ROBOT. Karena itu, admin server tidak dapat lagi menambahkan rangkaian sandi lama di TLS 1.3 untuk menenangkan pengguna browser web lama. Ini, tentu saja, adalah penjelasan yang terlalu disederhanakan. CloudFlare memiliki penjelasan rinci yang baik tentang TLS 1.3.

Aktifkan TLS 1.3 di Nginx di Ubuntu 18.04, Ubuntu 16.04

Ada dua persyaratan untuk mengaktifkan TLS 1.3 dengan Nginx.

  1. Versi Nginx Anda harus mendukung TLS 1.3. Itu berarti nginx 1.13 atau lebih tinggi.
  2. Nginx harus dibuat dengan OpenSSL 1.1.1+, atau dijalankan dengan OpenSSL 1.1.1+.

Persyaratan kedua mungkin terdengar membingungkan, jadi izinkan saya memberi Anda dua contoh.

  • Ubuntu 18.04 dikirimkan dengan OpenSSL 1.1.0. Mengganti sistem perpustakaan OpenSSL bukanlah ide yang baik, tetapi Anda dapat mengunduh kode sumber OpenSSL 1.1.1 dan mengompilasi Nginx dengan kode sumber OpenSSL 1.1.1 untuk mengaktifkan TLS 1.3.
  • Arch Linux saat ini dikirimkan dengan OpenSSL 1.1.1, tetapi paket Nginx di repositori Arch sebenarnya dibuat dengan OpenSSL 1.1.0. Dalam hal ini, Nginx tidak dibuat dengan OpenSSL 1.1.1, tetapi berjalan dengan OpenSSL 1.1.1.

Sekarang mari kita lihat bagaimana cara mengkompilasi Nginx dengan OpenSSL 1.1.1 di Ubuntu 18.04 dan Ubuntu 16.04.

1. Menambahkan Repositori Nginx Resmi

Alih-alih mengunduh tarball sumber dan mengompilasinya dengan make , saya akan menambahkan repositori Nginx resmi ke server Ubuntu saya dan kemudian membuat paket deb dari kode sumber. Dengan cara ini, saya tidak perlu menambahkan daftar panjang parameter konfigurasi secara manual ke configure memerintah. Juga akan ada file layanan systemd yang berguna di dalam paket deb.

Pertama-tama ambil kunci Nginx GPG dan impor ke Ubuntu.

wget http://nginx.org/keys/nginx_signing.key

sudo apt-key add nginx_signing.key

Kemudian buat file daftar sumber untuk repo Nginx.

sudo nano /etc/apt/sources.list.d/nginx.list

Tambahkan dua baris berikut ke dalam file. deb-src baris memungkinkan kami mengunduh paket sumber Nginx dengan apt source memerintah. Bonic adalah nama kode untuk Ubuntu 18.04. Jika Anda menggunakan Ubuntu 16.04, ganti dengan xenial . (Catatan:Repositori ini tidak mendukung OS 32 bit.)

deb [arch=amd64] http://nginx.org/packages/mainline/ubuntu/ bionic nginx
deb-src http://nginx.org/packages/mainline/ubuntu/ bionic nginx

Untuk menyimpan file di editor teks Nano, tekan Ctrl+O , lalu tekan Enter untuk mengonfirmasi. Untuk keluar, tekan Ctrl+X . Kemudian perbarui indeks paket lokal.

sudo apt update

Sekarang repositori resmi Nginx ditambahkan ke server Ubuntu.

2. Unduh Kode Sumber Nginx dan OpenSSL

Kami akan membuat nginx direktori di bawah /usr/local/src/ untuk menyimpan sumber Nginx dan kemudian cd ke direktori itu.

sudo mkdir /usr/local/src/nginx
 
cd /usr/local/src/nginx/

Unduh paket sumber Nginx dengan perintah di bawah ini:

sudo apt install dpkg-dev

sudo apt source nginx

Periksa file yang diunduh.

ls

Keluaran:

nginx-1.15.3                               nginx_1.15.3-1~bionic.dsc
nginx_1.15.3-1~bionic.debian.tar.xz        nginx_1.15.3.orig.tar.gz

Kemudian kloning repositori github OpenSSL.

cd /usr/local/src

sudo apt install git

sudo git clone https://github.com/openssl/openssl.git

cd openssl

Selanjutnya, buat daftar semua cabang dan alihkan ke cabang stabil 1.1.1.

git branch -a

sudo git checkout OpenSSL_1_1_1-stable

3. Edit Aturan Kompilasi Nginx

Edit file aturan kompilasi Nginx.

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

Temukan config.status.nginx: config.env.nginx bagian. Tambahkan teks berikut di akhir baris CFLAGS. Perhatikan bahwa teks berikut bukan baris dengan sendirinya.

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

Simpan dan tutup file.

4. Kompilasi Nginx

Pastikan Anda berada di direktori sumber Nginx.

cd /usr/local/src/nginx/nginx-1.15.3/

Instal dependensi untuk membangun paket deb Nginx kami.

sudo apt build-dep nginx

Sekarang gunakan perintah berikut untuk membangun paket deb.

sudo dpkg-buildpackage -b

Jika Anda melihat kesalahan berikut,

missing initializer for field 'md_ctrl' of 'EVP_MD {aka const struct evp_md_st}

Kemudian edit auto/cc/gcc berkas.

sudo nano /usr/local/src/nginx/nginx-1.15.3/auto/cc/gcc

Komentari baris berikut. -Werror flag membuat GCC memperlakukan peringatan sebagai kesalahan.

CFLAGS="$CFLAGS -Werror"

Kemudian jalankan kembali perintah build. Setelah build selesai, akan ada paket deb Nginx di /usr/local/src/nginx/ direktori. Jika Anda telah menginstal Nginx sebelumnya, saatnya untuk menghapus versi lama dan kemudian menginstal versi baru.

sudo apt remove nginx nginx-common nginx-full

cd /usr/local/src/nginx/

sudo dpkg -i nginx_1.15.3-1~bionic_amd64.deb

Sekarang mari kita mulai Nginx.

sudo systemctl start nginx

Jika Anda melihat pesan kesalahan berikut.

Failed to start nginx.service: Unit nginx.service is masked.

Kemudian buka kedok nginx dan jalankan perintah start lagi.

sudo systemctl unmask nginx

Perhatikan bahwa proses Nginx mungkin berjalan sebagai pengguna nginx atau www-data . Ini dapat diubah dengan mengedit baris pertama di /etc/nginx/nginx.conf mengajukan. Pastikan Nginx berjalan sebagai pengguna yang sama dengan PHP-FPM.

Sekarang periksa argumen konfigurasi Nginx.

sudo nginx -V

Seperti yang Anda lihat, kami memiliki Nginx versi terbaru yang dibuat dengan OpenSSL 1.1.1.

5. Aktifkan TLS 1.3 di Blok Server Nginx

Sekarang saya berasumsi bahwa Anda telah mengaktifkan HTTPS untuk blok server Nginx Anda. Sintaks untuk mengaktifkan TLS 1.3 cukup mudah. Buka file blok server Nginx Anda di /etc/nginx/conf.d/ direktori atau /etc/nginx/sites-enabled/ direktori. Temukan baris berikut.

ssl_protocols  TLSv1.2;

Tambahkan TLSv1.3 ke daftar protokol.

ssl_protocols TLSv1.2 TLSv1.3;

Kemudian tambahkan 3 cipher suite berikut ke cipher suite yang ada.

TLS-CHACHA20-POLY1305-SHA256
TLS-AES-256-GCM-SHA384
TLS-AES-128-GCM-SHA256

seperti ini:

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';

Simpan dan tutup file. Kemudian uji konfigurasi Nginx dan muat ulang.

sudo nginx -t

sudo systemctl reload nginx

Kecil kemungkinan Ubuntu 18.04 akan beralih ke OpenSSL 1.1.1, jadi jika Anda memutakhirkan Nginx dengan sudo apt upgrade perintah, TLS 1.3 akan hilang. Ada baiknya untuk menahan Nginx agar tidak ditingkatkan oleh apt dengan perintah ini:

sudo apt-mark hold nginx

Pembaruan:Pada Nginx 1.15.4, Anda dapat mengaktifkan 0-RTT dengan OpenSSL dengan menambahkan arahan berikut dalam konteks server ssl. Nilai default diatur ke off . Pada versi 1.15.3 sebelumnya, hanya dapat digunakan dengan BoringSSL.

ssl_early_data on

Aktifkan TLS 1.3 di Google Chrome

Saat ini, Firefox 62 dan Chrome 69 hanya mendukung draft 28 dari TLS 1.3. OpenSSL 1.1.1 mendukung versi final TLS 1.3. Implementasi berdasarkan versi draf dan versi RFC final tidak saling beroperasi.

Untuk menguji server Nginx kami sekarang, kami perlu menginstal versi beta Google Chrome dan mengaktifkan versi final TLS 1.3. Setelah Chrome beta terpasang, Masukkan chrome://flags/#tls13-variant di bilah alamat dan beralih dari default ke Enabled (Final) . Kemudian luncurkan kembali Google Chrome agar perubahan diterapkan.

Sekarang kunjungi situs web Anda yang mendukung TLS 1.3 di Google Chrome beta dan tekan Ctrl+Shift+I untuk membuka halaman alat pengembang. Buka Security tab. Anda dapat melihat versi TLS yang digunakan.

Firefox dikatakan akan mengirimkan versi final TLS 1.3 di Firefox 63, dijadwalkan pada Oktober 2018. Di Chrome 70, versi final TLS 1.3 akan diaktifkan untuk koneksi keluar.

Pembaruan:Chrome 70 menambahkan dukungan untuk versi final TLS 1.3, tetapi secara default masih menggunakan draf 28 dari TLS 1.3.

Aktifkan TLS 1.3 dengan CloudFlare

Jika Anda menggunakan CloudFlare CDN (Content Delivery Network), maka situs web Anda sudah menggunakan TLS1.3. Di dasbor CloudFlare, pilih crypto tab dan Anda akan melihat opsi untuk mengaktifkan/menonaktifkan TLS 1.3. Anda juga dapat mengaktifkan 0-RTT. CloudFlare mendukung versi draft 28 dan versi final.

Itu dia! Saya harap tutorial ini membantu Anda mengaktifkan TLS 1.3 di Nginx di Ubuntu 18.04 dan Ubuntu 16.04. Hati-hati.


Ubuntu
  1. Cara Instal Nginx Dengan PHP5 Dan MySQL Di Ubuntu 11.10

  2. Ubuntu 20.04 – Bagaimana Mengaktifkan Hwe?

  3. Cara Mengaktifkan HTTP/2 di Nginx di Ubuntu dan CentOS

  1. Cara Mengaktifkan SSH di Ubuntu 18.04

  2. Cara Menginstal dan Mengkonfigurasi Nginx di Ubuntu 20.04

  3. Cara mengaktifkan dan menonaktifkan Wayland di Ubuntu

  1. Cara Mengaktifkan dan Menonaktifkan Akun Pengguna Root di Ubuntu

  2. Cara Mengaktifkan SSH di Ubuntu 20.04

  3. Cara Menginstal dan Mengkonfigurasi Nginx di Ubuntu 18.04 / Debian 9