GNU/Linux >> Belajar Linux >  >> FreeBSD

Cara Mengamankan Nginx dengan SSL dan Let's Encrypt di FreeBSD

Dalam panduan ini kita akan membahas cara mengamankan Nginx server web di FreeBSD dengan TLS/SSL sertifikat yang ditawarkan oleh Let's Encrypt Certificate Authority . Kami juga akan menunjukkan cara memperbarui sertifikat Lets’ Encrypt secara otomatis sebelum tanggal kedaluwarsa.

TLS , singkatan dari Transport Layer Security , adalah protokol yang berjalan di bawah HTTP protokol dan menggunakan sertifikat dan kunci untuk mengenkapsulasi 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 untuk Apache di FreeBSD

Proses mendapatkan Let's Encrypt free gratis sertifikat di FreeBSD dapat sangat disederhanakan dengan menginstal certboot utilitas klien, yang merupakan klien Let's Encrypt resmi yang digunakan untuk membuat dan mengunduh sertifikat.

Persyaratan

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

Langkah 1:Konfigurasi Nginx TLS/SSL

1. Secara default, TLS/SSL konfigurasi server tidak diaktifkan di FreeBSD karena TLS pernyataan blok server dikomentari di Nginx file konfigurasi default.

Untuk mengaktifkan TLS server di Nginx , buka nginx.conf file konfigurasi, cari baris yang mendefinisikan awal SSL server dan perbarui seluruh blok agar terlihat seperti pada contoh di bawah ini.

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

Kutipan blok HTTPS Nginx:

