ایک USB ٹوکن کا استعمال کرتے ہوئے سائٹ پر دو عنصر کی تصدیق۔ اب لینکس کے لیے بھی

ایک USB ٹوکن کا استعمال کرتے ہوئے سائٹ پر دو عنصر کی تصدیق۔ اب لینکس کے لیے بھی
В ہمارے پچھلے مضامین میں سے ایک ہم نے کمپنیوں کے کارپوریٹ پورٹلز پر دو عنصر کی تصدیق کی اہمیت کے بارے میں بات کی۔ پچھلی بار ہم نے IIS ویب سرور میں محفوظ تصدیق کو ترتیب دینے کا طریقہ دکھایا تھا۔

تبصروں میں، ہم سے کہا گیا کہ وہ لینکس کے لیے سب سے عام ویب سرورز - nginx اور Apache کے لیے ہدایات لکھیں۔

آپ نے پوچھا - ہم نے لکھا۔

آپ کو شروع کرنے کی کیا ضرورت ہے؟

  • کوئی بھی جدید لینکس کی تقسیم۔ میں نے MX Linux 18.2_x64 پر ایک ٹیسٹ سیٹ اپ کیا۔ یہ یقیناً سرور کی تقسیم نہیں ہے، لیکن ڈیبین کے لیے کوئی فرق ہونے کا امکان نہیں ہے۔ دیگر تقسیم کے لیے، کنفگ لائبریریوں کے راستے قدرے مختلف ہو سکتے ہیں۔
  • ٹوکن۔ ہم ماڈل کا استعمال جاری رکھیں گے۔ Rutoken EDS PKI، جو کارپوریٹ استعمال کے لیے رفتار کی خصوصیات کے لحاظ سے مثالی ہے۔
  • لینکس میں ٹوکن کے ساتھ کام کرنے کے لیے، آپ کو درج ذیل پیکیجز انسٹال کرنے ہوں گے۔
    libccid libpcsclite1 pcscd pcsc-tools opensc

ایک USB ٹوکن کا استعمال کرتے ہوئے سائٹ پر دو عنصر کی تصدیق۔ اب لینکس کے لیے بھی

سرٹیفکیٹ جاری کرنا

