Certificate Pinning: یہ کیا ہے، سرٹیفکیٹ بائنڈنگ کے طریقے اور اسے کیسے نافذ کریں

مصنف: IT Sectr اشاعت: 2026-04-02 مطالعے کا وقت: 8 منٹ

Certificate Pinning ایک حفاظتی تکنیک ہے جس میں موبائل ایپلیکیشن تصدیق کرتی ہے کہ سرور کا سرٹیفکیٹ پہلے سے معلوم نمونے سے مطابقت رکھتا ہے، نہ کہ CA چین کے کسی بھی سرٹیفکیٹ پر بھروسہ کرے۔ عام TLS تصدیق کے برعکس، جو سینکڑوں سرٹیفکیٹ اتھارٹیز پر انحصار کرتی ہے، pinning اعتماد کو ایک مخصوص سرٹیفکیٹ یا اس کی عوامی کلید تک محدود کر دیتا ہے۔ OWASP موبائل سیکیورٹی ٹیسٹنگ گائیڈ (2024) کے مطابق، Certificate Pinning کو نافذ کرنے سے سرٹیفکیٹ کی تبدیلی سے متعلق 100% Man-in-the-Middle حملے کے منظرنامے مسدود ہو جاتے ہیں۔ OWASP MSTG, 2024

اہم نکات

  • Certificate Pinning کسی ایپ کو مخصوص سرور سرٹیفکیٹ یا عوامی کلید سے سختی سے باندھنے کی تکنیک ہے۔
  • Public Key Pinning سب سے لچکدار اور محفوظ طریقہ ہے، جس میں سرٹیفکیٹ تبدیل ہونے پر ایپ اپ ڈیٹ کی ضرورت نہیں ہوتی۔
  • TLS سے فرق — عام TLS کسی بھی CA پر بھروسہ کرتا ہے؛ pinning ایک مخصوص سرٹیفکیٹ کے لیے تصدیق کی دوسری سطح شامل کرتا ہے۔
  • مسدود ہونے کا خطرہ — اگر سرٹیفکیٹ غلط طریقے سے اپ ڈیٹ ہو جائے تو، نیا ورژن جاری ہونے تک ایپ سرور سے کنکشن کھو سکتی ہے۔
  • OkHttp اور TrustKit بالترتیب Android اور iOS پر pinning نافذ کرنے کے لیے سب سے مقبول لائبریریاں ہیں۔

Certificate Pinning کیا ہے؟

Certificate Pinning ایک حفاظتی طریقہ کار ہے جس میں ایپلیکیشن سرور کے سرٹیفکیٹ کا ایک نمونہ محفوظ (یا “پن”) کرتی ہے اور ہر کنکشن پر موصولہ سرٹیفکیٹ کا اس نمونے سے موازنہ کرتی ہے۔ اگر سرٹیفکیٹ مطابقت نہیں رکھتا — تو کنکشن ختم کر دیا جاتا ہے، چاہے وہ کسی قابل اعتماد سرٹیفکیٹ اتھارٹی کے ذریعے سرکاری طور پر دستخط شدہ ہو۔ یہ ان حملوں سے بچاتا ہے جن میں حملہ آور کسی سمجھوتہ شدہ CA کے ذریعے جعلی سرٹیفکیٹ حاصل کرتا ہے (جیسا کہ 2011 میں DigiNotar یا 2011 میں Comodo کے ساتھ ہوا تھا)۔

سرٹیفکیٹ بائنڈنگ کیسے کام کرتی ہے

Pinning کا عمل تین مراحل پر مشتمل ہے: قابل اعتماد مثال سے سرٹیفکیٹ یا عوامی کلید کا فنگر پرنٹ نکالنا؛ اس فنگر پرنٹ کو ایپلیکیشن کوڈ یا وسائل میں محفوظ کرنا؛ TLS مصافحہ کے دوران موازنہ کرنا۔ ڈویلپر پورے سرٹیفکیٹ کا SHA-256 فنگر پرنٹ یا صرف عوامی کلید (Public Key Pinning) پن کر سکتا ہے۔ دوسرا طریقہ ترجیحی ہے: سرٹیفکیٹ کی تجدید پر، عوامی کلید اکثر وہی رہتی ہے اور ایپ سرور سے کنکشن نہیں کھوتی۔ OWASP کی سفارشات کے مطابق، کم از کم پنوں کی تعداد 2 ہے: ایک موجودہ اور ایک بیک اپ کلید کی گردش کے لیے۔ OkHttp اور TrustKit جیسی جدید لائبریریاں ڈویلپر کی اضافی کوشش کے بغیر ہر TLS کنکشن کے دوران مخصوص پنوں کی تصدیق کے عمل کو خودکار کرتی ہیں۔ یہ سمجھنا ضروری ہے کہ pinning معیاری TLS تصدیق کو تبدیل نہیں کرتا، بلکہ اس کی تکمیل کرتا ہے: پہلے سرٹیفکیٹ چین کی توثیق کے ساتھ ایک عام مصافحہ کیا جاتا ہے، پھر ایک اضافی pinning جانچ کی جاتی ہے۔ یہ دو سطحی تحفظ CA سے سمجھوتہ سے متعلق کمزوریوں کو ختم کرتا ہے، بشمول غلط سرٹیفکیٹ جاری کرنے اور سرٹیفکیٹ اتھارٹی کے بنیادی ڈھانچے پر حملے۔

Certificate Pinning کی اقسام

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

Pinning کی قسمکیا محفوظ کیا جاتا ہےلچکاستعمال کی مثال
Certificate Pinningمکمل X.509 سرٹیفکیٹکم1–2 سال کے لیے مقررہ سرٹیفکیٹ
Public Key Pinningعوامی کلید (SPKI)درمیانیOWASP تجویز کردہ طریقہ
Hash PinningSHA-256 فنگر پرنٹدرمیانیOkHttp میں مقبول (certificatePinner)
CA Pinningدرمیانی CAاعلیٰکاروباری ایپلیکیشنز

سب سے متوازن طریقہ Public Key Pinning ہے، جو OWASP اور Google کے ذریعہ تجویز کردہ ہے۔ ایک مخصوص سرٹیفکیٹ (جو ہر 1–2 سال میں تبدیل ہوتا ہے) کے بجائے، ایپلیکیشن SubjectPublicKeyInfo فنگر پرنٹ — عوامی کلید کا ایک تجرید — محفوظ کرتی ہے۔ اگر سرٹیفکیٹ اسی کلید کے ساتھ تجدید ہوتا ہے (کلید کا دوبارہ استعمال)، تو پن درست رہتا ہے۔ اگر کلید تبدیل ہوتی ہے — تو ڈویلپر پہلے سے ایپلیکیشن اپ ڈیٹ میں ایک بیک اپ پن شامل کرتا ہے۔ موبائل پروجیکٹس میں کم از کم/زیادہ سے زیادہ پن کی حکمت عملی استعمال کی جاتی ہے: بیک اپ سمیت کم از کم 2 پن، اور زیادہ سے زیادہ 4 پن بڑھنے اور تصدیق کے وقت میں اضافے کو روکنے کے لیے۔

Pinning کی قسم کے انتخاب کی حکمت عملی

مخصوص pinning قسم کا انتخاب ایپلیکیشن کے فن تعمیر اور ضروریات پر منحصر ہے۔ ایک ڈومین کے ذریعے REST API کے ساتھ کام کرنے والی عوامی موبائل ایپلیکیشنز کے لیے، OkHttp یا TrustKit کے ذریعے دو پنوں کے ساتھ Public Key Pinning بہترین ہے۔ اپنی سرٹیفکیٹ اتھارٹی والی کاروباری ایپلیکیشنز کے لیے، CA Pinning موزوں ہے — اسے کلائنٹ سرٹیفکیٹ تبدیل ہونے پر اپ ڈیٹ کی ضرورت نہیں ہوتی، کیونکہ اعتماد حتمی سرٹیفکیٹ سے نہیں بلکہ CA سے بندھا ہوتا ہے۔ IoT اور ایمبیڈڈ سسٹمز کے لیے، مکمل سرٹیفکیٹ پننگ کے ساتھ Certificate Pinning تجویز کی جاتی ہے: آلات شاذ و نادر ہی اپ ڈیٹ ہوتے ہیں، لہٰذا اعتماد کی پوری زنجیر پر کنٹرول ضروری ہے۔ پنوں کی میعاد ختم ہونے کی تاریخوں کی نگرانی ایک لازمی عمل ہے: موجودہ سرٹیفکیٹ کے نااہل ہونے سے پہلے نئے پنوں کے ساتھ ایپلیکیشن اپ ڈیٹ جاری کرنے کے لیے سرٹیفکیٹ کی میعاد ختم ہونے سے 30، 14 اور 7 دن پہلے الرٹ ترتیب دیں۔ نئے پنوں کے ساتھ اپ ڈیٹس جاری کرنے کو خودکار بنانے کے لیے، Firebase Remote Config یا ایک حسب ضرورت کنفیگریشن API استعمال کرنے کی سفارش کی جاتی ہے جو ایپ اسٹور میں نیا ورژن شائع کیے بغیر پنوں کی فہرست کو متحرک طور پر اپ ڈیٹ کرنے کی اجازت دیتا ہے۔

