Веб-сервер на Ubuntu с нуля: nginx, HTTP/2, brotli и HTTPS
Isi kandungan:
- Prasyarat
- Memasang Certbot
- Membangkitkan Kumpulan Strong 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.
Dalam tutorial ini, kami akan memberikan arahan langkah demi langkah tentang cara memasang secara percuma Mari Sijikan sijil SSL pada CentOS 8 yang menjalankan Nginx sebagai pelayan web. Kami juga akan menunjukkan bagaimana untuk mengkonfigurasi Nginx untuk menggunakan sijil SSL dan membolehkan HTTP / 2.
Prasyarat
Sebelum anda meneruskan, pastikan bahawa anda telah memenuhi prasyarat berikut:
- Anda mempunyai nama domain yang menunjuk ke IP awam anda. Kami akan menggunakan
example.com. Anda mempunyai Nginx dipasang pada pelayan CentOS anda. Firewall anda dikonfigurasikan untuk menerima sambungan pada port 80 dan 443.
Memasang Certbot
Certbot adalah alat baris arahan percuma yang memudahkan proses mendapatkan dan memperbaharui Sijil Sijil SSL dari HTTPS dan mengaktifkan HTTPS pada pelayan anda.
Pakej certbot tidak termasuk dalam repositori CentOS 8 standard, tetapi ia boleh dimuat turun dari laman web vendor.
Jalankan perintah
wget
berikut sebagai root atau sudo pengguna untuk memuat turun script certbot ke direktori
/usr/local/bin
:
sudo wget -P /usr/local/bin
Sebaik sahaja muat turun selesai, buat fail boleh laku:
sudo chmod +x /usr/local/bin/certbot-auto
Membangkitkan Kumpulan Strong Dh (Diffie-Hellman)
Pertukaran utama Diffie-Hellman (DH) adalah satu kaedah yang selamat bertukar kunci kriptografi ke atas saluran komunikasi yang tidak bercagar.
Menjana satu set baru 2048 bit DH parameter dengan menaip perintah berikut:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Mendapatkan Sijil Encik Sijil SSL
Untuk mendapatkan sijil SSL untuk domain, 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.
Untuk menjadikannya lebih mudah, kami akan memetakan semua permintaan HTTP untuk
.well-known/acme-challenge
kepada direktori tunggal,
/var/lib/letsencrypt
.
Perintah berikut akan mencipta direktori dan menjadikannya dapat ditulis untuk pelayan Nginx.
sudo mkdir -p /var/lib/letsencrypt/.well-known
sudo chgrp nginx /var/lib/letsencrypt
sudo chmod g+s /var/lib/letsencrypt
Untuk mengelakkan kod duplikasi, buat dua potongan berikut yang akan dimasukkan ke dalam semua fail blok pelayan Nginx:
sudo mkdir /etc/nginx/snippets
/etc/nginx/snippets/letsencrypt.conf
location ^~ /.well-known/acme-challenge/ { allow all; root /var/lib/letsencrypt/; default_type "text/plain"; try_files $uri =404; }
/etc/nginx/snippets/ssl.conf
ssl_dhparam /etc/ssl/certs/dhparam.pem; ssl_session_timeout 1d; ssl_session_cache shared:SSL:10m; 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;
Coretan di atas termasuk chippers yang dicadangkan oleh Mozilla, membolehkan Pengapungan OCSP, HTTP Strict Transport Security (HSTS), dan menguatkan beberapa tajuk HTTP yang berfokus pada keselamatan.
Setelah coretan dibuat, buka blok pelayan domain dan sertakan snippet
letsencrypt.conf
, seperti ditunjukkan di bawah:
server { listen 80; server_name example.com www.example.com; include snippets/letsencrypt.conf; }
Muat semula konfigurasi Nginx untuk perubahan yang akan dilaksanakan:
sudo systemctl reload nginx
Jalankan alat certbot dengan plugin webroot untuk mendapatkan fail sijil SSL untuk domain anda:
sudo /usr/local/bin/certbot-auto certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/ -d example.com -d www.example.com
Jika ini kali pertama anda memohon
certbot
, alat tersebut akan memasang dependencies yang hilang.
Apabila sijil SSL berjaya diperolehi, certbot akan mencetak mesej berikut:
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-03-12. To obtain a new or tweaked version of this certificate in the future, simply run certbot-auto again. To non-interactively renew *all* of your certificates, run "certbot-auto renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF:
Sekarang bahawa anda mempunyai fail sijil, anda boleh mengedit blok pelayan domain anda seperti berikut:
/etc/nginx/conf.d/example.com.conf
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 mengarahkan www ke versi bukan www.
Akhir sekali, tambah semula perkhidmatan Nginx untuk perubahan yang berlaku:
sudo systemctl reload nginx
Sekarang, 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 tamat tempoh, buat cronjob yang akan dijalankan dua kali sehari dan secara automatik memperbaharui sijil 30 hari sebelum tamat tempoh.
Gunakan arahan
crontab
untuk membuat cronjob baru:
sudo crontab -e
Tampal baris berikut:
0 */12 * * * root test -x /usr/local/bin/certbot-auto -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && /usr/local/bin/certbot-auto -q renew --renew-hook "systemctl reload nginx"
Simpan dan tutup fail.
Untuk menguji proses pembaharuan, anda boleh menggunakan arahan certbot yang diikuti oleh suis - suis kering:
sudo certbot renew --dry-run
Sekiranya tidak ada kesilapan, ia bermakna proses pembaharuan ujian berjaya.
Kesimpulannya
Dalam tutorial ini, kami telah menunjukkan kepada anda cara menggunakan klien Encrypt Let, certbot untuk memuat turun sijil SSL untuk domain anda. Kami juga telah membuat potongan Nginx untuk mengelakkan kod pendua dan dikonfigurasi Nginx untuk menggunakan sijil. Pada akhir tutorial, kami telah menyediakan cronjob untuk pembaharuan sijil automatik.
Untuk mengetahui lebih lanjut mengenai Certbot, lawati halaman dokumentasi mereka.
nginx centos mari kita menyulitkan 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 menginx dengan mari menyulitkan pada ubuntu 16.04
Dalam tutorial ini, kami akan memberikan arahan langkah demi langkah tentang cara untuk mengamankan Nginx anda dengan Let's Encrypt menggunakan alat certbot di Ubuntu 16.04







