Cara Mengabaikan Kesalahan Sertifikat SSL dengan cURL: Panduan Langkah-demi-Langkah

Komentar: 0

Saat melakukan permintaan HTTP menggunakan cURL, terkadang ada masalah dengan verifikasi sertifikat SSL. Hal ini dapat terjadi ketika sertifikat server yang ditandatangani sendiri digunakan, atau jika sudah kedaluwarsa. Dalam keadaan seperti itu, cURL secara default menolak koneksi untuk melindungi pengguna dari risiko yang mungkin terjadi. Namun, hal ini dapat menghalangi proses selama pengujian API, bekerja pada jaringan tertutup, atau menggunakan layanan lokal. Oleh karena itu, kita perlu mengetahui dalam keadaan apa cURL mengabaikan SSL dan bagaimana cara mengimplementasikannya.

Artikel ini akan menjelaskan secara detail bagaimana cara mengabaikan sertifikat SSL di cURL, perintah-perintah spesifik yang perlu dijalankan, dan kemungkinan masalah yang berkaitan dengan keamanan.

unnamed.jpg

Apa itu cURL dan SSL?

cURL (Client URL) adalah sebuah proyek perangkat lunak yang menyediakan baris perintah dan pustaka untuk mentransfer data menggunakan berbagai protokol. Alat ini sangat berguna untuk mengotomatisasi permintaan, pengujian API, atau pengambilan informasi dari berbagai sumber daya web karena dapat digunakan dengan berbagai jenis jaringan.

SSL (Secure Sockets Layer) adalah suatu bentuk teknologi enkripsi yang mengamankan transmisi data melalui Internet. Sertifikat ini adalah dokumen yang membuktikan bahwa situs web tertentu adalah asli dan membuat koneksi yang aman antara pengguna dan server. Sertifikat server yang ditandatangani sendiri, kadaluarsa, atau tidak valid akan menyebabkan pemblokiran saat mengoperasikan cURL.

Untuk menghindari tantangan seperti itu, lebih baik cURL menonaktifkan SSL, dengan demikian, melakukan permintaan cURL akan memiliki tingkat keberhasilan yang lebih tinggi. Metode pengujian ini sangat berguna, tetapi bisa berbahaya dari segi keamanan.

cURL, curl, atau Curl: Apa Bedanya?

Nama resmi alat ini adalah cURL, huruf pertama dari kata tersebut adalah huruf kecil dan sisanya adalah huruf besar. Dalam dokumen, artikel, dan kode, Anda akan menemukan beberapa bentuk lain:

  • curl (semua huruf kecil) - Ini adalah cara sebagian besar pengembang cenderung menuliskannya dalam kode dan baris perintah.
  • Curl (huruf besar C) - Ini kadang-kadang digunakan dalam dokumen tidak resmi tetapi tidak benar.

Terlepas dari ejaannya, cURL selalu cURL. Ini adalah alat lintas platform dan baris perintah untuk mentransfer data dengan sintaks URL. Kebanyakan orang dalam pengembangan web, administrasi sistem, dan DevOps menggunakannya untuk membuat permintaan HTTP, menguji API, dan melakukan interaksi otomatisasi server.

Mengapa Harus Menonaktifkan Verifikasi SSL?

Biasanya, utilitas transfer data memvalidasi sertifikat yang muncul di layar pengguna untuk menggagalkan situs palsu dan serangan. Namun, ada beberapa skenario ketika cURL mengabaikan pemeriksaan sertifikat. Mari kita lihat kapan kejadian itu muncul:

  • Sertifikat yang diterbitkan sendiri sedang digunakan dengan server pengujian atau lokal. Saat menguji API atau aplikasi, pengembang sering kali membuat sertifikat yang ditandatangani sendiri yang tidak disahkan oleh Otoritas Sertifikasi (CA) resmi.
  • Akses karyawan ke layanan internal perusahaan. Server internal organisasi biasanya memiliki sertifikat yang tidak tepercaya. Jika akses otomatis ke sumber daya tersebut wajib dilakukan, menonaktifkan pemeriksaan sertifikat adalah solusi sementara yang optimal.
  • Situs tertentu memiliki sertifikat server yang sudah kedaluwarsa atau tidak valid. Jika sangat penting untuk mengambil informasi dari sumber daya seperti itu, validasi dapat dimatikan untuk sementara waktu tanpa pengguna mengalami kesalahan sertifikat tertentu. Dalam hal ini cURL mengabaikan kesalahan SSL dan semuanya bekerja dengan baik.
  • Menonaktifkan pengecekan membantu menghindari kegagalan pada skrip yang membutuhkan otomatisasi permintaan jaringan. Ketika sebuah skrip secara konsisten mengirimkan permintaan ke server yang memiliki sertifikat yang salah, pengecekan perlu dinonaktifkan.

Meskipun pengecekan merupakan faktor penting, menonaktifkannya sepenuhnya dapat menimbulkan masalah dan risiko. Kita akan membahasnya selanjutnya.

Risiko Keamanan Menonaktifkan SSL

Ketika cURL mengabaikan sertifikat, itu berarti koneksi dapat dieksploitasi melalui berbagai serangan keamanan, dan ini sangat penting ketika informasi sensitif termasuk kata sandi, token, atau bahkan data pembayaran terlibat.