پچھلے مضامین میں، ہم نے اس حقیقت پر انحصار کیا کہ سرور اور کلائنٹ سرٹیفکیٹ Microsoft CA کا استعمال کرتے ہوئے جاری کیے جائیں گے۔ لیکن چونکہ ہم لینکس میں سب کچھ ترتیب دے رہے ہیں، اس لیے ہم آپ کو یہ سرٹیفکیٹس جاری کرنے کے متبادل طریقے کے بارے میں بھی بتائیں گے - لینکس کو چھوڑے بغیر۔
ہم XCA کو بطور CA استعمال کریں گے (https://hohnstaedt.de/xca/)، جو کسی بھی جدید لینکس ڈسٹری بیوشن پر دستیاب ہے۔ وہ تمام اعمال جو ہم XCA میں انجام دیں گے وہ OpenSSL اور pkcs11-tool یوٹیلیٹیز کا استعمال کرتے ہوئے کمانڈ لائن موڈ میں کیے جا سکتے ہیں، لیکن زیادہ سادگی اور وضاحت کے لیے، ہم انہیں اس مضمون میں پیش نہیں کریں گے۔

شروع کریں

  1. انسٹال کریں:
    $ apt-get install xca
  2. اور ہم چلاتے ہیں:
    $ xca
  3. ہم CA - /root/CA.xdb کے لیے اپنا ڈیٹا بیس بناتے ہیں۔
    ہم سرٹیفکیٹ اتھارٹی ڈیٹابیس کو ایسے فولڈر میں اسٹور کرنے کی تجویز کرتے ہیں جہاں صرف ایڈمنسٹریٹر کو رسائی حاصل ہو۔ یہ روٹ سرٹیفکیٹس کی نجی کلیدوں کی حفاظت کے لیے اہم ہے، جو دیگر تمام سرٹیفکیٹس پر دستخط کرنے کے لیے استعمال ہوتی ہیں۔

چابیاں اور روٹ CA سرٹیفکیٹ بنائیں

عوامی کلیدی بنیادی ڈھانچہ (PKI) ایک درجہ بندی کے نظام پر مبنی ہے۔ اس نظام میں اہم چیز روٹ سرٹیفیکیشن اتھارٹی یا روٹ CA ہے۔ اس کا سرٹیفکیٹ پہلے بنانا ہوگا۔

  1. ہم CA کے لیے RSA-2048 نجی کلید بناتے ہیں۔ ایسا کرنے کے لیے، ٹیب پر نجی چابیاں ۔ نئی چابی اور مناسب قسم کا انتخاب کریں۔
  2. نئے کلیدی جوڑے کے لیے ایک نام سیٹ کریں۔ میں نے اسے CA Key کہا۔
  3. ہم CA سرٹیفکیٹ خود جاری کرتے ہیں، بنائے گئے کلیدی جوڑے کا استعمال کرتے ہوئے۔ ایسا کرنے کے لیے، ٹیب پر جائیں۔ سرٹیفکیٹس اور کلک کریں۔ نیا سرٹیفکیٹ.
  4. انتخاب ضرور کریں۔ ان شاء 256کیونکہ SHA-1 کا استعمال اب محفوظ نہیں سمجھا جا سکتا ہے۔
  5. ٹیمپلیٹ کے طور پر منتخب کرنا یقینی بنائیں [پہلے سے طے شدہ] CA. پر کلک کرنا نہ بھولیں۔ سب کو لگائیں۔، بصورت دیگر ٹیمپلیٹ لاگو نہیں ہوتا ہے۔
  6. ٹیب میں۔ مضمون ہماری کلیدی جوڑی کا انتخاب کریں۔ وہاں آپ سرٹیفکیٹ کے تمام اہم فیلڈز کو پُر کر سکتے ہیں۔

ایک USB ٹوکن کا استعمال کرتے ہوئے سائٹ پر دو عنصر کی تصدیق۔ اب لینکس کے لیے بھی

چابیاں اور ایک https سرور سرٹیفکیٹ بنانا

  1. اسی طرح، ہم سرور کے لیے ایک RSA-2048 نجی کلید بناتے ہیں، میں نے اسے سرور کی کہا۔
  2. سرٹیفکیٹ بناتے وقت، ہم منتخب کرتے ہیں کہ سرور سرٹیفکیٹ پر CA سرٹیفکیٹ کے ساتھ دستخط ہونا ضروری ہے۔
  3. منتخب کرنا نہ بھولیں۔ ان شاء 256.
  4. ہم ٹیمپلیٹ کے طور پر منتخب کرتے ہیں۔ [ڈیفالٹ] HTTPS_server. پر کلک کریں سب کو لگائیں۔.
  5. پھر ٹیب پر مضمون ہماری کلید کو منتخب کریں اور مطلوبہ فیلڈز کو پُر کریں۔

ایک USB ٹوکن کا استعمال کرتے ہوئے سائٹ پر دو عنصر کی تصدیق۔ اب لینکس کے لیے بھی

صارف کے لیے چابیاں اور سرٹیفکیٹ بنائیں

  1. صارف کی نجی کلید ہمارے ٹوکن پر محفوظ کی جائے گی۔ اس کے ساتھ کام کرنے کے لیے، آپ کو ہماری ویب سائٹ سے PKCS#11 لائبریری کو انسٹال کرنا ہوگا۔ مقبول ڈسٹری بیوشن کے لیے، ہم ریڈی میڈ پیکجز تقسیم کرتے ہیں، جو یہاں موجود ہیں - https://www.rutoken.ru/support/download/pkcs/. ہمارے پاس arm64, armv7el, armv7hf, e2k, mipso32el کے لیے اسمبلیاں بھی ہیں، جنہیں ہمارے SDK سے ڈاؤن لوڈ کیا جا سکتا ہے۔ https://www.rutoken.ru/developers/sdk/. لینکس کے لیے اسمبلیوں کے علاوہ، macOS، freebsd اور android کے لیے بھی اسمبلیاں ہیں۔
  2. XCA میں ایک نیا PKCS#11 فراہم کنندہ شامل کرنا۔ ایسا کرنے کے لیے مینو پر جائیں۔ آپشنز کے بھی ٹیب پر PKCS#11 فراہم کنندہ.
  3. ہم دبائیں شامل کریں اور PKCS#11 لائبریری کا راستہ منتخب کریں۔ میرے معاملے میں یہ usrliblibrtpkcs11ecp.so ہے۔
  4. ہمیں فارمیٹ شدہ Rutoken EDS PKI ٹوکن کی ضرورت ہوگی۔ rtAdmin یوٹیلیٹی ڈاؤن لوڈ کریں - https://dev.rutoken.ru/pages/viewpage.action?pageId=7995615
  5. ہم انجام دیتے ہیں۔
    $ rtAdmin -f -q -z /usr/lib/librtpkcs11ecp.so -u <PIN-код пользователя>
  6. ہم کلیدی قسم کے طور پر Rutoken EDS PKI کے لیے RSA-2048 کلید کو منتخب کرتے ہیں۔ میں نے اس کلید کو کلائنٹ کی کہا۔

    ایک USB ٹوکن کا استعمال کرتے ہوئے سائٹ پر دو عنصر کی تصدیق۔ اب لینکس کے لیے بھی

  7. پن کوڈ درج کریں۔ اور ہم کلیدی جوڑی کی ہارڈویئر جنریشن کی تکمیل کا انتظار کرتے ہیں۔

    ایک USB ٹوکن کا استعمال کرتے ہوئے سائٹ پر دو عنصر کی تصدیق۔ اب لینکس کے لیے بھی

  8. ہم سرور سرٹیفکیٹ کے ساتھ مشابہت کے ذریعہ صارف کے لیے ایک سرٹیفکیٹ بناتے ہیں۔ اس بار ہم ایک ٹیمپلیٹ منتخب کرتے ہیں۔ [ڈیفالٹ] HTTPS_client اور کلک کرنا نہ بھولیں۔ سب کو لگائیں۔.
  9. ٹیب میں۔ مضمون صارف کے بارے میں معلومات درج کریں۔ ہم ٹوکن کے لیے سرٹیفکیٹ کو محفوظ کرنے کی درخواست کا اثبات میں جواب دیتے ہیں۔

نتیجے کے طور پر، ٹیب پر سرٹیفکیٹس XCA میں آپ کو کچھ ایسا ملنا چاہیے۔

ایک USB ٹوکن کا استعمال کرتے ہوئے سائٹ پر دو عنصر کی تصدیق۔ اب لینکس کے لیے بھی
چابیاں اور سرٹیفکیٹس کا یہ کم از کم سیٹ سرورز کو خود ترتیب دینا شروع کرنے کے لیے کافی ہے۔

کنفیگر کرنے کے لیے، ہمیں CA سرٹیفکیٹ، سرور سرٹیفکیٹ اور سرور پرائیویٹ کلید برآمد کرنے کی ضرورت ہے۔

ایسا کرنے کے لیے، XCA میں متعلقہ ٹیب پر مطلوبہ اندراج کو منتخب کریں اور کلک کریں۔ برآمد.

نگنکس

میں یہ نہیں لکھوں گا کہ nginx سرور کو کیسے انسٹال اور چلایا جائے - انٹرنیٹ پر اس موضوع پر کافی مضامین موجود ہیں، سرکاری دستاویزات کا ذکر کرنے کے لیے نہیں۔ آئیے ٹوکن کا استعمال کرتے ہوئے براہ راست HTTPS اور دو عنصر کی توثیق کو ترتیب دیں۔

nginx.conf میں سرور سیکشن میں درج ذیل لائنیں شامل کریں:

server {
	listen 443 ssl;
	ssl_verify_depth 1;
	ssl_certificate /etc/nginx/Server.crt;
	ssl_certificate_key /etc/nginx/ServerKey.pem;
	ssl_client_certificate /etc/nginx/CA.crt;
	ssl_verify_client on;
}

nginx میں ssl کو ترتیب دینے سے متعلق تمام پیرامیٹرز کی تفصیلی وضاحت یہاں مل سکتی ہے۔ https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_client_certificate

میں صرف ان باتوں کو مختصراً بیان کروں گا جو میں نے خود سے پوچھا:

  • ssl_verify_client - یہ بتاتا ہے کہ سرٹیفکیٹ کے لیے اعتماد کے سلسلے کی تصدیق کی ضرورت ہے۔
  • ssl_verify_depth - سلسلہ میں قابل اعتماد روٹ سرٹیفکیٹ کے لیے تلاش کی گہرائی کی وضاحت کرتا ہے۔ چونکہ ہمارے کلائنٹ کے سرٹیفکیٹ پر فوری طور پر روٹ سرٹیفکیٹ پر دستخط کیے جاتے ہیں، اس لیے گہرائی 1 پر سیٹ کی جاتی ہے۔ اگر صارف کا سرٹیفکیٹ انٹرمیڈیٹ CA پر دستخط شدہ ہے، تو اس پیرامیٹر میں 2 کی وضاحت ہونی چاہیے، وغیرہ۔
  • ssl_client_certificate - قابل اعتماد روٹ سرٹیفکیٹ کا راستہ بتاتا ہے، جو صارف کے سرٹیفکیٹ پر اعتماد کی جانچ کے وقت استعمال ہوتا ہے۔
  • ssl_certificate/ssl_certificate_key - سرور سرٹیفکیٹ/نجی کلید کے راستے کی نشاندہی کریں۔

یہ چیک کرنے کے لیے nginx -t کو چلانا نہ بھولیں کہ کنفیگریشن میں کوئی ٹائپ کی غلطی نہیں ہے، اور یہ کہ تمام فائلیں صحیح جگہ پر ہیں، وغیرہ۔

اور بس یہی! جیسا کہ آپ دیکھ سکتے ہیں، سیٹ اپ بہت آسان ہے۔

چیک کر رہا ہے کہ یہ فائر فاکس میں کام کر رہا ہے۔

چونکہ ہم سب کچھ مکمل طور پر لینکس میں کرتے ہیں، اس لیے ہم فرض کریں گے کہ ہمارے صارفین بھی لینکس میں کام کرتے ہیں (اگر ان کے پاس ونڈوز ہے، تو پچھلے مضمون میں براؤزر ترتیب دینے کی ہدایات دیکھیں.

  1. آئیے فائر فاکس لانچ کریں۔
  2. آئیے پہلے بغیر ٹوکن کے لاگ ان کرنے کی کوشش کریں۔ ہمیں یہ تصویر ملتی ہے:

    ایک USB ٹوکن کا استعمال کرتے ہوئے سائٹ پر دو عنصر کی تصدیق۔ اب لینکس کے لیے بھی

  3. چلو چلتے ہیں کے بارے میں: ترجیحات # رازداری، اور ہم جاتے ہیں۔ سیکیورٹی آلات…
  4. ہم دبائیں لوڈایک نیا PKCS#11 ڈیوائس ڈرائیور شامل کرنے اور ہمارے librtpkcs11ecp.so کا راستہ بتانے کے لیے۔
  5. یہ چیک کرنے کے لیے کہ سرٹیفکیٹ نظر آ رہا ہے، آپ جا سکتے ہیں۔ سرٹیفکیٹ مینیجر. آپ کو اپنا PIN درج کرنے کے لیے کہا جائے گا۔ درست ان پٹ کے بعد، آپ چیک کر سکتے ہیں کہ ٹیب پر کیا ہے۔ آپ کے سرٹیفکیٹ ٹوکن سے ہمارا سرٹیفکیٹ ظاہر ہوا۔
  6. اب ٹوکن کے ساتھ چلتے ہیں۔ فائر فاکس آپ کو ایک سرٹیفکیٹ منتخب کرنے کا اشارہ کرتا ہے جسے سرور کے لیے منتخب کیا جائے گا۔ ہمارا سرٹیفکیٹ منتخب کریں۔

    ایک USB ٹوکن کا استعمال کرتے ہوئے سائٹ پر دو عنصر کی تصدیق۔ اب لینکس کے لیے بھی

  7. منافع!

    ایک USB ٹوکن کا استعمال کرتے ہوئے سائٹ پر دو عنصر کی تصدیق۔ اب لینکس کے لیے بھی

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

اپاچی

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

اور ہم اپنے HTTPS اور دو عنصر کی توثیق کو ترتیب دینا شروع کرتے ہیں:

  1. پہلے آپ کو mod_ssl کو چالو کرنے کی ضرورت ہے:
    $ a2enmod ssl
  2. اور پھر سائٹ کی ڈیفالٹ HTTPS ترتیبات کو فعال کریں:
    $ a2ensite default-ssl
  3. اب ہم کنفیگریشن فائل میں ترمیم کرتے ہیں: /etc/apache2/sites-enabled/default-ssl.conf:
        SSLEngine on
        SSLProtocol all -SSLv2
    
        SSLCertificateFile	/etc/apache2/sites-enabled/Server.crt
        SSLCertificateKeyFile /etc/apache2/sites-enabled/ServerKey.pem
    
        SSLCACertificateFile /etc/apache2/sites-enabled/CA.crt
    
        SSLVerifyClient require
        SSLVerifyDepth  10

    جیسا کہ آپ دیکھ سکتے ہیں، پیرامیٹرز کے نام عملی طور پر nginx میں پیرامیٹرز کے ناموں کے ساتھ ملتے ہیں، لہذا میں ان کی وضاحت نہیں کروں گا۔ ایک بار پھر، تفصیلات میں دلچسپی رکھنے والے کسی کو بھی دستاویزات میں خوش آمدید کہتے ہیں۔
    اب ہم اپنے سرور کو دوبارہ شروع کریں:

    $ service apache2 reload
    $ service apache2 restart

  4. جیسا کہ آپ دیکھ سکتے ہیں، کسی بھی ویب سرور پر دو عنصر کی توثیق ترتیب دینے میں، چاہے ونڈوز ہو یا لینکس، زیادہ سے زیادہ ایک گھنٹہ لیتا ہے۔ اور براؤزرز کو ترتیب دینے میں تقریباً 5 منٹ لگتے ہیں۔ بہت سے لوگ سوچتے ہیں کہ دو عنصر کی توثیق کے ساتھ ترتیب دینا اور کام کرنا مشکل اور غیر واضح ہے۔ مجھے امید ہے کہ ہمارا مضمون اس خرافات کو ختم کر دے گا، کم از کم تھوڑا سا۔

سروے میں صرف رجسٹرڈ صارفین ہی حصہ لے سکتے ہیں۔ سائن ان، برائے مہربانی.

کیا آپ کو GOST 34.10-2012 کے مطابق سرٹیفکیٹس کے ساتھ TLS ترتیب دینے کے لیے ہدایات کی ضرورت ہے:

  • ہاں، TLS-GOST بہت ضروری ہے۔

  • نہیں، GOST الگورتھم کے ساتھ ٹیوننگ دلچسپ نہیں ہے۔

44 صارفین نے ووٹ دیا۔ 9 صارفین غیر حاضر رہے۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں