پرو ہوسٹر > بلاگ > انتظامیہ > ایک USB ٹوکن کا استعمال کرتے ہوئے سائٹ پر دو عنصر کی تصدیق۔ اب لینکس کے لیے بھی
ایک USB ٹوکن کا استعمال کرتے ہوئے سائٹ پر دو عنصر کی تصدیق۔ اب لینکس کے لیے بھی
В ہمارے پچھلے مضامین میں سے ایک ہم نے کمپنیوں کے کارپوریٹ پورٹلز پر دو عنصر کی تصدیق کی اہمیت کے بارے میں بات کی۔ پچھلی بار ہم نے IIS ویب سرور میں محفوظ تصدیق کو ترتیب دینے کا طریقہ دکھایا تھا۔
تبصروں میں، ہم سے کہا گیا کہ وہ لینکس کے لیے سب سے عام ویب سرورز - nginx اور Apache کے لیے ہدایات لکھیں۔
آپ نے پوچھا - ہم نے لکھا۔
آپ کو شروع کرنے کی کیا ضرورت ہے؟
کوئی بھی جدید لینکس کی تقسیم۔ میں نے MX Linux 18.2_x64 پر ایک ٹیسٹ سیٹ اپ کیا۔ یہ یقیناً سرور کی تقسیم نہیں ہے، لیکن ڈیبین کے لیے کوئی فرق ہونے کا امکان نہیں ہے۔ دیگر تقسیم کے لیے، کنفگ لائبریریوں کے راستے قدرے مختلف ہو سکتے ہیں۔
ٹوکن۔ ہم ماڈل کا استعمال جاری رکھیں گے۔ Rutoken EDS PKI، جو کارپوریٹ استعمال کے لیے رفتار کی خصوصیات کے لحاظ سے مثالی ہے۔
لینکس میں ٹوکن کے ساتھ کام کرنے کے لیے، آپ کو درج ذیل پیکیجز انسٹال کرنے ہوں گے۔
libccid libpcsclite1 pcscd pcsc-tools opensc
سرٹیفکیٹ جاری کرنا
پچھلے مضامین میں، ہم نے اس حقیقت پر انحصار کیا کہ سرور اور کلائنٹ سرٹیفکیٹ Microsoft CA کا استعمال کرتے ہوئے جاری کیے جائیں گے۔ لیکن چونکہ ہم لینکس میں سب کچھ ترتیب دے رہے ہیں، اس لیے ہم آپ کو یہ سرٹیفکیٹس جاری کرنے کے متبادل طریقے کے بارے میں بھی بتائیں گے - لینکس کو چھوڑے بغیر۔
ہم XCA کو بطور CA استعمال کریں گے (https://hohnstaedt.de/xca/)، جو کسی بھی جدید لینکس ڈسٹری بیوشن پر دستیاب ہے۔ وہ تمام اعمال جو ہم XCA میں انجام دیں گے وہ OpenSSL اور pkcs11-tool یوٹیلیٹیز کا استعمال کرتے ہوئے کمانڈ لائن موڈ میں کیے جا سکتے ہیں، لیکن زیادہ سادگی اور وضاحت کے لیے، ہم انہیں اس مضمون میں پیش نہیں کریں گے۔
شروع کریں
انسٹال کریں:
$ apt-get install xca
اور ہم چلاتے ہیں:
$ xca
ہم CA - /root/CA.xdb کے لیے اپنا ڈیٹا بیس بناتے ہیں۔
ہم سرٹیفکیٹ اتھارٹی ڈیٹابیس کو ایسے فولڈر میں اسٹور کرنے کی تجویز کرتے ہیں جہاں صرف ایڈمنسٹریٹر کو رسائی حاصل ہو۔ یہ روٹ سرٹیفکیٹس کی نجی کلیدوں کی حفاظت کے لیے اہم ہے، جو دیگر تمام سرٹیفکیٹس پر دستخط کرنے کے لیے استعمال ہوتی ہیں۔
چابیاں اور روٹ CA سرٹیفکیٹ بنائیں
عوامی کلیدی بنیادی ڈھانچہ (PKI) ایک درجہ بندی کے نظام پر مبنی ہے۔ اس نظام میں اہم چیز روٹ سرٹیفیکیشن اتھارٹی یا روٹ CA ہے۔ اس کا سرٹیفکیٹ پہلے بنانا ہوگا۔
ہم CA کے لیے RSA-2048 نجی کلید بناتے ہیں۔ ایسا کرنے کے لیے، ٹیب پر نجی چابیاں ۔ نئی چابی اور مناسب قسم کا انتخاب کریں۔
نئے کلیدی جوڑے کے لیے ایک نام سیٹ کریں۔ میں نے اسے CA Key کہا۔
ہم CA سرٹیفکیٹ خود جاری کرتے ہیں، بنائے گئے کلیدی جوڑے کا استعمال کرتے ہوئے۔ ایسا کرنے کے لیے، ٹیب پر جائیں۔ سرٹیفکیٹس اور کلک کریں۔ نیا سرٹیفکیٹ.
انتخاب ضرور کریں۔ ان شاء 256کیونکہ SHA-1 کا استعمال اب محفوظ نہیں سمجھا جا سکتا ہے۔
ٹیمپلیٹ کے طور پر منتخب کرنا یقینی بنائیں [پہلے سے طے شدہ] CA. پر کلک کرنا نہ بھولیں۔ سب کو لگائیں۔، بصورت دیگر ٹیمپلیٹ لاگو نہیں ہوتا ہے۔
ٹیب میں۔ مضمون ہماری کلیدی جوڑی کا انتخاب کریں۔ وہاں آپ سرٹیفکیٹ کے تمام اہم فیلڈز کو پُر کر سکتے ہیں۔
چابیاں اور ایک https سرور سرٹیفکیٹ بنانا
اسی طرح، ہم سرور کے لیے ایک RSA-2048 نجی کلید بناتے ہیں، میں نے اسے سرور کی کہا۔
سرٹیفکیٹ بناتے وقت، ہم منتخب کرتے ہیں کہ سرور سرٹیفکیٹ پر CA سرٹیفکیٹ کے ساتھ دستخط ہونا ضروری ہے۔
منتخب کرنا نہ بھولیں۔ ان شاء 256.
ہم ٹیمپلیٹ کے طور پر منتخب کرتے ہیں۔ [ڈیفالٹ] HTTPS_server. پر کلک کریں سب کو لگائیں۔.
پھر ٹیب پر مضمون ہماری کلید کو منتخب کریں اور مطلوبہ فیلڈز کو پُر کریں۔
صارف کے لیے چابیاں اور سرٹیفکیٹ بنائیں
صارف کی نجی کلید ہمارے ٹوکن پر محفوظ کی جائے گی۔ اس کے ساتھ کام کرنے کے لیے، آپ کو ہماری ویب سائٹ سے PKCS#11 لائبریری کو انسٹال کرنا ہوگا۔ مقبول ڈسٹری بیوشن کے لیے، ہم ریڈی میڈ پیکجز تقسیم کرتے ہیں، جو یہاں موجود ہیں - https://www.rutoken.ru/support/download/pkcs/. ہمارے پاس arm64, armv7el, armv7hf, e2k, mipso32el کے لیے اسمبلیاں بھی ہیں، جنہیں ہمارے SDK سے ڈاؤن لوڈ کیا جا سکتا ہے۔ https://www.rutoken.ru/developers/sdk/. لینکس کے لیے اسمبلیوں کے علاوہ، macOS، freebsd اور android کے لیے بھی اسمبلیاں ہیں۔
XCA میں ایک نیا PKCS#11 فراہم کنندہ شامل کرنا۔ ایسا کرنے کے لیے مینو پر جائیں۔ آپشنز کے بھی ٹیب پر PKCS#11 فراہم کنندہ.
ہم دبائیں شامل کریں اور PKCS#11 لائبریری کا راستہ منتخب کریں۔ میرے معاملے میں یہ usrliblibrtpkcs11ecp.so ہے۔
ہم کلیدی قسم کے طور پر Rutoken EDS PKI کے لیے RSA-2048 کلید کو منتخب کرتے ہیں۔ میں نے اس کلید کو کلائنٹ کی کہا۔
پن کوڈ درج کریں۔ اور ہم کلیدی جوڑی کی ہارڈویئر جنریشن کی تکمیل کا انتظار کرتے ہیں۔
ہم سرور سرٹیفکیٹ کے ساتھ مشابہت کے ذریعہ صارف کے لیے ایک سرٹیفکیٹ بناتے ہیں۔ اس بار ہم ایک ٹیمپلیٹ منتخب کرتے ہیں۔ [ڈیفالٹ] HTTPS_client اور کلک کرنا نہ بھولیں۔ سب کو لگائیں۔.
ٹیب میں۔ مضمون صارف کے بارے میں معلومات درج کریں۔ ہم ٹوکن کے لیے سرٹیفکیٹ کو محفوظ کرنے کی درخواست کا اثبات میں جواب دیتے ہیں۔
نتیجے کے طور پر، ٹیب پر سرٹیفکیٹس XCA میں آپ کو کچھ ایسا ملنا چاہیے۔
چابیاں اور سرٹیفکیٹس کا یہ کم از کم سیٹ سرورز کو خود ترتیب دینا شروع کرنے کے لیے کافی ہے۔
کنفیگر کرنے کے لیے، ہمیں CA سرٹیفکیٹ، سرور سرٹیفکیٹ اور سرور پرائیویٹ کلید برآمد کرنے کی ضرورت ہے۔
ایسا کرنے کے لیے، XCA میں متعلقہ ٹیب پر مطلوبہ اندراج کو منتخب کریں اور کلک کریں۔ برآمد.
نگنکس
میں یہ نہیں لکھوں گا کہ nginx سرور کو کیسے انسٹال اور چلایا جائے - انٹرنیٹ پر اس موضوع پر کافی مضامین موجود ہیں، سرکاری دستاویزات کا ذکر کرنے کے لیے نہیں۔ آئیے ٹوکن کا استعمال کرتے ہوئے براہ راست HTTPS اور دو عنصر کی توثیق کو ترتیب دیں۔
nginx.conf میں سرور سیکشن میں درج ذیل لائنیں شامل کریں:
میں صرف ان باتوں کو مختصراً بیان کروں گا جو میں نے خود سے پوچھا:
ssl_verify_client - یہ بتاتا ہے کہ سرٹیفکیٹ کے لیے اعتماد کے سلسلے کی تصدیق کی ضرورت ہے۔
ssl_verify_depth - سلسلہ میں قابل اعتماد روٹ سرٹیفکیٹ کے لیے تلاش کی گہرائی کی وضاحت کرتا ہے۔ چونکہ ہمارے کلائنٹ کے سرٹیفکیٹ پر فوری طور پر روٹ سرٹیفکیٹ پر دستخط کیے جاتے ہیں، اس لیے گہرائی 1 پر سیٹ کی جاتی ہے۔ اگر صارف کا سرٹیفکیٹ انٹرمیڈیٹ CA پر دستخط شدہ ہے، تو اس پیرامیٹر میں 2 کی وضاحت ہونی چاہیے، وغیرہ۔
ssl_client_certificate - قابل اعتماد روٹ سرٹیفکیٹ کا راستہ بتاتا ہے، جو صارف کے سرٹیفکیٹ پر اعتماد کی جانچ کے وقت استعمال ہوتا ہے۔
ssl_certificate/ssl_certificate_key - سرور سرٹیفکیٹ/نجی کلید کے راستے کی نشاندہی کریں۔
یہ چیک کرنے کے لیے nginx -t کو چلانا نہ بھولیں کہ کنفیگریشن میں کوئی ٹائپ کی غلطی نہیں ہے، اور یہ کہ تمام فائلیں صحیح جگہ پر ہیں، وغیرہ۔
اور بس یہی! جیسا کہ آپ دیکھ سکتے ہیں، سیٹ اپ بہت آسان ہے۔
آئیے پہلے بغیر ٹوکن کے لاگ ان کرنے کی کوشش کریں۔ ہمیں یہ تصویر ملتی ہے:
چلو چلتے ہیں کے بارے میں: ترجیحات # رازداری، اور ہم جاتے ہیں۔ سیکیورٹی آلات…
ہم دبائیں لوڈایک نیا PKCS#11 ڈیوائس ڈرائیور شامل کرنے اور ہمارے librtpkcs11ecp.so کا راستہ بتانے کے لیے۔
یہ چیک کرنے کے لیے کہ سرٹیفکیٹ نظر آ رہا ہے، آپ جا سکتے ہیں۔ سرٹیفکیٹ مینیجر. آپ کو اپنا PIN درج کرنے کے لیے کہا جائے گا۔ درست ان پٹ کے بعد، آپ چیک کر سکتے ہیں کہ ٹیب پر کیا ہے۔ آپ کے سرٹیفکیٹ ٹوکن سے ہمارا سرٹیفکیٹ ظاہر ہوا۔
اب ٹوکن کے ساتھ چلتے ہیں۔ فائر فاکس آپ کو ایک سرٹیفکیٹ منتخب کرنے کا اشارہ کرتا ہے جسے سرور کے لیے منتخب کیا جائے گا۔ ہمارا سرٹیفکیٹ منتخب کریں۔
منافع!
سیٹ اپ ایک بار ہو جاتا ہے، اور جیسا کہ آپ سرٹیفکیٹ کی درخواست ونڈو میں دیکھ سکتے ہیں، ہم اپنا انتخاب محفوظ کر سکتے ہیں۔ اس کے بعد، جب بھی ہم پورٹل میں لاگ ان ہوں گے، ہمیں صرف ایک ٹوکن داخل کرنے اور صارف کا PIN کوڈ داخل کرنے کی ضرورت ہوگی جو فارمیٹنگ کے دوران بیان کیا گیا تھا۔ اس طرح کی تصدیق کے بعد، سرور کو پہلے سے ہی معلوم ہوتا ہے کہ کس صارف نے لاگ ان کیا ہے اور آپ تصدیق کے لیے مزید کوئی اضافی ونڈوز نہیں بنا سکتے، لیکن فوری طور پر صارف کو اس کے ذاتی اکاؤنٹ میں جانے دیں۔
اپاچی
بالکل اسی طرح جیسے nginx کے ساتھ، کسی کو بھی اپاچی انسٹال کرنے میں کوئی پریشانی نہیں ہونی چاہیے۔ اگر آپ اس ویب سرور کو انسٹال کرنے کا طریقہ نہیں جانتے ہیں تو صرف سرکاری دستاویزات کا استعمال کریں۔
اور ہم اپنے HTTPS اور دو عنصر کی توثیق کو ترتیب دینا شروع کرتے ہیں:
پہلے آپ کو mod_ssl کو چالو کرنے کی ضرورت ہے:
$ a2enmod ssl
اور پھر سائٹ کی ڈیفالٹ HTTPS ترتیبات کو فعال کریں:
$ a2ensite default-ssl
اب ہم کنفیگریشن فائل میں ترمیم کرتے ہیں: /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
جیسا کہ آپ دیکھ سکتے ہیں، کسی بھی ویب سرور پر دو عنصر کی توثیق ترتیب دینے میں، چاہے ونڈوز ہو یا لینکس، زیادہ سے زیادہ ایک گھنٹہ لیتا ہے۔ اور براؤزرز کو ترتیب دینے میں تقریباً 5 منٹ لگتے ہیں۔ بہت سے لوگ سوچتے ہیں کہ دو عنصر کی توثیق کے ساتھ ترتیب دینا اور کام کرنا مشکل اور غیر واضح ہے۔ مجھے امید ہے کہ ہمارا مضمون اس خرافات کو ختم کر دے گا، کم از کم تھوڑا سا۔
سروے میں صرف رجسٹرڈ صارفین ہی حصہ لے سکتے ہیں۔ سائن ان، برائے مہربانی.
کیا آپ کو GOST 34.10-2012 کے مطابق سرٹیفکیٹس کے ساتھ TLS ترتیب دینے کے لیے ہدایات کی ضرورت ہے: