Cara menjamin nginx dengan ssl dan mari enkripsi dalam freebsd

Cara menjamin nginx dengan ssl dan mari enkripsi dalam freebsd

Dalam panduan ini kita akan membincangkan cara menjamin Nginx pelayan web di FreeBSD dengan TLS/SSL sijil yang ditawarkan oleh oleh Mari enkripsi Pihak Berkuasa Sijil. Kami juga akan menunjukkan kepada anda bagaimana untuk memperbaharui sijil penyulitan secara automatik sebelum tarikh yang tamat tempoh.

TLS, akronim untuk Keselamatan lapisan pengangkutan, adalah protokol yang berjalan di bawah Http protokol dan menggunakan sijil dan kunci untuk merangkum paket dan menyulitkan data yang ditukar antara pelayan dan klien, atau dalam kes ini antara Nginx Pelayar Web dan Pelayar Pelanggan, untuk menjamin sambungan, supaya pihak ketiga, yang mungkin memintas lalu lintas, tidak dapat menyahsulit penghantaran.

Baca juga: Pasang mari enkripsi untuk Apache di FreeBSD

Proses mendapatkan percuma Mari enkripsi sijil dalam FreeBSD boleh dipermudahkan dengan memasang certboot Utiliti Pelanggan, yang merupakan pelanggan Let's Encrypt yang digunakan untuk menjana dan memuat turun sijil.

Keperluan

  1. Pasang tumpukan FBEMP (Nginx, MariaDB dan PHP) di FreeBSD

Langkah 1: Konfigurasikan Nginx TLS/SSL

1. Secara lalai, TLS/SSL Konfigurasi pelayan tidak didayakan di FreeBSD kerana ia TLS Penyataan blok pelayan dikomentari dalam Nginx fail konfigurasi lalai.

Untuk mengaktifkan TLS pelayan di Nginx, buka nginx.Conf fail konfigurasi, cari garis yang mentakrifkan permulaan SSL pelayan dan kemas kini seluruh blok untuk kelihatan seperti dalam sampel di bawah.

# nano/usr/local/etc/nginx/nginx.Conf 

Nginx HTTPS Blok Petikan:

Konfigurasi HTTPS Nginx
pelayan mendengar 443 ssl default_server; nama pelayan www.Yourdomain.com; akses_log/var/log/nginx/akses.log; error_log/var/log/nginx/ralat.log; error_page 500 502 503 504 /50x.html; Lokasi = /50x.html root/usr/local/www/nginx-dist;  lokasi/root/usr/local/www/nginx; Indeks indeks.Indeks HTML.htm; try_files $ uri $ uri / / indeks.php?$ args;  ssl_certificate "/usr/local/etc/letsencrypt/live/www.Yourdomain.com/cert.pem "; ssl_certificate_key"/usr/local/etc/letsencrypt/live/www.Yourdomain.com/Privkey.PEM "; SSL_PROTOCOLS TLSV1 TLSV1.1 TLSV1.2; ssl_dhparam/usr/local/etc/nginx/dhparam.PEM; ssl_session_cache dikongsi: ssl: 1m; ssl_session_timeout 10m; ssl_ciphers tinggi:!Anull:!MD5; SSL_PREFER_SERVER_CIPHERS ON; # Gunakan gzip gzip gzip pada; gzip_disable "msie6"; gzip_vary on; gzip_proxied mana -mana; gzip_comp_level 5; gzip_buffers 16 8k; gzip_http_version 1.0; # Tetapkan pemboleh ubah untuk bekerja di sekitar kekurangan syarat bersarang yang ditetapkan $ cache_uri $ request_uri; Lokasi ~ /.terkenal membenarkan semua;  lokasi ~ \.php $ root/usr/local/www/nginx; fastcgi_pass 127.0.0.1: 9000; indeks fastcgi_index.PHP; #fastcgi_param script_filename /scripts $ fastcgi_script_name; fastcgi_param script_filename $ request_filename; termasuk fastcgi_params;  

Blok di atas, sebagai tambahan kepada SSL blok, juga mengandungi beberapa kenyataan untuk membolehkan pemampatan gzip dan Pengurus Proses Fastcgi, digunakan untuk lulus kod php ke PHP-FPM pintu masuk untuk menjalankan aplikasi web dinamik.

Setelah anda menambah kod di atas ke Nginx fail konfigurasi utama, jangan mulakan semula daemon atau gunakan tetapan sebelum memasang dan mendapatkan Mari enkripsi sijil untuk domain anda.

Langkah 2: Pasang pelanggan Certbot di FreeBSD

2. Proses memasang mari kita enkripsi Certbot Utiliti Pelanggan di FreeBSD melibatkan memuat turun kod sumber untuk py-certbot dan menyusunnya secara tempatan, dengan mengeluarkan arahan di bawah.

# cd/usr/port/keselamatan/py-certbot # buat pemasangan bersih 

3. Menyusun py-certbot Utiliti memerlukan banyak masa untuk membandingkan dengan memasang pakej binari biasa. Pada masa ini, satu siri kebergantungan dikehendaki dimuat turun secara tempatan di FreeBSD.

Juga, satu siri arahan akan muncul di skrin anda, menuntut anda untuk memilih pakej apa yang akan digunakan pada masa kompilasi untuk setiap kebergantungan. Di skrin pertama, pilih alat berikut, dengan menekan [Ruang] kunci, untuk menyusun Python27 Ketergantungan, seperti yang digambarkan dalam gambar di bawah.

  • IPv6
  • Libffi
  • NLS
  • Pymalloc
  • Benang
  • UCS4 untuk sokongan unicode
Dayakan UCS4 untuk Unicode

4. Seterusnya, pilih Dokumen dan Benang untuk GetText-Tools ketergantungan dan tekan okey Untuk meneruskan seperti yang ditunjukkan dalam gambar di bawah.

Pasang dokumentasi

5. Di skrin seterusnya meninggalkan Ujian pilihan dilumpuhkan untuk libffi-3.2.1 dan tekan okey untuk bergerak lebih jauh.

Lumpuhkan ujian untuk libffi

6. Seterusnya, tekan ruang untuk memilih Dokumen untuk PY27-ENUM34 ketergantungan, yang akan memasang dokumentasi untuk alat ini, dan tekan okey Untuk meneruskan, seperti yang digambarkan dalam tangkapan skrin di bawah.

Pasang dokumentasi untuk PY27

7. Akhirnya, pilih untuk memasang contoh contoh untuk py27-openssl ketergantungan dengan menekan [Ruang] Kunci dan tekan okey untuk menyelesaikan proses penyusunan dan pemasangan untuk py-certbot pelanggan.

Pasang PY27 OpenSSL

8. Selepas proses menyusun dan memasang py-certbot Utiliti selesai, jalankan arahan di bawah untuk menaik taraf alat pada versi terkini pakej seperti yang digambarkan dalam tangkapan skrin di bawah.

# PKG Pasang PY27-CertBot 
Menaik taraf Alat Py-Certbot

9. Untuk mengelakkan beberapa isu yang mungkin berlaku semasa mendapatkan percuma Mari enkripsi sijil, kesilapan yang paling biasa ialah "pkg_resources.DistribusiNotFound", Pastikan dua kebergantungan berikut juga terdapat dalam sistem anda: PY27-SALT dan PY27-ACME.

# PKG Pasang PY27-SALT # PKG Pasang PY27-ACME 

Langkah 3: Pasang Let's Encrypt Sijil untuk Nginx di FreeBSD

10. Untuk mendapatkan sijil mandiri Let's Encrypt untuk domain anda, jalankan arahan berikut dan berikan nama domain dan semua subdomain yang anda ingin mendapatkan sijil dengan menyiratkan -d bendera.

# certbot certonly -standalone -d Yourdomain.com -d www.Yourdomain.com 
Pasang membolehkan enkripsi untuk nginx

11. Semasa menjana sijil, anda akan diminta untuk memasukkan alamat e -mel anda dan bersetuju dengan istilah perkhidmatan yang menyulitkan. Jenis a dari papan kekunci untuk bersetuju dan teruskan dan anda juga akan ditanya sama ada anda bersedia berkongsi alamat e -mel anda dengan Let's Enrypt Partners.

Sekiranya anda tidak mahu berkongsi alamat e -mel anda, taipkan sahaja tidak perkataan dalam prompt dan tekan [Masukkan] kunci untuk meneruskan. Selepas sijil untuk domain anda telah berjaya diperoleh, anda akan menerima beberapa nota penting yang akan memaklumkan kepada anda di mana sijil disimpan dalam sistem anda dan ketika mereka tamat.

