Secure Nginx dengan Let’s Encrypt di Debian 9

Let’s Encrypt adalah otoritas sertifikat gratis dan terbuka yang dikembangkan oleh Internet Security Research Group (ISRG). Sertifikat yang dikeluarkan oleh Let’s Encrypt dipercaya oleh hampir semua browser .

Dalam tutorial ini, kami akan menjelaskan cara menggunakan alat Certbot untuk mendapatkan sertifikat SSL gratis untuk Nginx pada Debian 9. Kami juga akan menunjukkan cara mengkonfigurasi Nginx untuk menggunakan sertifikat SSL dan mengaktifkan HTTP / 2.

Install Certbot

Certbot adalah alat berfitur lengkap dan mudah digunakan yang dapat mengotomatiskan tugas untuk mendapatkan dan memperbarui Mari Enkripsi sertifikat SSL dan konfigurasi server web untuk menggunakan sertifikat. Paket certbot termasuk dalam repositori Ubuntu default.

Update daftar paket dan instal paket certbot:

$ sudo apt update
$ sudo apt install certbot

Pertukaran kunci Diffie – Hellman (DH) adalah metode pertukaran kunci kriptografi yang aman melalui saluran komunikasi yang tidak aman. Kami akan menghasilkan set parameter DH 2048 bit baru untuk memperkuat keamanan:

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Untuk memperoleh sertifikat SSL untuk domain kami, kami akan menggunakan plugin Webroot yang berfungsi dengan membuat file sementara untuk memvalidasi domain yang diminta dalam direktori ${webroot-path}/.well-known/acme-challenge . Server Let’s Encrypt membuat permintaan HTTP ke file sementara untuk memvalidasi bahwa domain yang diminta menyelesaikan ke server tempat certbot berjalan. Kami akan memetakan semua permintaan HTTP untuk .well-known/acme-challenge ke satu direktori, / var / lib / letsencrypt .

Perintah berikut akan membuat direktori dan membuatnya dapat ditulis untuk server Nginx.

$ mkdir -p /var/lib/letsencrypt/.well-known
$ chgrp www-data /var/lib/letsencrypt
$ chmod g+s /var/lib/letsencrypt

Untuk menghindari duplikasi kode, buat dua snippet berikut yang akan disertakan dalam semua file blok server Nginx kami. Buka editor teks Anda dan buat cuplikan pertama, letsencrypt.conf :

$ sudo nano /etc/nginx/snippets/letsencrypt.conf

Buat snippet ssl.conf kedua yang mencakup chipper yang direkomendasikan oleh Mozilla, memungkinkan OCSP Stapling, HTTP Strict Transport Security (HSTS), dan memberlakukan beberapa header HTTP yang berfokus pada keamanan.

$ sudo nano /etc/nginx/snippets/ssl.conf

Ubah Seperti Contoh Dibawah ini

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;

Setelah selesai, buka file blok server domain dan sertakan snippet letsencrypt.conf seperti yang ditunjukkan di bawah ini:

$ sudo nano /etc/nginx/sites-available/example.com

Aktifkan blok server baru dengan membuat simbol ke direktori sites-enabled :

$ sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

Restart layanan Nginx agar perubahan diterapkan:

$ sudo systemctl restart nginx

Anda sekarang dapat menjalankan Certbot dengan plugin webroot dan mendapatkan file sertifikat SSL dengan menjalankan perintah:

$ sudo certbot certonly --agree-tos --email admin@example.com --webroot -w /var/lib/letsencrypt/ -d example.com -d www.example.com

Jika sertifikat SSL diaktifkan berhasil diperoleh, pesan berikut akan dicetak pada terminal Anda:

Selanjutnya, edit blok server domain sebagai berikut:

$ sudo nano /etc/nginx/sites-available/example.com

Dengan konfigurasi di atas kami memaksa HTTPS dan mengalihkan dari versi www ke versi non-www. Restart layanan Nginx agar perubahan diterapkan :

$ sudo systemctl reload nginx

Karena kita menggunakan plug-in webroot certbot setelah sertifikat diperbarui, kita juga harus memuat ulang layanan nginx. Tambahkan –renew-hooksystemctl reload nginx” ke file /etc/cron.d/certbot sehingga terlihat seperti ini:

$ sudo nano /etc/cron.d/certbot
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"

Uji proses pembaruan otomatis, dengan menjalankan perintah ini:

$ sudo certbot renew --dry-run

Jika tidak ada kesalahan, itu berarti proses pembaruan berhasil.


Di tulis oleh: