cURL کے ساتھ SSL سرٹیفکیٹ کی غلطیوں کو نظرانداز کرنے کا طریقہ: ایک قدم بہ قدم گائیڈ

تبصرے: 0

جب cURL کا استعمال کرتے ہوئے HTTP درخواستیں کی جاتی ہیں، کبھی کبھار SSL سرٹیفکیٹ کی تصدیق میں مسئلہ آتا ہے۔ یہ اس وقت ہو سکتا ہے جب ایک خود دستخط شدہ سرور سرٹیفکیٹ استعمال کیا جائے یا اگر یہ ختم ہو چکا ہو۔ ایسی صورتوں میں، cURL ڈیفالٹ کے طور پر کنکشن کو رد کر دیتا ہے تاکہ صارف کو ممکنہ خطرات سے بچایا جا سکے۔ تاہم، یہ API ٹیسٹنگ، بند نیٹ ورک پر کام کرتے ہوئے یا مقامی سروسز کا استعمال کرتے وقت عمل میں رکاوٹ ڈال سکتا ہے۔ اسی لیے ہمیں یہ جاننا ضروری ہے کہ کب cURL SSL کو نظرانداز کرتا ہے اور اسے کس طرح نافذ کیا جا سکتا ہے۔

اس آرٹیکل میں ہم تفصیل سے بتائیں گے کہ cURL میں SSL سرٹیفکیٹ کو کس طرح نظرانداز کیا جائے، وہ مخصوص کمانڈز جو عمل میں لانی ہوں گی، اور سیکیورٹی سے متعلق ممکنہ تشویشات۔

unnamed.jpg

cURL اور SSL کیا ہیں؟

cURL (Client URL) ایک سافٹ ویئر پروجیکٹ ہے جو مختلف پروٹوکولز کے ذریعے ڈیٹا منتقل کرنے کے لیے کمانڈ لائن اور لائبریری فراہم کرتا ہے۔ یہ ٹول درخواستوں کو خودکار بنانے، API ٹیسٹنگ کرنے یا مختلف ویب وسائل سے معلومات حاصل کرنے کے لیے بہت مفید ہے کیونکہ یہ مختلف نیٹ ورک اقسام کے ساتھ کام کرتا ہے۔

SSL (Secure Sockets Layer) ایک قسم کی انکرپشن ٹیکنالوجی ہے جو انٹرنیٹ پر ڈیٹا کی منتقلی کو محفوظ بناتی ہے۔ یہ سرٹیفکیٹ ایک دستاویز ہے جو ثابت کرتا ہے کہ کوئی خاص ویب سائٹ مستند ہے اور صارف اور سرور کے درمیان ایک محفوظ کنکشن قائم کرتا ہے۔ خود دستخط شدہ، ختم شدہ، یا غلط سرور سرٹیفکیٹ cURL کے آپریشن کے دوران بلاک کا سبب بنتے ہیں۔

ایسی چیلنجز سے بچنے کے لیے، بہتر ہے کہ cURL میں SSL کو غیر فعال کر دیا جائے، اس طرح cURL کی درخواستیں زیادہ کامیاب ہوں گی۔ یہ طریقہ ٹیسٹنگ کے لیے بہت مفید ہے، لیکن سیکیورٹی کے لحاظ سے خطرناک ہو سکتا ہے۔

cURL، curl، یا Curl: ان میں کیا فرق ہے؟

اس ٹول کا سرکاری نام cURL ہے، اس لفظ کا پہلا حرف چھوٹا ہے اور باقی بڑے ہیں۔ دستاویزات، مضامین اور کوڈز میں آپ کو اس کے دیگر کئی شکلیں ملیں گی:

  • curl (تمام چھوٹے) - اس طرح زیادہ تر ڈویلپرز اسے کوڈ اور کمانڈ لائنوں میں لکھتے ہیں۔
  • Curl (C کا بڑا حرف) – یہ کبھی کبھار غیر رسمی دستاویزات میں استعمال کیا جاتا ہے لیکن یہ غلط ہے۔

املا کی پرواہ کیے بغیر، cURL ہمیشہ cURL ہی ہوتا ہے۔ یہ ایک کراس پلیٹ فارم اور کمانڈ لائن ٹول ہے جو URL کی نحو کے ساتھ ڈیٹا منتقل کرنے کے لیے استعمال ہوتا ہے۔ ویب ڈویلپمنٹ، سسٹم ایڈمنسٹریشن، اور DevOps میں بیشتر لوگ اسے HTTP درخواستیں کرنے، APIs ٹیسٹ کرنے اور سرور آٹومیشن کے تعاملات انجام دینے کے لیے استعمال کرتے ہیں۔

SSL تصدیق کو کیوں غیر فعال کریں؟

عام طور پر، ڈیٹا ٹرانسفر یوٹیلیٹی وہ سرٹیفکیٹ ویلیڈیٹ کرتی ہے جو صارف کے اسکرین پر ظاہر ہوتے ہیں تاکہ جعلی سائٹس اور حملوں کو روکا جا سکے۔ تاہم، کچھ صورتوں میں، cURL سرٹیفکیٹ چیک کو نظرانداز کر دیتا ہے۔ آئیے دیکھتے ہیں کہ یہ حالات کب پیش آتے ہیں:

  • ٹیسٹ یا مقامی سرورز کے ساتھ استعمال ہونے والے خود دستخط شدہ سرٹیفکیٹس۔ API یا ایپلیکیشنز کی جانچ کرتے وقت ڈویلپر اکثر خود دستخط شدہ سرٹیفکیٹس تیار کرتے ہیں جو سرکاری سرٹیفکیشن اتھارٹیز (CA) سے منظور نہیں ہوتے۔
  • ملازمین کی داخلی کارپوریٹ سروسز تک رسائی۔ ایک تنظیم کے داخلی سرورز میں عام طور پر وہ سرٹیفکیٹس ہوتے ہیں جو قابل اعتماد نہیں ہوتے۔ جہاں ایسی وسائل تک خودکار رسائی ضروری ہو، سرٹیفکیٹ چیکنگ کو غیر فعال کرنا ایک عارضی حل ہوتا ہے۔
  • کچھ سائٹس کے پاس ایک سرور سرٹیفکیٹ ہوتا ہے جو یا تو ختم ہو چکا ہوتا ہے یا غلط ہوتا ہے۔ اگر کسی ایسی وسائل سے معلومات حاصل کرنا ضروری ہو، تو توثیق کو عارضی طور پر غیر فعال کیا جا سکتا ہے تاکہ صارف کو مخصوص سرٹیفکیٹ کی غلطی کا سامنا نہ ہو۔ اس صورت میں cURL SSL غلطیوں کو نظرانداز کرتا ہے اور سب کچھ ٹھیک کام کرتا ہے۔
  • چیکنگ کو غیر فعال کرنا ان اسکرپٹس میں ناکامی سے بچنے میں مدد دیتا ہے جنہیں نیٹ ورک درخواستوں کی آٹومیشن کی ضرورت ہوتی ہے۔ جب ایک اسکرپٹ مسلسل ایک سرور کو درخواستیں بھیجتا ہے جس کا سرٹیفکیٹ غلط ہوتا ہے، تو چیکنگ کو غیر فعال کرنا ضروری ہوتا ہے۔

اگرچہ چیکنگ ایک اہم عنصر ہے، اسے مکمل طور پر غیر فعال کرنے سے مسائل اور خطرات پیدا ہو سکتے ہیں۔ ہم اگلے حصے میں ان پر بحث کریں گے۔

SSL کو غیر فعال کرنے کے سیکیورٹی خطرات

جب cURL سرٹیفکیٹس کو نظرانداز کرتا ہے تو اس کا مطلب ہے کہ کنکشن کو مختلف سیکیورٹی حملوں کے ذریعے استحصال کیا جا سکتا ہے، اور یہ خاص طور پر اہم ہوتا ہے جب حساس معلومات بشمول پاسورڈز، ٹوکنز، یا یہاں تک کہ ادائیگی کا ڈیٹا شامل ہو۔

اہم خطرات:

  • مین ان دی مڈل اٹیک (MITM) – یہ ایک تکنیک ہے جس میں صارف اور سرور کے درمیان معلومات کو روک لیا جاتا ہے اور ڈیٹا کو تبدیل یا بدل دیا جاتا ہے۔ یہ اس وقت اور بھی زیادہ خطرناک ہو جاتا ہے جب کوئی تصدیق کرنے والا نہ ہو کیونکہ تب حملے کو نافذ کرنا بہت آسان ہو جاتا ہے۔ مثال کے طور پر، لاگ ان پیج کو جعلی پیج سے تبدیل کیا جا سکتا ہے تاکہ حملہ آور آسانی سے کریڈینشلز حاصل کر سکے۔
  • cURL سرور سرٹیفکیٹ کی تصدیق کرنے سے قاصر ہوتا ہے، جس سے وہ بے کار ہو جاتا ہے۔ اس طرح، یہ اس بات کی ضمانت نہیں دیتا کہ مطلوبہ نوڈ وہی ہے جس سے جڑنے کی کوشش کی جا رہی ہے، اور یہ سائٹس کو جعلی وسائل کے طور پر تبدیل کرنے کی اجازت دیتا ہے۔
  • اگر ٹیسٹنگ کے دوران تصدیق کو غیر فعال کیا جائے اور وہ کوڈ پروڈکشن کے ماحول میں لے جایا جائے، تو اس سے لیک ہونے یا یہاں تک کہ برٹ فورس اٹیک کے امکانات بڑھ سکتے ہیں جو خفیہ معلومات کو خطرے میں ڈال سکتے ہیں۔

اگر یہ ضروری ہو کہ cURL SSL کی غلطیوں کو نظرانداز کرے، تو پھر خود دستخط شدہ سرٹیفکیٹس کو دیکھنا انتہائی ضروری ہے:

  • صرف ٹیسٹ ماحول میں تصدیق کو بائی پاس کریں، اور پروڈکشن میں اس سے گریز کریں؛
  • غیر انکرپٹڈ کنکشن کے ذریعے خفیہ معلومات منتقل نہ کریں؛
  • خود دستخط شدہ سرٹیفکیٹ کو دستی طور پر قابل اعتماد میں شامل کریں؛
  • کوڈ کی نگرانی کریں، اور کنفیگریشن کی غلطیوں کو ختم کریں تاکہ تصدیق پروڈکشن کوڈ میں برقرار رہے۔

اگلے حصے میں ہم تفصیل سے تجزیہ کریں گے کہ کمانڈ لائن میں سرٹیفکیٹ کی تصدیق کو غیر فعال کرنے کے لیے کون سے عمل کیے جاتے ہیں۔

cURL کے ذریعے SSL کی غلطیوں کو کیسے بائی پاس کریں

cURL کو SSL کو نظرانداز کرنے کے لیے آپ کو مخصوص پیرامیٹرز شامل کرنے ہوں گے جو تصدیق کی جانچ کو معطل کرتے ہیں۔ جیسا کہ پہلے ذکر کیا گیا ہے، ایسی پریکٹسز کو صرف ایک محفوظ ماحول میں استعمال کیا جانا چاہیے۔

غلط سرٹیفکیٹ والی سائٹ کے مسئلے کو کم کرنے کے لیے سب سے مؤثر طریقہ یہ ہے کہ عارضی تصدیق کو جعلی طریقے سے تشکیل دیا جائے۔ یہ مندرجہ ذیل پیرامیٹرز کے ساتھ کیا جا سکتا ہے:

  • insecure-- یا k- – اس کا استعمال ایسی سائٹ سے جڑنے کے لیے کیا جاتا ہے جہاں سرور کا سرٹیفکیٹ غلط ہو؛
  • cacert-- – اس کا استعمال صارف کے سرٹیفکیٹ فائل کے ذخیرہ کرنے کی جگہ کو متعین کرنے کے لیے کیا جاتا ہے۔

یہاں ایک مثال ہے کہ آپ cURL کال کیسے کر سکتے ہیں جو سرٹیفکیٹ کی تصدیق کو نظرانداز کرے:


curl -k https://example.com

اس سے cURL کال کو سرور کے سرٹیفکیٹ کی مدت ختم ہونے کے باوجود بھی گزرنے کی اجازت ملے گی۔

اگر آپ ڈیٹا بھیجنا چاہتے ہیں (جیسے کہ POST درخواست میں):


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

