SSL (singkatan dari lapisan soket selamat) adalah protokol web yang menjadikan lalu lintas antara pelayan dan pelanggan selamat dengan mengenkripsi. Pelayan dan pelanggan menghantar trafik dengan selamat tanpa risiko komunikasi ditafsirkan oleh pihak ketiga. Ia juga membantu pelanggan untuk mengesahkan identiti laman web yang mereka berkomunikasi.
Dalam catatan ini, kami akan menerangkan cara menyediakan SSL untuk Nginx. Kami akan menunjukkan prosedur menggunakan sijil yang ditandatangani sendiri. Sijil yang ditandatangani sendiri hanya menyulitkan sambungan tetapi tidak mengesahkan identiti pelayan anda. Oleh itu, ia hanya boleh digunakan untuk persekitaran pengujian atau untuk perkhidmatan LAN dalaman. Untuk persekitaran pengeluaran, lebih baik menggunakan sijil yang ditandatangani oleh CA (pihak berkuasa sijil).
Pra-syarat
Untuk siaran ini, anda mesti mempunyai prasyarat berikut:
- Nginx sudah dipasang pada mesin anda
- Blok pelayan dikonfigurasikan untuk domain anda
- Pengguna dengan hak istimewa sudo
Prosedur yang dijelaskan di sini telah dilaksanakan pada Debian 10 (Buster) mesin.
Langkah 1: Menghasilkan Sijil Tandatangan Sendiri
Langkah pertama kami adalah menghasilkan sijil yang ditandatangani sendiri. Keluarkan arahan di bawah di Terminal untuk menghasilkan CSR (Permintaan Penandatanganan Sijil) 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 memberikan beberapa maklumat seperti nama negara, negara, lokasi, nama umum (nama domain atau alamat IP anda), dan alamat e-mel.
Dalam arahan di atas, OpenSSL akan membuat dua fail berikut:
- CSR: self-signed-nginx.crt di dalam / etc / ssl / cert / direktori
- Kunci: self-signed-nginx.kunci di dalam / etc / ssl / direktori peribadi
Sekarang buat dhparam.fail pem menggunakan arahan di bawah:
$ sudo openssl dhparam -out / etc / ssl / certs / dhparam.pem 2048Langkah 2: Mengkonfigurasi Nginx untuk Menggunakan SSL
Pada langkah sebelumnya, kami telah membuat CSR dan kunci. Sekarang dalam langkah ini, kita akan mengkonfigurasi Nginx untuk menggunakan SSL. Untuk ini, kami akan membuat coretan konfigurasi dan menambahkan maklumat mengenai fail sijil SSL dan lokasi utama kami.
Keluarkan arahan di bawah di Terminal untuk membuat coretan konfigurasi baru ditandatangani sendiri.fail conf di dalam / etc / nginx / coretan.
$ sudo nano / etc / nginx / snippets / ditandatangani sendiri.pengesahanDalam fail, tambahkan baris berikut:
ssl_certificate / etc / ssl / certs / selfsigned-nginx.crt;ssl_certificate_key / etc / ssl / private / selfsigned-nginx.kunci;
The ssl_certificate ditetapkan ke self-signed-nginx.crt (fail sijil) semasa ssl_certificate_key ditetapkan ke self-signed-nginx.kunci (fail utama).
Simpan dan tutup ditandatangani sendiri.pengesahan fail.
Sekarang kita akan membuat fail coretan yang lain ssl-params.pengesahan dan konfigurasikan beberapa tetapan SSL asas. Keluarkan arahan di bawah di Terminal untuk mengedit ssl-params.pengesahan fail:
$ sudo nano / etc / nginx / snippets / ssl-params.pengesahanTambahkan kandungan berikut ke fail:
ssl_protocols TLSv1.2;ssl_prefer_server_ciphers dihidupkan;
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-AAAAA-28A-ECA
ssl_ecdh_curve secp384r1;
ssl_session_timeout 10m;
ssl_session_cache dikongsi: SSL: 10m;
ssl_session_tickets dimatikan;
# ssl_stapling pada;
# ssl_stapling_verify on;
penyelesai 8.8.8.8 8.8.4.4 sah = 300-an;
resolver_timeout 5s;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode = blok";
Oleh kerana kami tidak menggunakan sijil bertanda CA, oleh itu kami telah mematikan stapel SSL. Sekiranya anda menggunakan sijil bertanda CA, lepaskan ssl_stapling kemasukan.
Langkah 3: Mengkonfigurasi Nginx untuk Menggunakan SSL
Sekarang kita akan membuka fail konfigurasi blok pelayan Nginx untuk membuat beberapa konfigurasi. Dalam langkah ini, kami akan menganggap anda telah menyiapkan blok pelayan, yang akan serupa dengan ini:
pelayandengar 80;
dengar [::]: 80;
root / var / www / ujian.org / html;
indeks indeks.indeks html.indeks htm.nginx-debian.html;
ujian nama pelayan.org www.ujian.org;
lokasi /
cuba_files $ uri $ uri / = 404;
Untuk membuka fail konfigurasi blok pelayan Nginx, gunakan arahan di bawah:
$ sudo nano / etc / nginx / sites-available / test.orgSekarang ubah suai yang ada pelayan blok untuk menjadikannya seperti ini:
pelayandengar 443 ssl;
dengar [::]: 443 ssl;
sertakan coretan / ditandatangani sendiri.conf;
sertakan coretan / ssl-param.conf;
root / var / www / ujian.org / html;
indeks indeks.indeks html.indeks htm.nginx-debian.html;
ujian nama pelayan.org www.ujian.org;
Dalam konfigurasi di atas, kami juga telah menambahkan coretan SSL ditandatangani sendiri.pengesahan dan ssl-params.pengesahan yang telah kita konfigurasikan lebih awal.
Seterusnya, tambah a pelayan kedua sekatan.
pelayandengar 80;
dengar [::]: 80;
ujian nama pelayan.org www.ujian.org;
pulangkan 302 https: // $ pelayan_nama $ request_uri;
Dalam konfigurasi di atas, pulangan 302 mengarahkan HTTP ke HTTPS.
Nota: Pastikan untuk menggantikan ujian.org dengan nama domain anda sendiri. Sekarang simpan dan tutup fail.
Langkah 4: Benarkan Trafik SSL melalui Firewall
Sekiranya firewall diaktifkan pada sistem anda, anda harus membenarkan trafik SSL melaluinya. Nginx memberi anda tiga profil berbeza dengan ufw. Anda boleh melihatnya menggunakan arahan di bawah di Terminal:
senarai aplikasi $ sudo ufwAnda akan melihat output berikut dengan tiga profil untuk lalu lintas Nginx.
Anda perlu membenarkan profil "Nginx Full" di firewall. Untuk melakukannya, gunakan arahan di bawah:
$ sudo ufw membenarkan 'Nginx Full'Untuk mengesahkan sama ada profil telah dibenarkan di firewall, gunakan arahan di bawah:
status $ sudo ufwLangkah 5: Uji fail konfigurasi NGINX
Sekarang uji fail konfigurasi Nginx menggunakan arahan di bawah di Terminal:
$ sudo nginx -tAnda harus melihat output di bawah.
Sekarang buat pautan simbolik antara laman web yang tersedia dan didayakan oleh laman web:
Kemudian mulakan semula perkhidmatan Nginx untuk menerapkan perubahan konfigurasi. Gunakan arahan di bawah untuk melakukannya:
$ sudo systemctl mulakan semula nginxLangkah 6: Uji SSL
Sekarang untuk menguji SSL, arahkan ke alamat berikut:
https: // domain-atau-alamat IP
Oleh kerana kami telah menyediakan sijil yang ditandatangani sendiri, oleh itu kami akan melihat amaran bahawa sambungannya tidak selamat. Halaman berikut muncul semasa menggunakan penyemak imbas Mozilla Firefox.
Klik Mahir butang.
Klik Tambah Pengecualian.
Kemudian klik Sahkan Pengecualian Keselamatan.
Sekarang anda akan melihat laman HTTPS anda tetapi dengan tanda amaran (kunci dengan tanda amaran kuning) mengenai keselamatan laman web anda.
Juga, periksa apakah pengalihan berfungsi dengan betul dengan mengakses domain atau alamat IP anda menggunakan http.
http: // alamat-domain-atau-IP
Sekarang, jika laman web anda mengalihkan ke HTTPS secara automatik, ini bermaksud pengalihan berfungsi dengan betul. Untuk mengkonfigurasi pengalihan secara kekal, edit fail konfigurasi blok pelayan menggunakan perintah di bawah di Terminal:
$ sudo nano / etc / nginx / sites-available / test.orgSekarang ubah pulangan 302 untuk memulangkan 301 dalam fail dan kemudian simpan dan tutup.
Itulah cara anda boleh menyediakan SSL untuk Nginx dalam sistem Debian 10. Kami telah menyediakan sijil yang ditandatangani sendiri untuk demonstrasi. Sekiranya anda berada dalam persekitaran pengeluaran, selalu dapatkan sijil CA.