Bagaimana Membolehkan TLS 1.3 di Nginx di Debian 9

Pengenalan

TLS 1.3 adalah versi protokol Transport Layer Security (TLS) yang diterbitkan pada tahun 2018 sebagai cadangan standard dalam RFC 8446 . Ia menawarkan peningkatan keselamatan dan prestasi berbanding pendahulunya.

Panduan ini menerangkan bagaimana untuk membolehkan TLS 1.3 menggunakan pelayan web Nginx pada Debian 9.

Keperluan

  • Versi Nginx 1.13.0atau lebih besar.
  • Versi OpenSSL 1.1.1atau lebih tinggi.
  • Contoh Vultr Cloud Compute (VC2) yang menjalankan Debian 9 x64 (regangan).
  • Nama domain yang sah dan rekod A/ AAAA/ CNAMEDNS yang dikonfigurasi dengan betul untuk domain anda.
  • Sijil TLS yang sah. Kami akan mendapat satu daripada Let's Encrypt.

Sebelum awak bermula

Semak versi Debian.

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

Pastikan sistem anda terkini.

apt update && apt upgrade -y

Pasang pakej yang diperlukan.

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

Buat akaun pengguna bukan root baru dengan sudoakses dan beralih kepadanya.

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

CATATAN: Ganti johndoedengan nama pengguna anda.

Sediakan zon waktu.

sudo dpkg-reconfigure tzdata

Pasang klien Acme.sh dan dapatkan sijil TLS dari Let's Encrypt

Muat turun dan pasang 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

Semak versi.

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

Dapatkan sijil 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

NOTA: Gantikan example.comdengan nama domain anda.

Selepas menjalankan arahan sebelumnya, sijil dan kunci anda boleh diakses di lokasi berikut:

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

Bangun Nginx dari Sumber

Nginx menambah sokongan untuk TLS 1.3 dalam versi 1.13.0. Pada sebilangan besar pengedaran Linux, termasuk Debian 9, Nginx dibina dengan versi OpenSSL yang lebih lama, yang tidak menyokong TLS 1.3. Oleh itu, kami memerlukan pembentukan Nginx kami sendiri yang dikaitkan dengan pembebasan OpenSSL 1.1.1, yang termasuk sokongan untuk TLS 1.3.

Muat turun versi utama kod sumber Nginx terkini dan keluarkannya.

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

Muat turun kod sumber OpenSSL 1.1.1c dan keluarkannya.

# 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

Padamkan semua .tar.gzfail, kerana tidak diperlukan lagi.

rm -rf *.tar.gz

Masukkan direktori sumber Nginx.

cd ~/nginx-1.17.0

Konfigurasikan, susun, dan pasang Nginx. Untuk kesederhanaan, kami akan menyusun hanya modul penting yang diperlukan untuk TLS 1.3 untuk berfungsi. Jika anda memerlukan membina Nginx penuh, anda boleh membaca panduan Vultr ini mengenai 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 kumpulan dan pengguna sistem Nginx.

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

Symlink /usr/lib/nginx/moduleskepada /etc/nginx/modules. Yang terakhir adalah tempat standard untuk modul Nginx.

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