Konfigurasi HTTPS Nginx
server {
       listen 443 ssl  default_server;
       server_name  www.yourdomain.com;
	
	access_log /var/log/nginx/access.log;
	error_log /var/log/nginx/error.log;
	error_page   500 502 503 504  /50x.html;
        
	location = /50x.html {
            root   /usr/local/www/nginx-dist;
        }
	
	location / {
	    root   /usr/local/www/nginx;
       	    index  index.html index.htm;
	    try_files $uri $uri/ /index.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 shared:SSL:1m;
	ssl_session_timeout 10m;
	ssl_ciphers HIGH:!aNULL:!MD5;
	ssl_prefer_server_ciphers  on;

	# Use gzip compression
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 5;
gzip_buffers 16 8k;
gzip_http_version 1.0;

	# Set a variable to work around the lack of nested conditionals
	
	set $cache_uri $request_uri;
	
	location ~ /.well-known {
	allow all;
		}
    


        location ~ \.php$ {
        root	/usr/local/www/nginx;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        #fastcgi_param  SCRIPT_FILENAME /scripts$fastcgi_script_name;
        fastcgi_param SCRIPT_FILENAME $request_filename;    
		include        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 ke Nginx file konfigurasi utama, jangan memulai ulang daemon atau menerapkan pengaturan sebelum menginstal dan mendapatkan Let's Encrypt sertifikat untuk domain Anda.

Langkah 2:Instal Klien Certbot di FreeBSD

2. Proses pemasangan Let's Encrypt certbot utilitas klien di FreeBSD melibatkan pengunduhan kode sumber untuk py-certbot dan kompilasi secara lokal, dengan mengeluarkan perintah di bawah ini.

# cd /usr/ports/security/py-certbot
# make install clean

3. Mengkompilasi py-certbot utilitas membutuhkan banyak waktu dibandingkan dengan menginstal paket biner biasa. Selama waktu ini, serangkaian dependensi harus diunduh dalam bentuk kompilasi 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. Pada layar pertama, pilih alat berikut, dengan menekan [spasi] kunci, untuk mengkompilasi python27 ketergantungan, seperti yang diilustrasikan pada gambar di bawah ini.

  • IPV6
  • LIBFFI
  • NLS
  • PYMALLOC
  • BENANG
  • UCS4 untuk dukungan Unicode

4. Selanjutnya, pilih DOCS dan THREAD untuk gettext-tools ketergantungan dan tekan OK untuk melanjutkan seperti yang ditunjukkan pada gambar di bawah ini.

5. Di layar berikutnya tinggalkan TES opsi dinonaktifkan untuk libffi-3.2.1 dan tekan Oke untuk melangkah lebih jauh.

6. Selanjutnya, tekan spasi untuk memilih DOCS untuk py27-enum34 dependensi, yang akan menginstal dokumentasi untuk alat ini, dan tekan OK untuk melanjutkan, seperti yang diilustrasikan pada tangkapan layar di bawah.

7. Terakhir, pilih untuk memasang contoh contoh untuk py27-openssl ketergantungan dengan menekan [spasi] tombol dan tekan OK untuk menyelesaikan proses kompilasi dan instalasi untuk py-certbot klien.

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

# pkg install py27-certbot

9. Untuk menghindari beberapa masalah yang mungkin terjadi saat mendapatkan Let's Encrypt free gratis sertifikat, kesalahan paling umum adalah “pkg_resources.DistributionNotFound ”, pastikan dua dependensi berikut juga ada di sistem Anda:py27-salt dan py27-acme .

# pkg install py27-salt
# pkg install py27-acme

Langkah 3:Instal Let's Encrypt Certificate untuk Nginx di FreeBSD

10. Untuk mendapatkan sertifikat mandiri Let's Encrypt untuk domain Anda, jalankan perintah berikut dan berikan nama domain dan semua subdomain yang ingin Anda dapatkan sertifikatnya dengan menyiratkan -d bendera.

# certbot certonly --standalone -d yourdomain.com -d www.yourdomain.com

11. Saat membuat sertifikat, Anda akan diminta untuk memasukkan alamat email Anda dan menyetujui persyaratan layanan Let's Encrypt. Ketik a dari keyboard untuk menyetujui dan melanjutkan dan Anda juga akan ditanya apakah Anda bersedia membagikan alamat email Anda dengan mitra Let's Encrypt.

Jika Anda tidak ingin membagikan alamat email Anda, cukup ketik no kata di prompt dan tekan [enter] 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 di sistem Anda dan kapan sertifikat itu kedaluwarsa.

12. Jika Anda ingin mendapatkan sertifikat Let's Encrypt menggunakan "webroot ” plugin dengan menambahkan webroot direktori server Nginx untuk domain Anda, jalankan perintah berikut dengan --webroot dan -w bendera. Secara default, jika Anda belum mengubah jalur root web Nginx, itu harus berada di /usr/local/www/nginx/ jalur sistem.

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

Seperti pada --strandalone prosedur untuk mendapatkan sertifikat, --webroot prosedur juga akan meminta Anda untuk memberikan alamat email untuk pembaruan sertifikat dan pemberitahuan keamanan, untuk menekan a untuk menyetujui syarat dan ketentuan Let's Encrypt dan no atau yes untuk atau tidak membagikan alamat email mitra Let's Encrypt seperti yang diilustrasikan dalam contoh di bawah ini.

Ketahuilah bahwa klien certbot dapat mendeteksi alamat email palsu dan tidak akan membiarkan Anda melanjutkan pembuatan sertifikat sampai Anda memberikan alamat email asli.

Contoh Cerbot:
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel):[email protected]  #A fake email address will be detected
There seem to be problems with that address. Enter email address (used for
urgent renewal and security notices)  If you really want to skip this, you can
run the client with --register-unsafely-without-email but make sure you then
backup your account key from /etc/letsencrypt/accounts   (Enter 'c' to cancel):[email protected]

-------------------------------------------------------------------------------
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf. You must agree
in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory
-------------------------------------------------------------------------------
(A)gree/(C)ancel: a ------------------------------------------------------------------------------- Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about EFF and our work to encrypt the web, protect its users and defend digital rights. ------------------------------------------------------------------------------- (Y)es/(N)o: n Obtaining a new certificate Performing the following challenges: http-01 challenge for www.domain.com Using the webroot path /usr/local/www/nginx/ for all unmatched domains. Waiting for verification... Cleaning up challenges IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /usr/local/etc/letsencrypt/live/www.yourdomain.com/fullchain.pem. Your cert will expire on 2017-12-28. 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" - Your account credentials have been saved in your Certbot configuration directory at /usr/local/etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le

Langkah 4:Perbarui Sertifikat TLS Nginx

13. Lokasi untuk mendapatkan sertifikat dan kunci Let's Encrypt di FreeBSD adalah /usr/local/etc/letsencrypt/live/www.domainanda.com/ jalur sistem. Keluarkan perintah ls untuk menampilkan komponen sertifikat Let's Encrypt Anda:file rantai, file rantai penuh, kunci pribadi, dan file sertifikat, seperti yang diilustrasikan dalam contoh berikut.

# ls /usr/local/etc/letsencrypt/live/www.yourdomain.com/

14. Untuk menginstal sertifikat Let's Encrypt untuk domain Anda di server web Nginx, buka file konfigurasi utama Nginx atau file konfigurasi untuk server Nginx TLS, jika itu adalah file terpisah, dan ubah baris di bawah ini untuk mencerminkan jalur Let's Encrypt yang diterbitkan sertifikat seperti yang diilustrasikan di bawah ini.

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

Perbarui baris berikut agar terlihat seperti dalam contoh 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";

15. Juga, jika baris ssl_dhparam ada di Nginx SSL konfigurasi, Anda harus membuat 2048 new baru sedikit Diffie–Hellman kunci dengan perintah berikut:

# openssl dhparam –out /usr/local/etc/nginx/dhparam.pem 2048 

16. Terakhir, untuk mengaktifkan konfigurasi Nginx TLS, pertama-tama periksa konfigurasi global Nginx untuk kemungkinan kesalahan sintaks dan, kemudian, mulai ulang layanan Nginx untuk menerapkan konfigurasi SSL dengan mengeluarkan perintah berikut.

# nginx -t
# service nginx restart

17. Konfirmasi apakah daemon Nginx mengikat 443 port dengan mengeluarkan perintah berikut yang dapat mencantumkan semua soket jaringan yang terbuka di sistem dalam status mendengarkan.

# netstat -an -p tcp| grep LISTEN
# sockstat -4 

18. Anda juga dapat mengunjungi alamat domain Anda melalui HTTPS protokol dengan membuka browser dan ketik alamat berikut untuk mengonfirmasi bahwa sertifikat Let's Encrypt berfungsi seperti yang diharapkan. Karena Anda menggunakan sertifikat yang dihasilkan oleh Otoritas Sertifikat yang valid, seharusnya tidak ada kesalahan yang ditampilkan di browser.

https://www.yourdomain.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.yourdomain.com:443

Jika Anda ingin memaksa Nginx untuk mengarahkan semua permintaan http ke https yang diterima untuk domain Anda pada port 80 ke HTTPS , buka file konfigurasi Nginx, cari direktif server untuk port 80 dan tambahkan baris di bawah ini setelah pernyataan server_name seperti yang diilustrasikan pada contoh di bawah ini.

rewrite ^(.*) https://www.yourdomain.com$1 permanent;

20. Menyiapkan perpanjangan otomatis untuk sertifikat yang dikeluarkan oleh otoritas Let's Encrypt sebelum kedaluwarsa dapat dilakukan dengan menjadwalkan tugas cron untuk dijalankan sekali sehari dengan mengeluarkan perintah berikut.

# crontab -e

Tugas Cron untuk memperbarui sertifikat.

0 0 * * * certbot renew >> /var/log/letsencrypt.log

Itu saja! Nginx sekarang dapat menyajikan aplikasi web aman kepada pengunjung Anda menggunakan sertifikat gratis Let's Encrypt.


FreeBSD
  1. Amankan Nginx dengan Lets Encrypt di CentOS 7

  2. Amankan Nginx dengan Let's Encrypt SSL di Debian 10/11

  3. Cara Menginstal Let's Encrypt SSL di Ubuntu 18.04 dengan Nginx

  1. Cara Mengamankan Server Web Apache dengan Let's Encrypt di RHEL 8

  2. Instal Lets Encrypt dan Secure Nginx dengan SSL/TLS di Debian 9

  3. Cara Menginstal Drupal 9 dengan Nginx dan Mengenkripsi SSL di Debian 10

  1. Cara Mengatur Let's Encrypt SSL Certificate dengan Nginx di Debian 10 / Debian 9

  2. Cara Instal Drupal dengan Nginx dan Mari Enkripsi SSL di Debian 11

  3. Cara Instal Joomla dengan Nginx dan Mari Enkripsi SSL di Debian 11