Android

Selamat nginx dengan mari menyulitkan pada debian 10 linux

Веб-сервер на Ubuntu с нуля: nginx, HTTP/2, brotli и HTTPS

Веб-сервер на Ubuntu с нуля: nginx, HTTP/2, brotli и HTTPS

Isi kandungan:

Anonim

Let's Encrypt adalah pihak berkuasa perakuan percuma, automatik dan terbuka yang dibangunkan oleh Kumpulan Penyelidikan Keamanan Internet (ISRG) yang menyediakan sijil SSL percuma.

Sijil yang dikeluarkan oleh Let's Encrypt dipercayai oleh semua pelayar utama dan sah selama 90 hari dari tarikh terbitan.

Tutorial ini menunjukkan cara memasang secara percuma Mari Sahkan sijil SSL pada Debian 10, Buster menjalankan Nginx sebagai pelayan web. Kami juga akan menunjukkan bagaimana untuk mengkonfigurasi Nginx untuk menggunakan sijil SSL dan membolehkan HTTP / 2.

Prasyarat

Memastikan prasyarat yang berikut dipenuhi sebelum meneruskan dengan panduan ini:

  • Log masuk sebagai root atau pengguna dengan hak istimewa sudo. Domain yang Anda inginkan untuk mendapatkan sertifikat SSL harus menunjuk ke IP server publik Anda. Kami akan menggunakan example.com .Nginx dipasang.

Memasang Certbot

Kami akan menggunakan alat certbot untuk mendapatkan dan memperbaharui sijil.

Certbot adalah alat yang digunakan sepenuhnya dan mudah digunakan yang mengautomasikan tugas-tugas untuk mendapatkan dan memperbaharui Sijil Sijil SSL dan mengkonfigurasi pelayan web untuk menggunakan sijil.

Pakej certbot dimasukkan dalam repositori Debian lalai. Jalankan perintah berikut untuk memasang certbot:

sudo apt update sudo apt install certbot

Menjana Kumpulan Dh (Diffie-Hellman)

Pertukaran utama Diffie-Hellman (DH) adalah satu kaedah yang selamat bertukar kunci kriptografi ke atas saluran komunikasi yang tidak bercagar.

Kami akan menghasilkan satu set baru 2048 bit DH parameter untuk mengukuhkan keselamatan:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Anda juga boleh menukar saiz sehingga 4096 bit, tetapi generasi mungkin mengambil masa lebih dari 30 minit bergantung kepada entropi sistem.

Mendapatkan Sijil Encik Sijil SSL

Untuk mendapatkan sijil SSL untuk domain, kami akan menggunakan plugin Webroot. Ia berfungsi dengan membuat fail sementara untuk mengesahkan domain yang diminta dalam direktori ${webroot-path}/.well-known/acme-challenge . Server Let's Encrypt membuat permintaan HTTP ke fail sementara untuk mengesahkan bahawa domain yang diminta menyelesaikan ke pelayan di mana sertbot berjalan.

Kami akan memetakan semua permintaan HTTP untuk .well-known/acme-challenge ke direktori tunggal, /var/lib/letsencrypt .

Jalankan perintah berikut untuk membuat direktori dan tuliskannya untuk pelayan Nginx:

mkdir -p /var/lib/letsencrypt/.well-known chgrp www-data /var/lib/letsencrypt chmod g+s /var/lib/letsencrypt

Untuk mengelakkan kod duplikat, kami akan membuat dua coretan yang akan dimasukkan ke dalam semua fail blok pelayan Nginx.

Buka editor teks anda dan buat coretan pertama, letsencrypt.conf :

sudo nano /etc/nginx/snippets/letsencrypt.conf /etc/nginx/snippets/letsencrypt.conf

location ^~ /.well-known/acme-challenge/ { allow all; root /var/lib/letsencrypt/; default_type "text/plain"; try_files $uri =404; }

ssl.conf coretan kedua termasuk chippers yang dicadangkan oleh Mozilla, membolehkan Pengapungan OCSP, HTTP Strict Transport Security (HSTS), dan menguatkan beberapa tajuk HTTP yang fokus pada keselamatan.