Buat direktori cache Nginx dan tetapkan kebenaran yang betul.

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/*

Semak 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 fail unit sistem Nginx.

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

Tandakan fail 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

Mulakan 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 tambah dua arahan berikut pada akhir fail, sebelum penutupan }.

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

Simpan fail dan keluar dengan :+ W+ Q.

Konfigurasikan Nginx untuk TLS 1.3

Setelah berjaya membina Nginx, kami siap mengkonfigurasinya untuk mula menggunakan TLS 1.3 di pelayan kami.

Jalankan sudo vim /etc/nginx/conf.d/example.com.confdan isi fail 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 fail dan keluar dengan :+ W+ Q.

Perhatikan TLSv1.3parameter ssl_protocolsarahan baru. Parameter ini diperlukan untuk mengaktifkan TLS 1.3.

Periksa konfigurasi.

sudo nginx -t

Muat semula Nginx.

sudo systemctl reload nginx.service

Untuk mengesahkan TLS 1.3, anda boleh menggunakan alat penyemak imbas atau perkhidmatan Lab SSL. Petikan di bawah menunjukkan tab keselamatan Chrome yang menunjukkan bahawa TLS 1.3 berfungsi.

Bagaimana Membolehkan TLS 1.3 di Nginx di Debian 9

Bagaimana Membolehkan TLS 1.3 di Nginx di Debian 9

Tahniah! Anda berjaya mengaktifkan TLS 1.3 pada pelayan Debian 9 anda.



Leave a Comment

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

6 Perkara Yang Sangat Menggila Tentang Nintendo Switch

6 Perkara Yang Sangat Menggila Tentang Nintendo Switch

Ramai daripada anda tahu Switch akan keluar pada Mac 2017 dan ciri baharunya. Bagi yang tidak tahu, kami telah menyediakan senarai ciri yang menjadikan 'Tukar' sebagai 'gajet yang mesti ada'.

Janji Teknologi Yang Masih Tidak Ditepati

Janji Teknologi Yang Masih Tidak Ditepati

Adakah anda menunggu gergasi teknologi memenuhi janji mereka? semak apa yang masih belum dihantar.

Fungsi Lapisan Seni Bina Rujukan Data Besar

Fungsi Lapisan Seni Bina Rujukan Data Besar

Baca blog untuk mengetahui lapisan berbeza dalam Seni Bina Data Besar dan fungsinya dengan cara yang paling mudah.

Bagaimana AI Boleh Mengambil Automasi Proses ke Tahap Seterusnya?

Bagaimana AI Boleh Mengambil Automasi Proses ke Tahap Seterusnya?

Baca ini untuk mengetahui cara Kecerdasan Buatan semakin popular di kalangan syarikat berskala kecil dan cara ia meningkatkan kebarangkalian untuk menjadikan mereka berkembang dan memberikan pesaing mereka kelebihan.

CAPTCHA: Berapa Lama Ia Boleh Kekal Sebagai Teknik Berdaya maju Untuk Perbezaan Manusia-AI?

CAPTCHA: Berapa Lama Ia Boleh Kekal Sebagai Teknik Berdaya maju Untuk Perbezaan Manusia-AI?

CAPTCHA telah menjadi agak sukar untuk diselesaikan oleh pengguna dalam beberapa tahun kebelakangan ini. Adakah ia dapat kekal berkesan dalam pengesanan spam dan bot pada masa hadapan?

Keunikan Teknologi: Masa Depan Tamadun Manusia yang Jauh?

Keunikan Teknologi: Masa Depan Tamadun Manusia yang Jauh?

Apabila Sains Berkembang pada kadar yang pantas, mengambil alih banyak usaha kita, risiko untuk menundukkan diri kita kepada Ketunggalan yang tidak dapat dijelaskan juga meningkat. Baca, apakah makna ketunggalan bagi kita.

Teleperubatan Dan Penjagaan Kesihatan Jauh: Masa Depan Ada Di Sini

Teleperubatan Dan Penjagaan Kesihatan Jauh: Masa Depan Ada Di Sini

Apakah teleperubatan, penjagaan kesihatan jauh dan impaknya kepada generasi akan datang? Adakah ia tempat yang baik atau tidak dalam situasi pandemik? Baca blog untuk mencari paparan!

Pernahkah Anda Terfikir Bagaimana Penggodam Mendapatkan Wang?

Pernahkah Anda Terfikir Bagaimana Penggodam Mendapatkan Wang?

Anda mungkin pernah mendengar bahawa penggodam memperoleh banyak wang, tetapi pernahkah anda terfikir bagaimana mereka memperoleh wang seperti itu? Mari berbincang.

Kemas Kini Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Isu Daripada Penyelesaian

Kemas Kini Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Isu Daripada Penyelesaian

Baru-baru ini Apple mengeluarkan macOS Catalina 10.15.4 kemas kini tambahan untuk menyelesaikan masalah tetapi nampaknya kemas kini itu menyebabkan lebih banyak masalah yang membawa kepada pemusnahan mesin mac. Baca artikel ini untuk mengetahui lebih lanjut