Membolehkan menyulitkan ringkasan

12. Sekiranya anda ingin mendapatkan sijil Let's Encrypt menggunakan "Webroot"Plugin dengan menambahkan Webroot Direktori pelayan nginx untuk domain anda, mengeluarkan arahan berikut dengan --Webroot dan -w bendera. Secara lalai, jika anda belum menukar laluan webroot nginx, ia harus ditempatkan di /usr/local/www/nginx/ Laluan sistem.

# certbot certonly --webroot -w /usr/local/www/nginx/ -d Yourdomain.com -d www.Yourdomain.com 

Seperti dalam --Strandalone prosedur untuk mendapatkan sijil, --Webroot Prosedur juga akan meminta anda membekalkan alamat e -mel untuk pembaharuan sijil dan notis keselamatan, untuk menekan a untuk bersetuju dengan Let's menyulitkan terma dan syarat dan tidak atau Ya untuk atau tidak berkongsi alamat e -mel Mari enkripsi rakan kongsi seperti yang digambarkan dalam sampel di bawah.

Perlu diketahui bahawa pelanggan certbot dapat mengesan alamat e -mel palsu dan tidak akan membiarkan anda terus menjana sijil sehingga anda membekalkan alamat e -mel yang sebenar.

Contoh CERBOT:
Menyimpan log debug ke/var/log/letsencrypt/letsencrypt.Log masukkan alamat e -mel (digunakan untuk pembaharuan dan notis keselamatan segera) (masukkan 'c' untuk membatalkan):[dilindungi e -mel] #A Alamat e -mel palsu akan dikesan nampaknya ada masalah dengan alamat itu. Masukkan alamat e-mel (digunakan untuk pembaharuan dan notis keselamatan segera) Jika anda benar-benar ingin melangkau ini, anda boleh menjalankan pelanggan dengan-tidak-tidak-tanpa e-mel tetapi pastikan anda kemudian sandarkan kunci akaun anda dari/etc/letsencrypt/ akaun (masukkan 'c' untuk membatalkan): [dilindungi e-mel] ------------------------------------ ------------------------------------------- Sila baca Syarat Perkhidmatan di https: // letsencrypt.org/dokumen/le-sa-v1.1.1-August-1-2016.pdf. Anda mesti bersetuju untuk mendaftar dengan pelayan ACME di https: // acme-v01.API.Letsencrypt.org/direktori ----------------------------------------------- -------------------------------- (a) Gree/(c) Ancel: a ------------------------------------------------------------------------------- Adakah anda bersedia untuk berkongsi alamat e-mel anda dengan Yayasan Frontier Elektronik, rakan kongsi pengasas projek Let's Encrypt dan organisasi bukan keuntungan yang membangunkan CertBot? Kami ingin menghantar e -mel kepada anda mengenai EFF dan kerja kami untuk menyulitkan web, melindungi penggunanya dan mempertahankan hak digital. ------------------------------------------------------------------------------- (Ya tidak: n Mendapatkan sijil baru yang melaksanakan cabaran berikut: Cabaran HTTP-01 untuk www.domain.com menggunakan laluan webroot/usr/local/www/nginx/untuk semua domain yang tidak dapat ditandingi. Menunggu Pengesahan ... Membersihkan Cabaran Nota Penting: - Tahniah! Sijil dan rantaian anda telah disimpan di/usr/local/etc/letsencrypt/live/www.Yourdomain.com/fullchain.PEM. Kurser anda akan tamat pada 2017-12-28. Untuk mendapatkan versi baru atau tweak dari sijil ini pada masa akan datang, hanya jalankan Certbot lagi. Untuk memperbaharui * semua * sijil anda, jalankan "Certbot Renew" - kelayakan akaun anda telah disimpan dalam direktori konfigurasi Certbot anda di/usr/local/etc/letsencrypt. Anda harus membuat sandaran selamat folder ini sekarang. Direktori konfigurasi ini juga akan mengandungi sijil dan kekunci peribadi yang diperolehi oleh Certbot sehingga membuat sandaran tetap folder ini sesuai. - Jika anda suka Certbot, sila pertimbangkan untuk menyokong kerja kami dengan: menderma kepada ISRG/Let's Encrypt: https: // Letsencrypt.org/menderma menderma kepada eff: https: // eff.org/menderma-le