Certificate Pinning کے فوائد اور نقصانات

Certificate Pinning موبائل ایپلیکیشن کی حفاظت کو نمایاں طور پر بڑھاتا ہے لیکن ترقیاتی ٹیم پر آپریشنل بوجھ ڈالتا ہے۔ غلط نفاذ کی وجہ سے کنکشن بلاک ہونے کے خطرات کے مقابلے حفاظتی فوائد کو تولنا ضروری ہے۔

بنیادی فائدہ CA سے سمجھوتہ کے معاملات سمیت Man-in-the-Middle حملوں سے تحفظ ہے۔ Pinning حملہ آور کی طرف سے جاری کردہ جعلی سرٹیفکیٹ کو بیکار بنا دیتا ہے: چاہے کسی CA نے جعلسازی پر دستخط کیا ہو، ایپلیکیشن اسے مسترد کر دے گی۔ ایک اضافی فائدہ کارپوریٹ پراکسی سرورز سے تحفظ ہے جو ٹریفک معائنہ کے لیے سرٹیفکیٹ تبدیل کرتے ہیں۔ Google Security Blog (2023) کے مطابق، pinning والی ایپلیکیشنز میں صرف معیاری TLS تصدیق استعمال کرنے والی ایپلیکیشنز کے مقابلے ٹریفک کی روک تھام کے ذریعے سمجھوتہ ہونے کے امکانات 86% کم ہوتے ہیں۔

Pinning کا بنیادی نقصان خود بلاک ہونے کا خطرہ ہے: اگر ایپلیکیشن اپ ڈیٹ جاری ہونے سے پہلے سرور سرٹیفکیٹ تبدیل ہو جائے (تجدید، فراہم کنندہ کی تبدیلی، کلید کی گردش)، تو صارفین سرور تک رسائی کھو دیتے ہیں۔ اضافی نقصانات: ڈیبگنگ کی پیچیدگی (ہر ترتیب تبدیلی پر پن اپ ڈیٹ کی ضرورت)، TrustKit استعمال کرتے وقت APK سائز میں 5–15 KB کا اضافہ، اور نئی ریلیز کے بغیر تبدیلیوں کو جلدی واپس لینے میں ناکامی۔ خطرات کو کم کرنے کے لیے، بیک اپ پن، ہر 2–3 ماہ میں خودکار گردش، اور ایک رعایتی مدت استعمال کی جاتی ہے، جس کے دوران ایپلیکیشن پرانے اور نئے دونوں سرٹیفکیٹ قبول کرتی ہے۔ یہ بھی غور کرنا ضروری ہے کہ pinning فعال ہونے کے ساتھ ترقی کے دوران، نیٹ ورک کی درخواستوں کو ڈیبگ کرنے کے لیے پراکسی ٹولز (Burp Suite, Charles) استعمال نہیں کیے جا سکتے — ڈیو بلڈز کے لیے، pinning کو BuildConfig.DEBUG پرچم کے ذریعے غیر فعال کیا جانا چاہیے، اور QA ٹیسٹنگ تحفظ فعال ہونے کے ساتھ ریلیز دستخط پر کی جانی چاہیے۔ کچھ ٹیمیں ترقی کے دوران بھی تحفظ برقرار رکھنے کے لیے ڈیو ماحول کے لیے علیحدہ pinning سرٹیفکیٹ کے ساتھ اسٹیجنگ ڈومین استعمال کرتی ہیں۔

Android میں Certificate Pinning کا نفاذ

آئیے OkHttp — نیٹ ورک کی درخواستوں کے لیے معیاری لائبریری — کا استعمال کرتے ہوئے Android پر Certificate Pinning کے نفاذ کی ایک مثال دیکھتے ہیں۔ OkHttp ایک بلٹ ان CertificatePinner فراہم کرتا ہے جو عوامی کلیدوں کے SHA-256 ہیشز قبول کرتا ہے۔

