Android

Selamat nginx dengan mari menyulitkan pada centos 7

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

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

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 memberikan arahan langkah demi langkah tentang bagaimana untuk memastikan Nginx anda dengan Let's Encrypt menggunakan alat certbot pada CentOS 7.

Prasyarat

Pastikan anda telah memenuhi prasyarat berikut sebelum meneruskan dengan tutorial ini:

  • Anda mempunyai nama domain yang menunjuk ke IP pelayan awam anda. Dalam tutorial ini, kami akan menggunakan example.com . Anda telah membolehkan repositori EPEL dan memasang Nginx dengan mengikuti Cara Pasang Nginx pada CentOS 7.

Pasang Certbot

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

Untuk memasang borang pakej certbot, repositori EPEL berjalan:

sudo yum 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.

Menjana satu set baru 2048 bit DH parameter dengan menaip perintah berikut:

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.

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 coretan berikut yang akan kami sertakan dalam semua fail blok pelayan Nginx kami:

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

Coretan di atas termasuk chippers yang disyorkan oleh Mozilla, membolehkan Pengapungan OCSP, HTTP Strict Transport Security (HSTS) dan menguatkan beberapa tajuk utama HTTP yang berfokus pada keselamatan.

Setelah coretan dibuat, buka blok pelayan domain dan sertakan snippet letsencrypt.conf seperti ditunjukkan di bawah:

/etc/nginx/conf.d/example.com.conf

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

Anda kini boleh menjalankan Certbot dengan plugin webroot dan mendapatkan fail sijil SSL untuk domain anda 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 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 2018-06-11. 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:

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

Pembaharuan Auto Mari Sahkan sijil SSL

Mari sifatkan sijil sah selama 90 hari. Untuk memperbaharui sijil secara automatik sebelum tamat tempoh, kami akan membuat cronjob yang akan berjalan dua kali sehari dan secara automatik memperbaharui sijil 30 hari sebelum tamat tempohnya.

Jalankan arahan crontab untuk membuat cronjob baru:

sudo crontab -e

Tampal baris berikut:

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"

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, anda menggunakan pelanggan Encrypt Let, certbot untuk memuat turun 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 centos mari kita menyulitkan certbot ssl

Siaran ini adalah sebahagian daripada Stail LEMP Install pada siri CentOS 7.

Jawatan lain dalam siri ini:

• Cara Pasang Nginx pada CentOS 7 • Selamat Nginx dengan Let's Encrypt pada CentOS 7 • Pasang MariaDB pada CentOS 7 • Pasang PHP 7 pada CentOS 7 • Cara Menyediakan Blok Server Nginx pada CentOS 7