انتہائی سیکیورٹی کے ل ، آپ براہ راست اس ڈائرکٹری کا انتخاب کریں گے جہاں فائل واقع ہے۔


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

اپنے اسکرپٹ میں SSL تصدیق کو غیر فعال کرنا

اگر درخواست کو کمانڈ لائن کے ذریعے خودکار بنایا جانا مقصود ہو اور صارف کی موجودگی کی ضرورت نہ ہو، تو ان حالات میں سرٹیفکیٹ کی جانچ کو غیر فعال کرنا فائدہ مند ہوتا ہے۔

یہاں ایک Bash کا مثال ہے، کہ کس طرح cURL SSL کو نظرانداز کرتا ہے:


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

پائیتھون کے ساتھ، آپ requests ماڈیول کو verify کو False پر سیٹ کر کے استعمال کر سکتے ہیں:


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

جب آپ یہ کمانڈ چلائیں گے، پائیتھون آپ کو ایک وارننگ دے گا جو غیر محفوظ کنکشن کے بارے میں ہوگی۔ اس کے علاوہ، آپ کو یہ بھی یقینی بنانا ہوگا کہ آپ وہ کوڈ لکھیں جو وارننگز کو غیر فعال کرے جو اس صورت میں ظاہر ہوں جب سائٹ کا سرور سرٹیفکیٹ غلط ہو۔


import requests import urllib3 

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) 

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

اب PHP کے ساتھ 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;

نیچے دی گئی ٹیبل میں SSL چیکنگ کو نظر انداز کرنے کے سب سے عام طریقے، ان کا استعمال اور ممکنہ خطرات درج ہیں۔

طریقہ کمانڈ / پیرامیٹر جب استعمال کریں خطرات
SSL اور ہوسٹ نیم کی تصدیق کو مکمل طور پر غیر فعال کرنا curl -k / --insecure ٹیسٹ APIs ، مقامی خدمات کا زیادہ خطرہ MITM
کسٹم سرٹیفکیٹ کا استعمال کرتے ہوئے curl --cacert /path/to/cert.pem اگر آپ کا اپنا سرٹیفکیٹ ہے محفوظ ، لیکن سیٹ اپ کی ضرورت ہے
کوڈ میں صرف ایس ایس ایل کو غیر فعال کرنا CURLOPT_SSL_VERIFYPEER=false عارضی جانچ خطرناک اگر یہ پیداوار میں رہتا ہے

نتیجہ

خراب سرور سرٹیفکیٹس cURL کے ساتھ کام کرتے وقت صرف مسائل نہیں پیدا کرتے بلکہ اس سے زیادہ مسائل پیدا کرتے ہیں۔ سرٹیفکیٹس صارفین کو ڈیٹا کی منتقلی کے دوران حفاظت کی ضمانت دیتے ہیں۔ اس لیے، تصدیق کو غیر فعال کرنا آخری حل ہوتا ہے جب کسی کو cURL کی خرابی کی تشخیص کرتے وقت مسئلہ آتا ہے۔ خرابی کی وجہ پر منحصر ہے، دیگر کم شدت والے طریقے بھی ہیں جیسے دستاویزات کو اپ ڈیٹ کرنا، انہیں قابل اعتماد علاقے میں شامل کرنا، یا اسے درست سرٹیفکیٹ کے ساتھ تبدیل کرنا۔

اگر SSL کی تصدیق نہ ہو تو کنکشن غیر صحت مند ہوگا اور دوسرے صارفین کے ذریعے آسانی سے غلط استعمال کیا جا سکتا ہے۔ یہ طریقہ صرف کنٹرول شدہ ماحول میں قابل قبول ہے جیسے جب کوئی ٹیسٹ کر رہا ہو، یا جب سروس بیرونی ہو۔ معمول کے حالات میں جب سرور کا سرٹیفکیٹ غلط ہو تو یہ انتہائی ضروری ہے کہ اس شق کو ورکنگ کوڈ میں نہ رکھا جائے کیونکہ اس سے ڈیٹا کی ماسکنگ اور دیگر سیکیورٹی خطرات پیدا ہو سکتے ہیں۔

تبصرے:

0 تبصرے