Веб-сервер на Ubuntu с нуля: nginx, HTTP/2, brotli и HTTPS
Isi kandungan:
- Prasyarat
- Memasang Certbot
- Menjana Kumpulan Dh (Diffie-Hellman)
- Mendapatkan Sijil Encik Sijil SSL
- Pembaharuan Auto Mari Sahkan sijil SSL
- Kesimpulannya
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 sslSelamat nginx dengan mari menyulitkan pada centos 7
Dalam tutorial ini, kami akan memberikan arahan langkah demi langkah tentang bagaimana untuk memastikan Nginx anda dengan Let's Encrypt menggunakan alat certbot pada CentOS 7
Selamat menginx dengan mari menyulitkan pada debian 9
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.
Selamat nginx dengan mari menyulitkan pada ubuntu 18.04
Let's Encrypt adalah kuasa sijil yang bebas dan terbuka yang dibangunkan oleh Kumpulan Penyelidikan Keamanan Internet. Dalam tutorial ini, kami akan memberikan arahan langkah demi langkah tentang bagaimana untuk memastikan Nginx anda dengan Let's Encrypt menggunakan alat certbot di Ubuntu 18.04