kotlin
val certificatePinner = CertificatePinner.Builder()
    .add(
        "api.example.com",
        "sha256/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
    )
    .add(
        "api.example.com",
        "sha256/BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB="
    )
    .build()

val client = OkHttpClient.Builder()
    .certificatePinner(certificatePinner)
    .build()

اوپر والے کوڈ میں، ہم ڈومین api.example.com کے لیے دو پن شامل کرتے ہیں: بنیادی (موجودہ سرٹیفکیٹ) اور ایک بیک اپ پن (گردش کے لیے)۔ OkHttp خود بخود تصدیق کرتا ہے کہ سرور کا سرٹیفکیٹ مخصوص کردہ SHA-256 فنگر پرنٹس میں سے ایک سے مطابقت رکھتا ہے۔ سرٹیفکیٹ کا SHA-256 فنگر پرنٹ حاصل کرنے کے لیے، کمانڈ استعمال کریں: openssl s_client -connect api.example.com:443 | openssl x509 -pubkey -noout | openssl pkey -pubin -outform der | openssl dgst -sha256 -binary | base64۔ فنگر پرنٹس کو کوڈ میں سادہ متن کے طور پر نہیں، بلکہ خفیہ یا مبہم کر کے محفوظ کرنا ضروری ہے: MobSF جامد تجزیہ DEX فائلوں میں خام SHA-256 سٹرنگز کو آسانی سے ڈھونڈ لیتا ہے۔ پنوں کو res/raw وسائل میں AES کے ذریعے خفیہ کر کے محفوظ کرنے اور مقامی کوڈ (NDK/JNI) کے ذریعے ایپلیکیشن اسٹارٹ اپ پر ڈیکرپٹ کرنے کی سفارش کی جاتی ہے۔

TrustKit کے ذریعے iOS کا نفاذ

iOS پر، Certificate Pinning کا بنیادی ٹول اوپن سورس TrustKit لائبریری ہے۔ OkHttp کے برعکس، TrustKit Info.plist کے ذریعے اعلانیہ طور پر ترتیب دیا جاتا ہے، جو ایپلیکیشن کو دوبارہ مرتب کیے بغیر پن تبدیل کرنے کی اجازت دیتا ہے۔ ترتیب میں ڈومینز کے ساتھ ایک لغت اور SHA-256 عوامی کلید فنگر پرنٹس کی ایک صف شامل ہے۔ TrustKit خود بخود NSURLSession کی درخواستوں کو روکتا ہے اور ڈیٹا کی منتقلی شروع ہونے سے پہلے سرٹیفکیٹ کی تصدیق کرتا ہے۔ TrustKit کی ایک اہم خصوصیت پن کی توثیق کی رپورٹس کے لیے معاونت ہے: لائبریری پن کی عدم مطابقت پر ایک مخصوص اینڈپوائنٹ پر رپورٹس بھیج سکتی ہے، جس سے سرٹیفکیٹ کی بے ضابطگیوں پر فوری ردعمل ممکن ہوتا ہے۔ Apple iOS 14 سے Info.plist میں ایک مقامی NSPinnedDomains میکانزم بھی فراہم کرتا ہے، لیکن TrustKit زیادہ لچکدار ترتیب، رپورٹس کی معاونت اور OS اپ ڈیٹس کے بغیر پنوں کو ہاٹ سویپ کرنے کی صلاحیت کی وجہ سے ترجیحی انتخاب ہے۔ یہ نوٹ کرنا ضروری ہے کہ TrustKit didReceiveChallenge ڈیلیگیٹ کے ذریعے URLSession کے ساتھ مربوط ہوتا ہے، کامیاب پن تصدیق پر .performDefaultHandling اور عدم مطابقت پر .cancelAuthenticationChallenge واپس کرتا ہے۔ پن کی توثیق کی رپورٹس کی نگرانی کے لیے، ایک علیحدہ اینڈپوائنٹ ترتیب دینے کی سفارش کی جاتی ہے جو خرابی کی تعدد کا تجزیہ کرتا ہے: اگر رپورٹس کی تعداد تیزی سے بڑھ جائے — تو یہ MitM حملے یا سرٹیفکیٹ کی قریب آتی میعاد ختم ہونے کی نشاندہی کر سکتا ہے جس کے لیے فوری پن اپ ڈیٹ کی ضرورت ہے۔

