
SSL (singkatan dari secure socket layer) adalah protokol web yang membuat lalu lintas antara server dan client aman dengan mengenkripsinya. Server dan client dengan aman mengirimkan lalu lintas tanpa risiko komunikasi ditafsirkan oleh pihak ketiga. Ini juga membantu client untuk memverifikasi identitas situs web yang mereka gunakan untuk berkomunikasi.
Dalam posting ini, kami akan menjelaskan cara mengatur SSL untuk Nginx. Kami akan mendemonstrasikan prosedur menggunakan sertifikat yang ditandatangani sendiri. Sertifikat yang ditandatangani sendiri hanya mengenkripsi koneksi tetapi tidak memvalidasi identitas server Anda. Oleh karena itu, ini harus digunakan hanya untuk lingkungan pengujian atau untuk service LAN internal. Untuk lingkungan produksi sebaiknya menggunakan sertifikat yang ditandatangani oleh CA (certificate authority).
Prasyarat
Untuk posting ini, Anda harus memiliki prasyarat berikut:
- Nginx sudah terinstal di engine Anda
- Blok server dikonfigurasi untuk domain Anda
- Pengguna dengan hak sudo
Prosedur yang dijelaskan di sini telah dilakukan pada Debian 10 (Buster) engine.
Langkah 1: Membuat Sertifikat yang Ditandatangani Sendiri
Langkah pertama kami adalah membuat sertifikat yang ditandatangani sendiri. Keluarkan perintah di bawah ini di Terminal untuk menghasilkan CSR (Permintaan Penandatanganan Sertifikat) dan kunci:
$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/selfsigned-nginx.key -out /etc/ssl/certs/selfsigned-nginx.crt
Anda akan diminta untuk memberikan beberapa informasi seperti nama negara, negara bagian, lokalitas, nama umum (nama domain atau alamat IP Anda), dan alamat email.
Pada perintah di atas, OpenSSL akan membuat dua file berikut:
- CSR: selfsigned-nginx.crt di dalam /etc/ssl/cert/ directory
- Kunci: selfsigned-nginx.key dalam /etc/ssl/private directory
Sekarang buat dhparam.pem file menggunakan perintah di bawah ini:
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Langkah 2: Mengonfigurasi Nginx untuk Menggunakan SSL
Pada langkah sebelumnya, kami telah membuat CSR dan kuncinya. Sekarang di langkah ini, kita akan mengkonfigurasi Nginx untuk menggunakan SSL. Untuk ini, kami akan membuat cuplikan konfigurasi dan menambahkan informasi tentang file sertifikat SSL dan lokasi utama kami.
Keluarkan perintah di bawah ini di Terminal untuk membuat cuplikan konfigurasi baru self-signed.conf file dalam /etc/nginx/snippets.
$ sudo nano /etc/nginx/snippets/self-signed.conf
Dalam file, tambahkan baris berikut:
ssl_certificate /etc/ssl/certs/selfsigned-nginx.crt;
ssl_certificate_key /etc/ssl/private/selfsigned-nginx.key;
Itu ssl_certificate diatur ke selfsigned-nginx.crt (berkas sertifikat) sedangkan ssl_certificate_key diatur ke selfsigned-nginx.key (berkas kunci).
Simpan dan tutup self-signed.conf mengajukan.
Sekarang ki
ta akan membuat file snippet lain ssl-params.confdan konfigurasikan beberapa pengaturan SSL dasar. Keluarkan perintah di bawah ini di Terminal untuk mengeditssl-params.conf mengajukan:
$ sudo nano /etc/nginx/snippets/ssl-params.conf
Tambahkan konten berikut ke file:
ssl_protocols TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
ssl_ecdh_curve secp384r1;
ssl_session_timeout 10m;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
# ssl_stapling on;
# ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; cara=block";
Anda harus mengizinkan profil “Nginx Full” di firewall. Untuk melakukannya, gunakan perintah di bawah ini:
$ sudo ufw allow 'Nginx Full'
Untuk memverifikasi apakah profil telah diizinkan di firewall, gunakan perintah di bawah ini:
$ sudo ufw status
Langkah 5: Uji file konfigurasi NGINX
Sekarang uji file konfigurasi Nginx menggunakan perintah di bawah ini di Terminal:
$ sudo nginx -t
Anda akan melihat output di bawah ini.
Sekarang buat tautan simbolis antara situs yang tersedia dan yang diaktifkan situs:
$ ln -s /etc/nginx/sites-available/test.com /etc/nginx/sites-enabled/
Kemudian restart service Nginx untuk menerapkan perubahan konfigurasi. Gunakan perintah di bawah ini untuk melakukannya:
$ sudo systemctl restart nginx
Langkah 6: Uji SSL
Sekarang untuk menguji SSL, navigasikan ke alamat berikut:
https://domain -atau-alamat IP
Karena kami telah menyiapkan sertifikat yang ditandatangani sendiri, oleh karena itu kami akan melihat peringatan bahwa koneksi tidak aman. Halaman berikut muncul saat menggunakan browser Mozilla Firefox.
Klik Advanced tombol.
Klik Add Exception.
Lalu klik Confirm Security Exception.
Sekarang Anda akan melihat situs HTTPS Anda tetapi dengan tanda peringatan (kunci dengan tanda peringatan kuning) tentang keamanan situs web Anda.
Juga, periksa apakah pengalihan berfungsi dengan benar dengan mengakses domain atau alamat IP Anda menggunakan http.
http://domain -atau-alamat IP
Sekarang, jika situs Anda secara otomatis dialihkan ke HTTPS, ini berarti pengalihan berfungsi dengan benar. Untuk mengonfigurasi pengalihan secara permanen, edit file konfigurasi blok server menggunakan perintah di bawah ini di Terminal:
$ sudo nano /etc/nginx/sites-available/test.org
Sekarang ubah pengembaliannya 302 mengembalikan 301 dalam file dan kemudian simpan dan tutup.
Begitulah cara Anda dapat mengatur SSL untuk Nginx di sistem Debian 10. Kami telah menyiapkan sertifikat yang ditandatangani sendiri untuk demonstrasi. Jika Anda berada di lingkungan produksi, selalu gunakan sertifikat CA.