Cara mengamankan nginx dengan ssl dan mari enkripsi di freebsd

Cara mengamankan nginx dengan ssl dan mari enkripsi di freebsd

Dalam panduan ini kita akan membahas cara mengamankan Nginx server web di Freebsd dengan TLS/SSL sertifikat yang ditawarkan oleh Mari Enkripsi Otoritas Sertifikat. Kami juga akan menunjukkan kepada Anda cara secara otomatis memperbarui sertifikat Enkripsi LET 'sebelum tanggal kedaluwarsa.

Tls, akronim untuk Keamanan Lapisan Transportasi, adalah protokol yang berjalan di bawah Http protokol dan menggunakan sertifikat dan kunci untuk merangkum paket dan mengenkripsi data yang dipertukarkan antara server dan klien, atau dalam hal ini antara Nginx server web dan browser klien, untuk mengamankan koneksi, sehingga pihak ketiga, yang mungkin mencegat lalu lintas, tidak dapat mendekripsi transmisi.

Baca juga: Instal Let's Encrypt for Apache di FreeBSD

Proses mendapatkan gratis Mari Enkripsi sertifikat di Freebsd dapat sangat disederhanakan dengan menginstal Certboot utilitas klien, yang merupakan klien resmi mari kita yang digunakan untuk menghasilkan dan mengunduh sertifikat.

Persyaratan

  1. Instal FBEMP (Nginx, MariaDB dan PHP) Tumpukan di Freebsd

Langkah 1: Konfigurasikan Nginx TLS/SSL

1. Secara default, TLS/SSL Konfigurasi server tidak diaktifkan Freebsd karena Tls Pernyataan blok server dikomentari Nginx File konfigurasi default.

Untuk mengaktifkan Tls server di Nginx, membuka Nginx.conf file konfigurasi, cari baris yang menentukan awal SSL server dan perbarui seluruh blok kelihatannya dalam sampel di bawah ini.

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

Kutipan blok Nginx HTTPS:

Konfigurasi Nginx HTTPS
Server Listen 443 SSL Default_Server; nama server www.Domain Anda.com; access_log/var/log/nginx/access.catatan; error_log/var/log/nginx/error.catatan; ERROR_PAGE 500 502 503 504 /50x.html; Lokasi = /50x.html root/usr/local/www/nginx-dist;  location/root/usr/local/www/nginx; Indeks Indeks.Indeks HTML.htm; TRY_FILES $ URI $ URI / / INDEX.php?$ args;  ssl_certificate "/usr/local/etc/letsencrypt/live/www.Domain Anda.com/sertifikat.PEM "; ssl_certificate_key"/usr/local/etc/letsencrypt/live/www.Domain Anda.com/privkey.PEM "; ssl_protocols tlsv1 tlsv1.1 TLSV1.2; ssl_dhparam/usr/local/etc/nginx/dhparam.PEM; SSL_SESSION_CACHE Dibagikan: SSL: 1M; ssl_session_timeout 10m; SSL_CIPHERS Tinggi:!Anull:!MD5; ssl_prefer_server_ciphers on; # Gunakan gzip gzip gzip aktif; gzip_disable "msie6"; gzip_vary on; gzip_proxied apapun; GZIP_COMP_LEVEL 5; GZIP_BUFFERS 16 8K; gzip_http_version 1.0; # Tetapkan variabel untuk mengatasi kurangnya persyaratan bersarang set $ cache_uri $ request_uri; Lokasi ~ /.Izinkan semua yang terkenal;  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; Sertakan fastcgi_params;  

Blok di atas, selain SSL blok, juga berisi beberapa pernyataan untuk mengaktifkan kompresi GZIP dan Fastcgi Process Manager, digunakan untuk meneruskan kode php ke Php-fpm gateway untuk menjalankan aplikasi web dinamis.

Setelah Anda menambahkan kode di atas Nginx file konfigurasi utama, jangan restart daemon atau terapkan pengaturan sebelum menginstal dan mendapatkan Mari Enkripsi Sertifikat untuk domain Anda.

Langkah 2: Instal Certbot Client di FreeBSD

2. Proses memasang ayat certbot utilitas klien di freebsd melibatkan mengunduh kode sumber untuk py-certbot dan mengkompilasinya secara lokal, dengan mengeluarkan perintah di bawah ini.

# CD/USR/PORTS/Security/PY-CERTBOT # Buat Instal Bersih 

3. Menyusun py-certbot Utilitas membutuhkan banyak waktu dibandingkan dengan memasang paket biner biasa. Selama waktu ini, serangkaian dependensi harus diunduh dalam dikompilasi secara lokal di Freebsd.

Juga, serangkaian prompt akan muncul di layar Anda, menuntut Anda untuk memilih paket apa yang akan digunakan pada waktu kompilasi untuk setiap ketergantungan. Di layar pertama, pilih alat berikut, dengan menekan [ruang angkasa] kunci, untuk menyusun Python27 ketergantungan, seperti yang diilustrasikan dalam gambar di bawah ini.

  • IPv6
  • Libffi
  • NLS
  • Pymalloc
  • Utas
  • Ucs4 untuk dukungan unicode
Aktifkan UCS4 untuk Unicode

4. Selanjutnya, pilih Dokumen Dan Utas untuk getText-tools ketergantungan dan tekan OKE untuk melanjutkan seperti yang ditunjukkan pada gambar di bawah ini.

Instal dokumentasi

5. Di layar berikutnya tinggalkan Tes opsi dinonaktifkan untuk libffi-3.2.1 dan tekan OKE untuk bergerak lebih jauh.

Nonaktifkan tes untuk libffi

6. Selanjutnya, tekan ruang angkasa memilih Dokumen untuk PY27-enum34 ketergantungan, yang akan menginstal dokumentasi untuk alat ini, dan tekan OKE untuk melanjutkan, seperti yang diilustrasikan dalam tangkapan layar di bawah ini.

Instal dokumentasi untuk PY27

7. Akhirnya, pilih untuk menginstal contoh sampel untuk py27-openssl ketergantungan dengan menekan [ruang angkasa] kunci dan tekan OKE untuk menyelesaikan proses kompilasi dan pemasangan py-certbot klien.

Instal PY27 OpenSSL

8. Setelah proses menyusun dan memasang py-certbot Selesai utilitas, jalankan perintah di bawah ini untuk meningkatkan alat pada versi terbaru dari paket seperti yang diilustrasikan dalam tangkapan layar di bawah ini.

# pkg instal py27-certbot 
Tingkatkan alat py-certbot

9. Untuk menghindari beberapa masalah itu mungkin terjadi saat mendapatkan gratis Mari Enkripsi Sertifikat, kesalahan yang paling umum adalah "PKG_Resources.Distribusi tidak ada”, Pastikan dua dependensi berikut juga hadir dalam sistem Anda: PY27-Salt Dan PY27-ACME.

# pkg instal py27-salt # pkg instal py27-acme 

Langkah 3: Instal Sertifikat Enkripsi Ayo untuk Nginx di FreeBSD

10. Untuk mendapatkan sertifikat mandiri mandiri untuk domain Anda, jalankan perintah berikut dan berikan Anda nama domain dan semua subdomain yang Anda inginkan untuk mendapatkan sertifikat dengan menyiratkan -D bendera.

# certbot certonly --standalone -d Domain Anda.com -D www.Domain Anda.com 
Instal mari kita enkripsi untuk nginx

11. Saat menghasilkan sertifikat, Anda akan diminta untuk memasukkan alamat email Anda dan setuju dengan Let's Encrypt of Service. Jenis A Dari keyboard untuk menyetujui dan melanjutkan dan Anda juga akan ditanya apakah Anda bersedia berbagi alamat email Anda dengan mitra enkripsi Let's.

Jika Anda tidak ingin membagikan alamat email Anda, cukup ketik TIDAK kata di prompt dan tekan [memasuki] kunci untuk melanjutkan. Setelah sertifikat untuk domain Anda berhasil diperoleh, Anda akan menerima beberapa catatan penting yang akan memberi tahu Anda di mana sertifikat disimpan dalam sistem Anda dan kapan mereka kedaluwarsa.

Mari kita ankripsi ringkasan

