Cara Mengaktifkan TLS 1.3 di Nginx pada Debian 9

pengantar

TLS 1.3 adalah versi protokol Transport Layer Security (TLS) yang diterbitkan pada 2018 sebagai standar yang diusulkan dalam RFC 8446 . Ini menawarkan peningkatan keamanan dan kinerja dibandingkan pendahulunya.

Panduan ini menjelaskan cara mengaktifkan TLS 1.3 menggunakan server web Nginx di Debian 9.

Persyaratan

  • Versi nginx 1.13.0atau lebih tinggi.
  • Versi OpenSSL 1.1.1atau lebih tinggi.
  • Contoh Vultr Cloud Compute (VC2) menjalankan Debian 9 x64 (peregangan).
  • Nama domain yang valid dan catatan A/ AAAA/ CNAMEDNS yang dikonfigurasi dengan benar untuk domain Anda.
  • Sertifikat TLS yang valid. Kami akan mendapatkannya dari Let's Encrypt.

Sebelum kamu memulai

Periksa versi Debian.

lsb_release -ds
# Debian GNU/Linux 9.9 (stretch)

Pastikan sistem Anda mutakhir.

apt update && apt upgrade -y

Instal paket yang diperlukan.

apt install -y git unzip curl sudo socat build-essential

Buat akun pengguna non-root baru dengan sudoakses dan beralih ke sana.

adduser johndoe --gecos "John Doe"
usermod -aG sudo johndoe
su - johndoe

CATATAN: Ganti johndoedengan nama pengguna Anda.

Siapkan zona waktu.

sudo dpkg-reconfigure tzdata

Instal klien Acme.sh dan dapatkan sertifikat TLS dari Let's Encrypt

Download dan install Acme.sh .

sudo mkdir /etc/letsencrypt
sudo git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh 
sudo ./acme.sh --install --home /etc/letsencrypt --accountemail [email protected]
cd ~
source ~/.bashrc

Periksa versinya.

/etc/letsencrypt/acme.sh --version
# v2.8.2

Dapatkan sertifikat RSA dan ECDSA untuk domain Anda.

# RSA 2048
sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --ocsp-must-staple --keylength 2048
# ECDSA
sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --ocsp-must-staple --keylength ec-256

CATATAN: Ganti example.comdengan nama domain Anda.

Setelah menjalankan perintah sebelumnya, sertifikat dan kunci Anda dapat diakses di lokasi berikut:

  • RSA :/etc/letsencrypt/example.com
  • ECC / ECDSA :/etc/letsencrypt/example.com_ecc

Bangun Nginx dari Sumber

Nginx menambahkan dukungan untuk TLS 1.3 dalam versi 1.13.0. Pada sebagian besar distribusi Linux, termasuk Debian 9, Nginx dibangun dengan versi OpenSSL yang lebih lama, yang tidak mendukung TLS 1.3. Oleh karena itu, kita memerlukan Nginx custom kita sendiri yang ditautkan dengan rilis OpenSSL 1.1.1, yang mencakup dukungan untuk TLS 1.3.

Unduh versi arus utama terbaru dari kode sumber Nginx dan ekstrak.

wget https://nginx.org/download/nginx-1.17.0.tar.gz && tar zxvf nginx-1.17.0.tar.gz

Unduh kode sumber OpenSSL 1.1.1c dan ekstrak.

# OpenSSL version 1.1.1c
wget https://www.openssl.org/source/openssl-1.1.1c.tar.gz && tar xzvf openssl-1.1.1c.tar.gz

Hapus semua .tar.gzfile, karena tidak diperlukan lagi.

rm -rf *.tar.gz

Masukkan direktori sumber Nginx.

cd ~/nginx-1.17.0

Konfigurasikan, kompilasi, dan instal Nginx. Demi kesederhanaan, kami hanya akan mengkompilasi modul penting yang diperlukan agar TLS 1.3 berfungsi. Jika Anda membutuhkan Nginx build lengkap, Anda dapat membaca panduan Vultr ini tentang kompilasi Nginx.

