Android

Selamat menginx dengan mari menyulitkan pada debian 9

Vidio tutorial nginx

Vidio tutorial nginx

Isi kandungan:

Anonim

Let's Encrypt adalah pihak berkuasa sijil yang bebas dan terbuka yang dibangunkan oleh Kumpulan Penyelidikan Keamanan Internet (ISRG). Sijil yang dikeluarkan oleh Let's Encrypt dipercayai oleh hampir semua pelayar hari ini.

Dalam tutorial ini, kami akan menerangkan cara menggunakan alat Certbot untuk mendapatkan sijil SSL percuma untuk Nginx di Debian 9. Kami juga akan menunjukkan cara mengkonfigurasi Nginx untuk menggunakan sijil SSL dan mengaktifkan HTTP / 2.

Prasyarat

Pastikan prasyarat berikut dipenuhi sebelum meneruskan dengan tutorial ini:

  • Log masuk sebagai pengguna dengan keistimewaan sudo.Memiliki nama domain yang menunjuk ke IP pelayan awam anda. Kami akan menggunakan example.com Berikan Nginx dipasang dengan mengikuti arahan ini. Anda mempunyai blok pelayan untuk domain anda. Anda boleh mengikuti arahan ini untuk mendapatkan butiran mengenai cara membuatnya.

Pasang Certbot

Certbot adalah alat lengkap dan mudah digunakan yang boleh mengautomasikan tugas-tugas untuk mendapatkan dan memperbaharui Sijil Sijil SSL dan mengkonfigurasi pelayan web untuk menggunakan sijil. Pakej certbot dimasukkan dalam repositori Debian lalai.

Kemas kini senarai pakej dan pasang pakej certbot:

sudo apt update sudo apt install certbot

Menjana Kumpulan Dh (Diffie-Hellman) yang kuat

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 Jika anda menyukai anda, anda boleh menukar saiz sehingga 4096 bit, tetapi dalam kes itu, generasi mungkin mengambil masa lebih daripada 30 minit bergantung kepada sistem entropi.

Mendapatkan Sijil Encik Sijil SSL

Untuk mendapatkan sijil SSL untuk domain kami, kami akan menggunakan plugin Webroot yang 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 .

Perintah berikut akan mencipta direktori dan menjadikannya dapat ditulis 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 duplikasi buat dua coretan berikut yang akan dimasukkan dalam semua fail blok pelayan Nginx kami.

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

Buat ssl.conf coretan kedua yang termasuk chippers yang dicadangkan oleh Mozilla, membolehkan Pengapungan OCSP, HTTP Strict Transport Security (HSTS), dan menguatkan beberapa tajuk HTTP yang fokus kepada 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 TLSv1.1 TLSv1.2; ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS'; ssl_prefer_server_ciphers on; 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=15768000; includeSubdomains; preload"; 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; }

Dayakan blok pelayan baru dengan membuat pautan simbolik ke direktori sites-enabled :

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 boleh menjalankan Certbot dengan plugin webroot dan mendapatkan fail sijil SSL dengan mengeluarkan:

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: - 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 2018-07-28. 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" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF:

Seterusnya, edit blok pelayan domain 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 }

Dengan konfigurasi di atas, kami memaksa HTTPS dan mengalihkan dari www ke versi bukan-www.

Muat semula perkhidmatan Nginx untuk melaksanakan perubahan:

sudo systemctl reload nginx

Pembaharuan Auto Mari Sahkan sijil SSL

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

Oleh kerana kami menggunakan pensijilan webroot certbot sebaik sahaja sijil diperbaharui, kami juga perlu memuat semula perkhidmatan nginx. --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, anda menggunakan klien Encrypt Let, certbot untuk menghasilkan sijil SSL untuk domain anda. Anda juga telah membuat potongan Nginx untuk mengelakkan pendua kod dan dikonfigurasi Nginx untuk menggunakan sijil. Pada akhir tutorial, anda telah menyediakan cronjob untuk pembaharuan sijil automatik.

nginx debian let's encrypt certbot ssl

Siaran ini adalah sebahagian daripada Cara Pasang LEMP Stack pada siri Debian 9.

Jawatan lain dalam siri ini:

• Cara Pasang MariaDB pada Ubuntu 18.04 • Cara Pasang Nginx pada Debian 9 • Bagaimana Memasang PHP pada Debian 9 • Bagaimana Untuk Menyediakan Blok Server Nginx pada Debian 9 • Selamat Nginx dengan Let's Encrypt pada Debian 9