12. Jika Anda ingin mendapatkan Sertifikat Enkripsi Let's menggunakan “Webroot"Plugin dengan menambahkan Webroot direktori server nginx untuk domain Anda, keluarkan perintah berikut dengan --Webroot Dan -w bendera. Secara default, jika Anda belum mengubah jalur webroot nginx, itu harus ditempatkan di /usr/local/www/nginx/ jalur sistem.

# certbot certonly --webroot -W /usr/local/www/nginx/ -D Domain Anda.com -D www.Domain Anda.com 

Seperti di --Strandalone prosedur untuk mendapatkan sertifikat, --Webroot Prosedur juga akan meminta Anda untuk menyediakan alamat email untuk pembaruan sertifikat dan pemberitahuan keamanan, untuk menekan A untuk menyetujui mari kita mengenkripsi syarat dan ketentuan dan TIDAK atau Ya untuk atau tidak membagikan alamat email mitra mitra mitra seperti yang diilustrasikan dalam sampel di bawah ini.

Ketahuilah bahwa klien Certbot dapat mendeteksi alamat email palsu dan tidak akan membiarkan Anda terus menghasilkan sertifikat sampai Anda menyediakan alamat email nyata.

Sampel cerbot:
Menyimpan log debug ke/var/log/letsencrypt/letsencrypt.log masukkan alamat email (digunakan untuk pemberitahuan pembaruan dan keamanan yang mendesak) (masukkan 'C' untuk membatalkan):[Email dilindungi] #A alamat email palsu akan terdeteksi tampaknya ada masalah dengan alamat itu. Masukkan alamat email (digunakan untuk pemberitahuan pembaruan dan keamanan yang mendesak) Jika Anda benar-benar ingin melewatkan ini, Anda dapat menjalankan klien dengan-register-unsafely-without-email tetapi pastikan Anda kemudian mencadangkan kunci akun Anda dari/etc/letsencrypt/ Akun (masukkan 'C' untuk membatalkan): [Email Dilindungi] ------------------------------------ ------------------------------------------- Baca Ketentuan Layanan di https: // letsencrypt.org/dokumen/le-sa-v1.1.1-Agustus-1-2016.pdf. Anda harus setuju untuk mendaftar dengan server ACME di https: // acme-v01.API.Letsencrypt.org/direktori ----------------------------------------------- -------------------------------- (A) GREE/(C) Ancel: A ------------------------------------------------------------------------------- Apakah Anda bersedia membagikan alamat email Anda dengan Electronic Frontier Foundation, mitra pendiri Proyek Let's Encrypt dan organisasi nirlaba yang mengembangkan Certbot? Kami ingin mengirimi Anda email tentang EFF dan pekerjaan kami untuk mengenkripsi web, melindungi penggunanya dan mempertahankan hak digital. ------------------------------------------------------------------------------- (Ya Tidak: N Mendapatkan Sertifikat Baru Melakukan Tantangan berikut: HTTP-01 Challenge untuk www.domain.com Menggunakan jalur webroot/usr/local/www/nginx/untuk semua domain yang tidak tertandingi. Menunggu verifikasi… Membersihkan Tantangan Catatan Penting: - Selamat! Sertifikat dan rantai Anda telah disimpan di/usr/local/etc/letsencrypt/live/www.Domain Anda.com/fullchain.PEM. Sertifikat Anda akan kedaluwarsa pada 2017-12-28. Untuk mendapatkan versi baru atau tweak dari sertifikat ini di masa depan, cukup jalankan Certbot lagi. Untuk memperbarui non -interaktif * semua * sertifikat Anda, jalankan "Certbot Renew" - kredensial akun Anda telah disimpan di direktori konfigurasi Certbot Anda di/usr/local/etc/letsencrypt. Anda harus membuat cadangan yang aman dari folder ini sekarang. Direktori konfigurasi ini juga akan berisi sertifikat dan kunci pribadi yang diperoleh oleh certbot sehingga membuat cadangan reguler dari folder ini sangat ideal. - Jika Anda menyukai Certbot, harap pertimbangkan untuk mendukung pekerjaan kami dengan: menyumbang ke ISRG/Let's Encrypt: https: // letsencrypt.org/donasi menyumbang ke eff: https: // eff.org/donasi-le

Langkah 4: Perbarui Sertifikat Nginx TLS