./configure --prefix=/etc/nginx \
            --sbin-path=/usr/sbin/nginx \
            --modules-path=/usr/lib/nginx/modules \
            --conf-path=/etc/nginx/nginx.conf \
            --error-log-path=/var/log/nginx/error.log \
            --pid-path=/var/run/nginx.pid \
            --lock-path=/var/run/nginx.lock \
            --user=nginx \
            --group=nginx \
            --build=Debian \
            --builddir=nginx-1.17.0 \
            --http-log-path=/var/log/nginx/access.log \
            --http-client-body-temp-path=/var/cache/nginx/client_temp \
            --http-proxy-temp-path=/var/cache/nginx/proxy_temp \
            --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
            --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
            --http-scgi-temp-path=/var/cache/nginx/scgi_temp \
            --with-compat \
            --with-http_ssl_module \
            --with-http_v2_module \
            --with-openssl=../openssl-1.1.1c \
            --with-openssl-opt=no-nextprotoneg \
            --without-http_rewrite_module \
            --without-http_gzip_module

make
sudo make install

Buat grup sistem dan pengguna Nginx.

sudo adduser --system --home /nonexistent --shell /bin/false --no-create-home --disabled-login --disabled-password --gecos "nginx user" --group nginx

Simbol /usr/lib/nginx/moduleske /etc/nginx/modules. Yang terakhir adalah tempat standar untuk modul Nginx.

sudo ln -s /usr/lib/nginx/modules /etc/nginx/modules

Buat direktori cache Nginx dan atur izin yang tepat.

sudo mkdir -p /var/cache/nginx/client_temp /var/cache/nginx/fastcgi_temp /var/cache/nginx/proxy_temp /var/cache/nginx/scgi_temp /var/cache/nginx/uwsgi_temp
sudo chmod 700 /var/cache/nginx/*
sudo chown nginx:root /var/cache/nginx/*

Periksa versi Nginx.

sudo nginx -V

# nginx version: nginx/1.17.0 (Debian)
# built by gcc 6.3.0 20170516 (Debian 6.3.0-18+deb9u1)
# built with OpenSSL 1.1.1c  28 May 2019
# TLS SNI support enabled
# configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx . . .
# . . .

Buat file unit Nginx systemd.

sudo vim /etc/systemd/system/nginx.service

Populasikan file dengan konfigurasi berikut.

[Unit]
Description=nginx - high performance web server
Documentation=https://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID

[Install]
WantedBy=multi-user.target

Mulai dan aktifkan Nginx.

sudo systemctl start nginx.service
sudo systemctl enable nginx.service

Buat conf.d, sites-availabledan sites-enableddirektori di /etc/nginx.

sudo mkdir /etc/nginx/{conf.d,sites-available,sites-enabled}

Jalankan sudo vim /etc/nginx/nginx.confdan tambahkan dua arahan berikut ke akhir file, tepat sebelum penutupan }.

    . . .
    . . .
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*.conf;
}

Simpan file dan keluar dengan :+ W+ Q.

Konfigurasikan Nginx untuk TLS 1.3

Sekarang kami telah berhasil membangun Nginx, kami siap mengkonfigurasinya untuk mulai menggunakan TLS 1.3 di server kami.

Jalankan sudo vim /etc/nginx/conf.d/example.com.confdan isi file dengan konfigurasi berikut.

server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;

  # RSA
  ssl_certificate /etc/letsencrypt/example.com/fullchain.cer;
  ssl_certificate_key /etc/letsencrypt/example.com/example.com.key;
  # ECDSA
  ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.cer;
  ssl_certificate_key /etc/letsencrypt/example.com_ecc/example.com.key;

  ssl_protocols TLSv1.2 TLSv1.3;
  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;
}

Simpan file dan keluar dengan :+ W+ Q.

Perhatikan TLSv1.3parameter baru dari ssl_protocolsdirektif tersebut. Parameter ini diperlukan untuk mengaktifkan TLS 1.3.

Periksa konfigurasi.

sudo nginx -t

Muat ulang Nginx.

sudo systemctl reload nginx.service

Untuk memverifikasi TLS 1.3, Anda dapat menggunakan alat pengembang browser atau layanan SSL Labs. Tangkapan layar di bawah ini menunjukkan tab keamanan Chrome yang menunjukkan bahwa TLS 1.3 berfungsi.

Cara Mengaktifkan TLS 1.3 di Nginx pada Debian 9

Cara Mengaktifkan TLS 1.3 di Nginx pada Debian 9

Selamat! Anda telah berhasil mengaktifkan TLS 1.3 di server Debian 9 Anda.



Leave a Comment

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

6 Hal yang Sangat Menggila dari Nintendo Switch

6 Hal yang Sangat Menggila dari Nintendo Switch

Banyak dari Anda tahu Switch keluar pada Maret 2017 dan fitur-fitur barunya. Bagi yang belum tahu, kami sudah menyiapkan daftar fitur yang membuat 'Switch' menjadi 'gadget yang wajib dimiliki'.

Janji Teknologi Yang Masih Belum Ditepati

Janji Teknologi Yang Masih Belum Ditepati

Apakah Anda menunggu raksasa teknologi untuk memenuhi janji mereka? periksa apa yang belum terkirim.

Fungsionalitas Lapisan Arsitektur Referensi Big Data

Fungsionalitas Lapisan Arsitektur Referensi Big Data

Baca blog untuk mengetahui berbagai lapisan dalam Arsitektur Big Data dan fungsinya dengan cara yang paling sederhana.

Bagaimana AI Dapat Membawa Otomatisasi Proses ke Tingkat Selanjutnya?

Bagaimana AI Dapat Membawa Otomatisasi Proses ke Tingkat Selanjutnya?

Baca ini untuk mengetahui bagaimana Kecerdasan Buatan menjadi populer di antara perusahaan skala kecil dan bagaimana hal itu meningkatkan kemungkinan untuk membuat mereka tumbuh dan memberi keunggulan pada pesaing mereka.

CAPTCHA: Berapa Lama Itu Bisa Tetap Menjadi Teknik yang Layak Untuk Perbedaan Human-AI?

CAPTCHA: Berapa Lama Itu Bisa Tetap Menjadi Teknik yang Layak Untuk Perbedaan Human-AI?

CAPTCHA telah berkembang cukup sulit bagi pengguna untuk dipecahkan dalam beberapa tahun terakhir. Apakah itu akan tetap efektif dalam deteksi spam dan bot di masa mendatang?

Singularitas Teknologi: Masa Depan Peradaban Manusia yang Jauh?

Singularitas Teknologi: Masa Depan Peradaban Manusia yang Jauh?

Saat Sains Berkembang dengan kecepatan tinggi, mengambil alih banyak upaya kita, risiko menundukkan diri kita pada Singularitas yang tidak dapat dijelaskan juga meningkat. Baca, apa arti singularitas bagi kita.

Telemedicine Dan Perawatan Kesehatan Jarak Jauh: Masa Depan Ada Di Sini

Telemedicine Dan Perawatan Kesehatan Jarak Jauh: Masa Depan Ada Di Sini

Apa itu telemedicine, perawatan kesehatan jarak jauh dan dampaknya terhadap generasi mendatang? Apakah itu tempat yang bagus atau tidak dalam situasi pandemi? Baca blog untuk menemukan tampilan!

Pernahkah Anda Bertanya-tanya Bagaimana Hacker Menghasilkan Uang?

Pernahkah Anda Bertanya-tanya Bagaimana Hacker Menghasilkan Uang?

Anda mungkin pernah mendengar bahwa peretas menghasilkan banyak uang, tetapi pernahkah Anda bertanya-tanya bagaimana cara mereka mendapatkan uang sebanyak itu? mari berdiskusi.

Pembaruan Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Masalah Daripada Menyelesaikan

Pembaruan Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Masalah Daripada Menyelesaikan

Baru-baru ini Apple merilis macOS Catalina 10.15.4 pembaruan suplemen untuk memperbaiki masalah tetapi tampaknya pembaruan menyebabkan lebih banyak masalah yang mengarah ke bricking mesin mac. Baca artikel ini untuk mempelajari lebih lanjut