SSL (singkatan dari secure socket layer) adalah protokol web yang membuat lalu lintas antara server dan klien aman dengan mengenkripsinya. Server dan klien mengirimkan lalu lintas dengan aman tanpa risiko komunikasi ditafsirkan oleh pihak ketiga. Ini juga membantu klien untuk memverifikasi identitas situs web yang mereka komunikasikan.
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 layanan LAN internal. Untuk lingkungan produksi, lebih baik menggunakan sertifikat yang ditandatangani oleh CA (otoritas sertifikat).
Prasyarat
Untuk posting ini, Anda harus memiliki prasyarat berikut:
- Nginx sudah terinstal di mesin Anda
- Blok server dikonfigurasi untuk domain Anda
- Pengguna dengan hak istimewa sudo
Prosedur yang dijelaskan di sini telah dilakukan pada Debian 10 (Buster) mesin.
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.crtAnda 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/ direktori
- Kunci: selfsigned-nginx.kunci dalam /etc/ssl/direktori pribadi
Sekarang buat dhparam.file pem menggunakan perintah di bawah ini:
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048Langkah 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 ditandatangani sendiri.file conf dalam /etc/nginx/snippet.
$ sudo nano /etc/nginx/snippets/self-signed.konfDalam file tersebut, tambahkan baris berikut:
ssl_certificate /etc/ssl/certs/selfsigned-nginx.crt;ssl_certificate_key /etc/ssl/private/selfsigned-nginx.kunci;
Itu ssl_sertifikat diatur ke selfsigned-nginx.crt (berkas sertifikat) sedangkan ssl_certificate_key diatur ke selfsigned-nginx.kunci (berkas kunci).
Simpan dan tutup ditandatangani sendiri.konf mengajukan.
Sekarang kita akan membuat file snippet lain ssl-params.konf dan konfigurasikan beberapa pengaturan SSL dasar. Keluarkan perintah di bawah ini di Terminal untuk mengedit ssl-params.konf mengajukan:
$ sudo nano /etc/nginx/snippets/ssl-params.konfTambahkan konten berikut ke file:
ssl_protocols TLSv1.2;ssl_prefer_server_ciphers aktif;
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;
ssl_ecdh_curve secp384r1;
ssl_session_timeout 10m;
ssl_session_cache dibagikan:SSL:10m;
ssl_session_tickets mati;
# ssl_stapel aktif;
# ssl_stapling_verifikasi aktif;
penyelesai 8.8.8.8 8.8.4.4 valid=300 detik;
resolver_timeout 5 detik;
add_header X-Frame-Options DITOLAK;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
Karena kami tidak menggunakan sertifikat yang ditandatangani CA, oleh karena itu kami telah menonaktifkan stapel SSL. Jika Anda menggunakan sertifikat yang ditandatangani CA, batalkan komentar pada ssl_stapel masuk.
Langkah 3: Mengonfigurasi Nginx untuk Menggunakan SSL
Sekarang kita akan membuka file konfigurasi blok server Nginx untuk membuat beberapa konfigurasi. Pada langkah ini, kami akan menganggap Anda telah menyiapkan blok server, yang akan mirip dengan ini:
servermendengarkan 80;
dengarkan [::]:80;
root /var/www/test.org/html;
indeks indeks.indeks html.indeks htm.nginx-debian.html;
tes nama_server.org www.uji.organisasi;
lokasi /
try_files $uri $uri/ =404;
Untuk membuka file konfigurasi blok server Nginx, gunakan perintah di bawah ini:
$ sudo nano /etc/nginx/sites-available/test.organisasiSekarang ubah yang sudah ada server blok agar terlihat seperti ini:
serverdengarkan 443 ssl;
dengarkan [::]:443 ssl;
sertakan cuplikan/tanda tangan sendiri.konf;
sertakan cuplikan/ssl-params.konf;
root /var/www/test.org/html;
indeks indeks.indeks html.indeks htm.nginx-debian.html;
tes nama_server.org www.uji.organisasi;
Dalam konfigurasi di atas, kami juga telah menambahkan cuplikan SSL ditandatangani sendiri.konf dan ssl-params.konf yang telah kami konfigurasikan sebelumnya.
Selanjutnya, tambahkan server kedua blok.
servermendengarkan 80;
dengarkan [::]:80;
tes nama_server.org www.uji.organisasi;
kembali 302 https://$server_name$request_uri;
Dalam konfigurasi di atas, kembali 302 mengalihkan HTTP ke HTTPS.
Catatan: Pastikan untuk mengganti tes.org dengan nama domain Anda sendiri. Sekarang simpan dan tutup file.
Langkah 4: Izinkan Lalu Lintas SSL melalui Firewall
Jika firewall diaktifkan di sistem Anda, Anda harus mengizinkan lalu lintas SSL melaluinya. Nginx memberi Anda tiga profil berbeda dengan ufw. Anda dapat melihatnya menggunakan perintah di bawah ini di Terminal:
$ sudo ufw daftar aplikasiAnda akan melihat output berikut dengan tiga profil untuk lalu lintas Nginx.
Anda harus mengizinkan profil "Nginx Full" di firewall. Untuk melakukannya, gunakan perintah di bawah ini:
$ sudo ufw izinkan 'Nginx Penuh'Untuk memverifikasi apakah profil telah diizinkan di firewall, gunakan perintah di bawah ini:
$ sudo ufw statusLangkah 5: Uji file konfigurasi NGINX
Sekarang uji file konfigurasi Nginx menggunakan perintah di bawah ini di Terminal:
$ sudo nginx -tAnda akan melihat output di bawah ini.
Sekarang buat tautan simbolis antara situs yang tersedia dan yang diaktifkan situs:
Kemudian restart layanan Nginx untuk menerapkan perubahan konfigurasi. Gunakan perintah di bawah ini untuk melakukannya:
$ sudo systemctl restart nginxLangkah 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 Maju tombol.
Klik Tambahkan Pengecualian.
Lalu klik Konfirmasi Pengecualian Keamanan.
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.organisasiSekarang ubah pengembaliannya 302 mengembalikan 301 dalam file lalu simpan dan tutup close.
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.