Langkah 4: Kemas kini sijil TLS Nginx

13. Lokasi yang diperoleh Let's menyulitkan sijil dan kekunci dalam FreeBSD adalah /usr/local/etc/letsencrypt/live/www.Yourdomain.com/ Laluan sistem. Isu LS Command untuk memaparkan komponen sijil Let's Encrypt anda: fail rantai, fail fullchain, kunci peribadi dan fail sijil, seperti yang digambarkan dalam contoh berikut.

# ls/usr/local/etc/letsencrypt/live/www.Yourdomain.com/ 
Senarai membolehkan menyulitkan domain SSL-Keys

14. Untuk memasang Sijil Let's Encrypt untuk domain anda di pelayan web nginx, buka fail konfigurasi utama nginx atau fail konfigurasi untuk pelayan TLS nginx, sekiranya ia adalah fail yang berasingan, dan ubah suai baris di bawah untuk mencerminkan jalan sijil yang dikeluarkan oleh Let's Encrypt yang dikeluarkan. seperti yang digambarkan di bawah.

# nano/usr/local/etc/nginx/nginx.Conf 

Kemas kini baris berikut untuk kelihatan seperti dalam sampel ini:

ssl_certificate "/usr/local/etc/letsencrypt/live/www.Yourdomain.com/cert.pem "; ssl_certificate_key"/usr/local/etc/letsencrypt/live/www.Yourdomain.com/Privkey.pem "; 
Konfigurasikan SSL untuk nginx

15. Juga, jika garis SSL_DHPARAM hadir di Nginx SSL konfigurasi, anda harus menjana yang baru 2048 bit Diffie-Hellman Kunci dengan arahan berikut:

# OpenSSL DHParam -out/usr/local/etc/nginx/dhparam.PEM 2048 

16. Akhirnya, untuk mengaktifkan konfigurasi Nginx TLS, periksa pertama konfigurasi global nginx untuk kemungkinan kesilapan sintaks dan, kemudian, mulakan semula perkhidmatan Nginx untuk memohon konfigurasi SSL dengan mengeluarkan arahan berikut.

# nginx -t # service nginx mulakan semula 

17. Sahkan jika daemon nginx mengikat 443 pelabuhan dengan mengeluarkan arahan berikut yang boleh menyenaraikan semua soket rangkaian yang dibuka dalam sistem dalam mendengar keadaan.

# netstat -an -p tcp | grep mendengar # sockstat -4 
Sahkan port Nginx

18. Anda juga boleh melawat alamat domain anda melalui Https protokol dengan membuka penyemak imbas dan taipkan alamat berikut untuk mengesahkan bahawa biarkan sijil menyulitkan berfungsi seperti yang diharapkan. Kerana anda menggunakan sijil yang dihasilkan oleh pihak berkuasa sijil yang sah, tidak ada ralat yang harus dipaparkan dalam penyemak imbas.

https: // www.Yourdomain.com 

19. Utiliti OpenSSL juga dapat membantu anda mencari maklumat mengenai sijil yang diperoleh dari Let's Encrypt CA, dengan menjalankan arahan dengan pilihan berikut.

# OpenSSL S_Client -Connect www.Yourdomain.com: 443 
Semak sijil SSL

Sekiranya anda ingin memaksa Nginx untuk mengarahkan semua HTTP ke permintaan HTTPS yang diterima untuk domain anda di port 80 ke Https, Buka fail konfigurasi nginx, cari arahan pelayan untuk port 80 dan tambahkan baris di bawah selepas pernyataan server_name seperti digambarkan dalam contoh di bawah.

menulis semula ^(.*) https: // www.Yourdomain.com $ 1 kekal; 
Nginx redirect http ke https

20. Menyediakan pembaharuan automatik untuk sijil yang dikeluarkan oleh Let's Encrypt Authority sebelum tamat tempoh boleh dilakukan dengan menjadualkan pekerjaan Cron untuk dijalankan sekali sehari dengan mengeluarkan perintah berikut.

# Crontab -e 

Tugas Cron untuk memperbaharui sijil.

0 0 * * * Certbot Renew >>/var/log/letsencrypt.log 

Itu sahaja! Nginx kini boleh menyediakan aplikasi web selamat kepada pelawat anda menggunakan sijil percuma.