13. Lokasi yang diperoleh Let's Encrypt Certificate and Keys in Freebsd adalah /usr/local/etc/letsencrypt/live/www.Domain Anda.com/ jalur sistem. Masalah Perintah LS Untuk menampilkan komponen Sertifikat Let's Encrypt Anda: File Rantai, File Fullchain, Kunci Pribadi dan File Sertifikat, seperti yang diilustrasikan dalam contoh berikut.

# ls/usr/local/etc/letsencrypt/live/www.Domain Anda.com/ 
Daftar memungkinkan mengenkripsi domain ssl-keys

14. Untuk menginstal Sertifikat Enkripsi Mari untuk Domain Anda di Nginx Web Server, buka File Konfigurasi Utama Nginx atau file konfigurasi untuk Nginx TLS Server, jika itu adalah file yang terpisah, dan memodifikasi baris di bawah ini untuk mencerminkan jalur Let's Encrypt yang dikeluarkan sertifikat yang dikeluarkan yang dikeluarkan oleh Let's I yang dikeluarkan yang dikeluarkan Let's Encrypt yang dikeluarkan seperti yang diilustrasikan di bawah ini.

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

Perbarui baris berikut agar terlihat seperti dalam sampel ini:

ssl_certificate "/usr/local/etc/letsencrypt/live/www.Domain Anda.com/sertifikat.PEM "; ssl_certificate_key"/usr/local/etc/letsencrypt/live/www.Domain Anda.com/privkey.PEM "; 
Konfigurasikan SSL untuk nginx

15. Juga, jika garisnya SSL_DHPARAM hadir di Nginx SSL Konfigurasi, Anda harus menghasilkan yang baru 2048 sedikit Diffie-Hellman Kunci dengan perintah berikut:

# OpenSSL DHPARAM -OUT/USR/LOCAL/ETC/NGINX/DHPARAM.PEM 2048 

16. Akhirnya, untuk mengaktifkan konfigurasi Nginx TLS, pertama -tama periksa konfigurasi global nginx untuk kemungkinan kesalahan sintaksis dan, kemudian, restart layanan Nginx untuk menerapkan konfigurasi SSL dengan mengeluarkan perintah berikut.

# nginx -t # service nginx restart 

17. Konfirmasi jika daemon nginx mengikat 443 port dengan mengeluarkan perintah berikut yang dapat mencantumkan semua soket jaringan yang dibuka dalam sistem dalam keadaan mendengarkan.

# netstat -an -p TCP | grep mendengarkan # sockstat -4 
Verifikasi port nginx

18. Anda juga dapat mengunjungi alamat domain Anda melalui Https Protokol dengan membuka browser dan ketik alamat berikut untuk mengonfirmasi bahwa Let's Encrypt Certificate bekerja seperti yang diharapkan. Karena Anda menggunakan sertifikat yang dihasilkan oleh otoritas sertifikat yang valid, tidak ada kesalahan yang harus ditampilkan di browser.

https: // www.Domain Anda.com 

19. Utilitas OpenSSL juga dapat membantu Anda menemukan informasi tentang sertifikat yang diperoleh dari Let's Encrypt CA, dengan menjalankan perintah dengan opsi berikut.

# openssl s_client -connect www.Domain Anda.com: 443 
Periksa sertifikat SSL

Jika Anda ingin memaksa Nginx untuk mengarahkan semua http ke permintaan https yang diterima untuk domain Anda di port 80 ke Https, Buka File Konfigurasi Nginx, Temukan Petunjuk Server untuk Port 80 dan tambahkan baris di bawah ini setelah pernyataan server_name seperti yang diilustrasikan dalam contoh di bawah ini.

Menulis ulang ^(.*) https: // www.Domain Anda.com $ 1 permanen; 
Nginx mengarahkan http ke https

20. Menyiapkan Pembaruan Otomatis untuk Sertifikat yang Dikeluarkan oleh Let's Encrypt Authority Sebelum mereka kedaluwarsa dapat dilakukan dengan menjadwalkan pekerjaan cron untuk dijalankan sekali sehari dengan mengeluarkan perintah berikut.

# crontab -e 

Tugas cron untuk memperbarui sertifikat.

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

Itu saja! Nginx sekarang dapat melayani aplikasi web yang aman untuk pengunjung Anda menggunakan Let's Encrypt Free Certificate.