sudo nano /etc/nginx/snippets/ssl.conf /etc/nginx/snippets/ssl.conf

ssl_dhparam /etc/ssl/certs/dhparam.pem; ssl_session_timeout 1d; ssl_session_cache shared:SSL:50m; ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers off; ssl_stapling on; ssl_stapling_verify on; resolver 8.8.8.8 8.8.4.4 valid=300s; resolver_timeout 30s; add_header Strict-Transport-Security "max-age=63072000" always; add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff;

Sebaik sahaja selesai, buka fail blok pelayan domain dan sertakan snippet letsencrypt.conf seperti yang ditunjukkan di bawah:

sudo nano /etc/nginx/sites-available/example.com /etc/nginx/sites-available/example.com

server { listen 80; server_name example.com www.example.com; include snippets/letsencrypt.conf; }

Buat pautan simbolik ke direktori sites-enabled untuk membolehkan blok pelayan domain:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

Mulakan semula perkhidmatan Nginx untuk melaksanakan perubahan:

sudo systemctl restart nginx

Anda kini bersedia untuk mendapatkan fail sijil SSL dengan menjalankan arahan berikut:

sudo certbot certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/ -d example.com -d www.example.com

Jika sijil SSL berjaya diperoleh, mesej berikut akan dicetak pada terminal anda:

IMPORTANT NOTES: IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/example.com/privkey.pem Your cert will expire on 2020-02-22. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF:

Edit blok pelayan domain dan masukkan fail sijil SSL seperti berikut:

sudo nano /etc/nginx/sites-available/example.com /etc/nginx/sites-available/example.com

server { listen 80; server_name www.example.com example.com; include snippets/letsencrypt.conf; return 301 https://$host$request_uri; } server { listen 443 ssl http2; server_name www.example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; include snippets/ssl.conf; include snippets/letsencrypt.conf; return 301 https://example.com$request_uri; } server { listen 443 ssl http2; server_name example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; include snippets/ssl.conf; include snippets/letsencrypt.conf; #… other code }

Konfigurasi di atas memberitahu Nginx untuk mengarahkan semula dari HTTP ke HTTPS dan dari www ke versi bukan-www.

Mulakan semula atau tambah semula perkhidmatan Nginx untuk melaksanakannya:

sudo systemctl restart nginx

Buka laman web anda menggunakan https:// , dan anda akan melihat ikon kunci hijau.

Pembaharuan Auto Mari Sahkan sijil SSL

Mari sifatkan sijil sah selama 90 hari. Untuk memperbaharui sijil secara automatik sebelum mereka tamat tempoh, pakej certbot mewujudkan cronjob yang berjalan dua kali sehari dan secara automatik memperbaharui sijil 30 hari sebelum tamat tempohnya.

Apabila pembaharuan perkhidmatan nginx mesti dimuat semula untuk pelayan memuatkan sijil. --renew-hook "systemctl reload nginx" ke fail /etc/cron.d/certbot supaya kelihatan seperti ini:

sudo nano /etc/cron.d/certbot /etc/cron.d/certbot

0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot -q renew --renew-hook "systemctl reload nginx"

Uji proses pembaharuan automatik, dengan menjalankan arahan ini:

sudo certbot renew --dry-run

Sekiranya tiada kesilapan, ia bermakna proses pembaharuan berjaya.

Kesimpulannya

Mempunyai sijil SSL adalah suatu kemestian pada masa kini. Ia menjamin laman web anda, meningkatkan kedudukan kedudukan SERP, dan membolehkan anda mengaktifkan HTTP / 2 pada pelayan web anda.

Dalam tutorial ini, kami telah menunjukkan kepada anda bagaimana untuk menghasilkan dan memperbaharui sijil SSL menggunakan skrip certbot. Kami juga telah menunjukkan kepada anda cara mengkonfigurasi Nginx untuk menggunakan sijil.

Untuk mengetahui lebih lanjut mengenai Certbot, lawati dokumentasi Certbot.

nginx debian let's encrypt certbot ssl