Ancaman utama:

  • Man In The Middle Attack (MITM) - sebuah teknik di mana informasi antara pengguna dan server disadap dan datanya diubah atau diganti. Hal ini menimbulkan risiko yang lebih besar ketika tidak ada yang memverifikasi karena menjadi terlalu mudah untuk menerapkan serangan jahat. Sebagai contoh, sebuah halaman login dapat diganti dengan yang palsu sehingga penyerang dapat dengan mudah mengambil kredensial.
  • cURL tidak dapat memverifikasi sertifikat server, sehingga membatalkannya. Dengan demikian, tidak ada cara untuk memastikan bahwa simpul yang diinginkan adalah simpul yang terhubung, dan memungkinkan penggantian situs dengan menyamar sebagai sumber daya tepercaya.
  • Jika selama pengujian, verifikasi dinonaktifkan dan kode tersebut dibawa ke lingkungan produksi, maka kemungkinan kebocoran atau bahkan serangan brute force yang membahayakan informasi rahasia akan meningkat.

Jika diperlukan cURL mengabaikan kesalahan SSL, maka sangat penting untuk melihat sertifikat yang ditandatangani sendiri:

  • Lewati verifikasi hanya di lingkungan pengujian, dan hindari di lingkungan produksi;
  • Jangan mengirimkan informasi rahasia melalui koneksi yang tidak terenkripsi;
  • Tambahkan sertifikat yang ditandatangani sendiri ke tepercaya secara manual;
  • Pantau kode, tidak termasuk kesalahan konfigurasi, untuk memastikan verifikasi tetap ada dalam kode produksi.

Pada blok berikutnya, kita akan menganalisis secara detail proses yang dilakukan pada baris perintah untuk menonaktifkan verifikasi sertifikat.

Cara Mengatasi Kesalahan SSL dengan cURL

Untuk membuat cURL mengabaikan SSL, Anda harus menyertakan parameter khusus yang menangguhkan verifikasi autentikasi. Seperti yang telah disebutkan sebelumnya, praktik semacam itu hanya dapat digunakan dalam lingkungan yang aman.

Metode yang paling efektif untuk mengurangi kesalahan sertifikat situs yang tidak valid adalah dengan mengonfigurasi spoof verifikasi sementara secara manual. Hal ini dapat dilakukan dengan parameter berikut:

  • -k atau --insecure-untuk digunakan menyambung ke situs yang sertifikat servernya ternyata tidak valid;
  • --cacert-untuk menentukan lokasi di mana berkas sertifikat pengguna disimpan.

Berikut ini adalah contoh pemanggilan cURL yang mengabaikan verifikasi sertifikat:


curl -k https://example.com

Ini akan memungkinkan panggilan cURL tetap berjalan meskipun dengan sertifikat server yang sudah kedaluwarsa.

Jika Anda ingin mengirim data (seperti dalam permintaan POST):


curl -k -X POST -H "Content-Type: application/x-www-form-urlencoded" -d "param=value" https://example.com/api

Untuk keamanan maksimal, Anda akan langsung memilih direktori tempat file berada.


curl --cacert /path/to/cert.pem https://example.com

Menonaktifkan Verifikasi SSL di Skrip Anda

Jika permintaan dimaksudkan untuk diotomatisasi melalui baris perintah dan kehadiran pengguna seharusnya tidak diperlukan, maka akan sangat bermanfaat untuk menonaktifkan pemeriksaan sertifikat dalam skenario seperti itu.

Berikut ini adalah contoh di Bash, bagaimana cURL mengabaikan SSL:


#!/bin/bash
URL="https://example.com"
DATA=$(curl -k $URL)
echo "Server response: $DATA"

Dengan Python, Anda dapat menggunakan modul permintaan dengan verifikasi yang disetel ke False:


import requests
url = "https://example.com"
response = requests.get(url, verify=False)
print(response.text)

Ketika menjalankan perintah ini, Python akan memberikan peringatan mengenai koneksi yang tidak aman. Selain itu, Anda perlu memastikan Anda menulis kode untuk menonaktifkan peringatan yang muncul jika situs memiliki sertifikat server yang tidak valid:


import requests import urllib3 

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) 

url = "https://example.com"
response = requests.get(url, verify=False)
print(response.text)

Dan sekarang untuk PHP dengan cURL:


$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://example.com");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
echo $output;

Tabel di bawah ini mencantumkan metode yang paling umum untuk mengabaikan pemeriksaan SSL, penggunaannya, dan kemungkinan risikonya.

Metode Perintah / Parameter Kapan menggunakan Risiko
Penonaktifan lengkap SSL dan verifikasi nama host curl -k / --insecure Uji API, layanan lokal Risiko tinggi MITM
Menggunakan sertifikat khusus curl --cacert /path/to/cert.pem Jika Anda memiliki sertifikat Anda sendiri Lebih aman, tetapi membutuhkan pengaturan
Hanya menonaktifkan SSL dalam kode CURLOPT_SSL_VERIFYPEER=false Pengujian sementara Berbahaya jika tetap diproduksi

Kesimpulan

Sertifikat server yang tidak berfungsi dengan baik akan menimbulkan lebih banyak masalah daripada ketika dioperasikan dengan cURL. Sertifikat menjamin keamanan bagi pengguna selama transfer data. Dengan demikian, menonaktifkan verifikasi adalah pilihan terakhir ketika seseorang menemukan kesalahan pada cURL. Berdasarkan penyebab kesalahan, ada pendekatan lain yang tidak terlalu ekstrem, seperti memperbarui dokumen, menambahkan ke wilayah tepercaya, atau hanya menukarnya dengan yang benar.

Tanpa pemeriksaan SSL, koneksi akan menjadi tidak sehat dan mudah disalahgunakan oleh pengguna lain. Pendekatan ini hanya dapat diterima dalam lingkungan yang terkendali seperti ketika seseorang melakukan pengujian, atau ketika layanan bersifat eksternal. Dalam keadaan normal ketika sertifikat server yang tidak valid ditampilkan, sangat penting bahwa klausa ini tidak diatur dalam kode kerja karena penyembunyian data dan lubang keamanan lainnya akan ditampilkan.

Komentar:

0 komentar