اکثر پوچھے گئے سوالات

سادہ الفاظ میں Certificate Pinning کیا ہے؟

Certificate Pinning آپ کے فون میں کسی دوست کا فنگر پرنٹ محفوظ کرنے جیسا ہے: آپ کو یاد رہتا ہے کہ “صحیح” سرور سرٹیفکیٹ کیسا لگتا ہے، اور آپ کسی اور پر بھروسہ نہیں کرتے، چاہے کوئی “سرکاری” اتھارٹی سے شناخت پیش کرے۔

Certificate Pinning عام HTTPS سے کیسے مختلف ہے؟

عام HTTPS سینکڑوں اتھارٹیز میں سے کسی بھی CA کے دستخط کردہ کسی بھی سرٹیفکیٹ پر بھروسہ کرتا ہے۔ Certificate Pinning اوپر ایک جانچ شامل کرتا ہے: سرٹیفکیٹ نہ صرف درست ہونا چاہیے، بلکہ خاص طور پر وہ ہونا چاہیے جسے آپ نے ایپلیکیشن کوڈ میں ہارڈ کوڈ کیا ہے۔

Pinning استعمال کرتے ہوئے سرٹیفکیٹ کیسے اپ ڈیٹ کریں؟

2–3 پن محفوظ کرنے کی سفارش کی جاتی ہے: موجودہ پن اور نئے سرٹیفکیٹ کے لیے ایک بیک اپ پن۔ سرٹیفکیٹ تبدیل ہونے سے 1–2 مہینے پہلے، مستقبل کے سرٹیفکیٹ کا پن شامل کر کے ایپلیکیشن کا نیا ورژن جاری کریں۔ تبدیلی کے بعد، پرانا پن اگلی ریلیز میں ہٹا دیا جاتا ہے۔

کیا مفت CA کے ساتھ Certificate Pinning استعمال کیا جا سکتا ہے؟

ہاں، کیا جا سکتا ہے۔ Pinning کسی بھی سرٹیفکیٹ کے ساتھ کام کرتا ہے، بشمول Let’s Encrypt۔ یہ یاد رکھنا ضروری ہے کہ مفت سرٹیفکیٹ کی میعاد مختصر (3 ماہ) ہوتی ہے، لہٰذا بیک اپ پن کی حکمت عملی اور خودکار گردش لازمی ہو جاتی ہے۔

ایپلیکیشن میں Certificate Pinning کیسے ٹیسٹ کریں؟

Pinning کی جانچ کے لیے Burp Suite یا mitmproxy استعمال کریں۔ اگر pinning والی ایپلیکیشن درست طریقے سے ترتیب دی گئی ہے، تو پراکسی ٹول ٹریفک کو روک نہیں سکے گا — کنکشن مصافحہ کے مرحلے پر ختم ہو جائے گا۔ انٹیگریشن ٹیسٹ کے لیے، OkHttp کا MockWebServer استعمال کریں۔

خلاصہ

  • Certificate Pinning ایک سرٹیفکیٹ بائنڈنگ تکنیک ہے جو Man-in-the-Middle حملوں اور CA کی تبدیلی سے بچاتی ہے۔
  • Public Key Pinning OWASP تجویز کردہ طریقہ ہے جو پورے سرٹیفکیٹ کے بجائے عوامی کلید کے فنگر پرنٹ پر مبنی ہے۔
  • OkHttp CertificatePinner Android پر اور TrustKit iOS پر موبائل پروجیکٹس میں pinning نافذ کرنے کے بنیادی اوزار ہیں۔
  • 2+ پن کی حکمت عملی سرور سرٹیفکیٹ تبدیل ہونے پر ایپلیکیشن کو مسدود ہونے سے روکتی ہے۔
  • SHA-256 pinning کے لیے سرور کی عوامی کلید کا فنگر پرنٹ بنانے کے لیے openssl کمانڈ کی ضرورت ہوتی ہے۔
  • رعایتی مدت — اوورلیپنگ میعاد کی تاریخوں والے بیک اپ پن کا استعمال کنکشن کے نقصان کے خطرے کو صفر تک کم کر دیتا ہے۔
  • سفارش: بیک اپ پن کے ساتھ تمام پروڈکشن ڈومینز کے لیے عوامی کلید pinning نافذ کریں اور کنکشن ٹوٹنے کی نگرانی ترتیب دیں۔

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں