GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Membuat Sertifikat SSL yang Ditandatangani Sendiri untuk Nginx di Ubuntu 18.04

SSL adalah singkatan dari "Secure Sockets Layer", yang merupakan teknologi keamanan standar yang dimaksudkan untuk membuat tautan terenkripsi antara server Web dan browser Web. Tautan ini memastikan bahwa semua informasi yang diteruskan antara server dan browser tetap pribadi dan aman. Tujuan utama dari sertifikat SSL adalah untuk memastikan keamanan situs web dan mengenkripsi data yang ditransfer antara klien dan browser untuk mencegah pencurian informasi sensitif seperti detail kartu kredit, nomor akun, dan kata sandi, dll.

Sertifikat yang ditandatangani sendiri adalah sertifikat yang ditandatangani oleh orang yang membuatnya, bukan oleh otoritas sertifikat tepercaya (CA). Sebagian besar klien dan organisasi tergoda untuk menggunakan Sertifikat SSL yang ditandatangani sendiri daripada yang dikeluarkan dan diverifikasi oleh Otoritas Sertifikat tepercaya terutama karena perbedaan biaya. Tapi itu masih menawarkan tingkat enkripsi yang sama sampai batas tertentu.

Pada artikel ini, saya akan menjelaskan cara membuat sertifikat SSL yang Ditandatangani Sendiri di server Ubuntu 18.04 dengan server Web Nginx.

Prasyarat

Server yang dikonfigurasi dengan baik dengan hak akses root dan perpustakaan OpenSSL. Pustaka OpenSSL diperlukan untuk membuat sertifikat Anda sendiri. Jalankan perintah berikut di server ubuntu Anda untuk melihat apakah Anda sudah menginstal OpenSSL.

# which openssl
/usr/bin/openssl

Jika perintah mana yang tidak mengembalikan biner, maka kita perlu menginstalnya menggunakan perintah:

#apt install openssl

Membuat Sertifikat yang Ditandatangani Sendiri

SSL terdiri dari dua bagian, satu adalah kunci pribadi dan sertifikat publik lainnya. Kunci SSL dirahasiakan di server yang dibatasi untuk pengguna root. Ini sebenarnya digunakan untuk mengenkripsi konten yang dikirim ke klien. Sertifikat SSL publik dibagikan dengan siapa pun yang meminta konten. Ini dapat digunakan untuk mendekripsi konten yang ditandatangani oleh kunci SSL pribadi terkait. Di sini, saya menggunakan perintah ini untuk menghasilkan sertifikat yang ditandatangani sendiri yaitu example.com.crt dan kunci pribadi example.com.key (di sini saya menggunakan example.com.pem sebagai nama file) menggunakan alat OpenSSL.

#openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/example.com.key -out /etc/ssl/certs/example.com.pem

Silakan lihat detail setiap opsi di bawah ini:

  • req:Sub-perintah ini digunakan untuk membuat sertifikat X.509 baru. "X.509" adalah standar infrastruktur kunci publik yang dipatuhi SSL dan TLS untuk manajemen kunci dan sertifikatnya.
  • -x509:Ini selanjutnya memodifikasi subperintah sebelumnya dengan memberi tahu utilitas bahwa kita ingin membuat sertifikat yang ditandatangani sendiri.
  • -nodes:Ini digunakan untuk melewati opsi frasa sandi untuk mengamankan sertifikat kami.
  • -hari 365:Opsi ini menetapkan validitas sertifikat dalam hari. Kami menetapkannya selama satu tahun di sini.
  • -newkey rsa:2048:Ini menetapkan bahwa kita ingin membuat kunci RSA baru dengan panjang 2048 bit bersama dengan sertifikatnya.
  • -keyout:Opsi ini memberi tahu OpenSSL tempat menempatkan file kunci pribadi yang dihasilkan.
  • -out:Opsi ini memberi tahu OpenSSL tempat menempatkan sertifikat yang dihasilkan.

Selama eksekusi perintah ini, ini akan meminta kami untuk memberikan detail domain/klien untuk membuat Permintaan Penandatanganan Sertifikat (CSR). Anda dapat memberikan detail ini sesuai kebutuhan.

Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:Victoria
Locality Name (eg, city) []:Melbourne
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Linoxide LLC
Organizational Unit Name (eg, section) []:Web
Common Name (e.g. server FQDN or YOUR name) []:example.com
Email Address []:[email protected]

Sekarang kami memiliki sertifikat yang ditandatangani sendiri dan kunci pribadi kami yang baru dibuat adalah lokasi ini yaitu:/etc/ssl/certs/example.com.pem dan /etc/ssl/private/example.com.key . Selanjutnya, kita harus membuat grup Diffie-Hellman yang kuat, yang digunakan dalam menegosiasikan Kerahasiaan Penerusan Sempurna dengan klien. Anda dapat menjalankan perintah ini untuk membuatnya.

#openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Ini mungkin membutuhkan waktu untuk diselesaikan, tetapi setelah selesai, kami akan memiliki grup DH yang kuat di /etc/ssl/certs/dhparam.pem yang dapat kita gunakan dalam konfigurasi kita.

Mengonfigurasi Nginx untuk menggunakan Sertifikat yang ditandatangani sendiri

Sebelum kita mulai, kita perlu memastikan bahwa server web Nginx diinstal pada server Ubuntu 18.04 kita. Jika belum diinstal, Anda dapat menginstalnya dengan menggunakan perintah sederhana ini:

#apt install nginx

Saya telah menginstal dan mengaktifkan layanan ini di server saya.

# nginx -v
nginx version: nginx/1.14.0 (Ubuntu)

#systemctl enable nginx
#systemctl start nginx
#systemctl status nginx

Berikutnya. kita dapat mengkonfigurasi Nginx untuk menggunakan SSL. Saya akan menjelaskannya dalam tiga langkah:

  1. Membuat konfigurasi cuplikan dengan detail sertifikat SSL yang dihasilkan.
  2. Membuat konfigurasi cuplikan untuk mempertahankan setelan SSL yang Kuat dan Aman untuk mengatasi kemungkinan kerentanan SSL.
  3. Memperbarui host virtual domain dengan konfigurasi cuplikan di atas untuk mengaktifkan SSL

Langkah 1:Membuat konfigurasi cuplikan dengan detail sertifikat SSL

Mari buat file konfigurasi snippet baru yaitu "self-signed.conf" untuk mengarahkan detail Sertifikat yang Ditandatangani Sendiri yang kita buat di dalam folder snippet Nginx:/etc/nginx/snippets/ seperti di bawah ini:

# cat /etc/nginx/snippets/self-signed.conf
# Self signed certificates generated by the ssl-cert package
# Don't use them in a production server!

ssl_certificate /etc/ssl/certs/example.com.pem;
ssl_certificate_key /etc/ssl/private/example.com.key;

Di sini kita perlu menentukan jalur sertifikat yang dihasilkan:/etc/ssl/certs/example.com.pem dan Jalur kunci:/etc/ssl/private/example.com.key untuk arahan seperti yang disebutkan di atas.

Langkah 2:Membuat konfigurasi cuplikan untuk mempertahankan setelan SSL yang Kuat dan Aman untuk mengatasi kemungkinan kerentanan SSL

Kedua, kita perlu mempertahankan konfigurasi server SSL yang berfungsi penuh dan kuat yang melindungi server kita dari semua kemungkinan kerentanan SSL. Saya telah mengonfigurasi Nginx saya dengan rangkaian sandi SSL yang kuat dan mengaktifkan beberapa fitur lanjutan untuk memastikan keamanan server. Semua parameter ini disertakan dalam file:/etc/nginx/snippets/ssl-params.conf

cat /etc/nginx/snippets/ssl-params.conf
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling off;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;

ssl_dhparam /etc/ssl/certs/dhparam.pem;

Anda bisa mendapatkan rekomendasi Nginx Cipher ini di daftar Cipher. Parameter ini akan digunakan dalam konfigurasi Nginx di masa mendatang untuk SSL. Seperti yang Anda lihat, kami telah menyetel ssl_dhparam pengaturan untuk menunjuk ke file Diffie-Hellman yang kami buat sebelumnya di sini. Karena kami menggunakan sertifikat yang ditandatangani sendiri, SSL stapling tidak akan digunakan. Oleh karena itu, saya telah mematikannya off atau Nginx hanya akan menampilkan peringatan seperti ini nginx: [warn] "ssl_stapling" ignored, issuer certificate not found for certificate . Setelah melakukan perubahan ini, Anda dapat menyimpan konfigurasi dan keluar.

Langkah 3:Memperbarui host virtual domain dengan konfigurasi cuplikan di atas untuk mengaktifkan SSL

Kami siap dengan konfigurasi cuplikan yang diperlukan, sekarang kami dapat menyertakannya di host virtual domain kami dan mengaktifkan SSL. Di sini, di artikel ini, saya menggunakan file konfigurasi Nginx default yang terletak di /etc/nginx/sites-available/default . Saya telah memodifikasi file ini untuk mengaktifkan SSL dan mengambil sertifikat yang ditandatangani sendiri. Silakan lihat bagian yang dimodifikasi di bawah dalam konfigurasi ini:

cat /etc/nginx/sites-available/default

#
server {
listen 80 default_server;
listen [::]:80 default_server;

# SSL configuration

listen 443 ssl default_server;
listen [::]:443 ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
include snippets/self-signed.conf;
include snippets/ssl-params.conf;

Sekarang kita dapat menyimpan konfigurasi ini dan memulai ulang layanan Nginx untuk membuat perubahan ini efektif.

# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
#systemctl restart nginx

Pengujian

Ini adalah langkah terakhir kami, di mana kami dapat membuka browser kami dan mencoba mengakses IP server kami di URL>> https://Server_IP or Hostname . Ini akan menampilkan peringatan keamanan karena kami menggunakan sertifikat yang ditandatangani sendiri, Anda dapat mengabaikan peringatan itu dan klik untuk mengonfirmasi keamanan untuk melanjutkan lebih jauh seperti yang ditunjukkan pada cuplikan.

Baca Juga :

  • Mkcert - Buat Sertifikat SSL untuk Pengembangan Lokal di Linux
  • Cara Menginstal Let's Encrypt SSL Certificates di Ubuntu 18.04
  • Cara Menyiapkan NGINX sebagai Proksi Terbalik Menggunakan Docker

Itu saja! kami telah berhasil mengonfigurasi Nginx dengan sertifikat yang ditandatangani sendiri menggunakan metode enkripsi yang kuat untuk koneksi klien yang aman. Saya harap artikel ini bermanfaat bagi Anda! Silakan kirim komentar dan saran Anda yang berharga tentang ini.


Ubuntu
  1. Cara menginstal sertifikat SSL yang ditandatangani sendiri di cPanel

  2. Bagaimana Cara Menambahkan Sertifikat/Kunci Klien SSL Secara Global Di Ubuntu?

  3. Izin untuk kunci SSL?

  1. Cara Membuat Drive USB Ubuntu yang Dapat Di-boot untuk Mac di OS X

  2. Cara Membuat Apache 2 Berhenti Meminta Kata Sandi Untuk Sertifikat SSL?

  3. Cara membuat Sertifikat SSL yang Ditandatangani Sendiri di Ubuntu 18.04

  1. Cara Memasang Sertifikat SSL di NGINX

  2. Cara Membuat Sertifikat yang Ditandatangani Sendiri untuk Kubernetes

  3. Cara membuat VPN di Ubuntu 20.04 menggunakan Wireguard