خبرة في استخدام تقنية Rutoken لتسجيل المستخدمين وترخيصهم في النظام (الجزء الأول)

مساء الخير دعونا نواصل هذا الموضوعالجزء السابق تجده على الرابط).

واليوم ننتقل إلى الجزء العملي. لنبدأ بإعداد CA الخاص بنا استنادًا إلى مكتبة التشفير مفتوحة المصدر الكاملة openSSL. تم اختبار هذه الخوارزمية باستخدام Windows 7.

مع تثبيت openSSL، يمكننا إجراء عمليات تشفير متنوعة (مثل إنشاء المفاتيح والشهادات) عبر سطر الأوامر.

خوارزمية الإجراءات هي كما يلي:

  1. قم بتنزيل توزيع التثبيت openssl-1.1.1g.
    لدى openSSL إصدارات مختلفة. تشير وثائق Rutoken إلى أن الإصدار 1.1.0 من openSSL أو الأحدث مطلوب. لقد استخدمت نسخة opensl-1.1.1g. يمكنك تنزيل openSSL من الموقع الرسمي، ولكن لتثبيت أسهل، تحتاج إلى العثور على ملف التثبيت لنظام التشغيل Windows على الشبكة. فعلت هذا بالنسبة لك: slproweb.com/products/Win32OpenSSL.html
    قم بالتمرير لأسفل الصفحة وقم بتنزيل Win64 OpenSSL v1.1.1g EXE 63MB Installer.
  2. قم بتثبيت opensl-1.1.1g على الكمبيوتر.
    يجب أن يتم التثبيت وفقًا للمسار القياسي، والذي تتم الإشارة إليه تلقائيًا في المجلد C: Program Files. سيتم تثبيت البرنامج في المجلد OpenSSL-Win64.
  3. من أجل إعداد openSSL بالطريقة التي تريدها، يوجد ملف openssl.cfg. يوجد هذا الملف في المسار C:\Program Files\OpenSSL-Win64bin إذا قمت بتثبيت openSSL كما هو موضح في الفقرة السابقة. انتقل إلى المجلد حيث تم تخزين openssl.cfg وافتح هذا الملف باستخدام Notepad++، على سبيل المثال.
  4. ربما خمنت أنه سيتم تكوين المرجع المصدق بطريقة ما عن طريق تغيير محتويات الملف openssl.cfg، وأنت على حق تمامًا. يتطلب هذا تخصيص الأمر [ca]. في ملف opensl.cfg، يمكن العثور على بداية النص الذي سنقوم بإجراء التغييرات فيه على النحو التالي: [ca].
  5. سأقدم الآن مثالاً على الإعداد مع وصفه:
    [ ca ]
    default_ca	= CA_default		
    
     [ CA_default ]
    dir		= /Users/username/bin/openSSLca/demoCA		 
    certs		= $dir/certs		
    crl_dir		= $dir/crl		
    database	= $dir/index.txt	
    new_certs_dir	= $dir/newcerts	
    certificate	= $dir/ca.crt 	
    serial		= $dir/private/serial 		
    crlnumber	= $dir/crlnumber	
    					
    crl		= $dir/crl.pem 		
    private_key	= $dir/private/ca.key
    x509_extensions	= usr_cert
    

    نحن الآن بحاجة إلى إنشاء دليل demoCA والأدلة الفرعية كما هو موضح في المثال أعلاه. وضعه في هذا الدليل على طول المسار المحدد في dir (لدي /Users/username/bin/openSSLca/demoCA).

    من المهم جدًا كتابة dir بشكل صحيح - هذا هو المسار إلى الدليل الذي سيقع فيه مركز الشهادات الخاص بنا. يجب أن يكون هذا الدليل موجودًا في /Users (أي في حساب بعض المستخدمين). إذا قمت بوضع هذا الدليل، على سبيل المثال، في C: Program Files، فلن يرى النظام الملف الذي يحتوي على إعدادات openssl.cfg (على الأقل كان الأمر كذلك بالنسبة لي).

    $dir - يتم استبدال المسار المحدد في dir هنا.

    نقطة أخرى مهمة هي إنشاء ملف Index.txt فارغ، فبدون هذا الملف لن تعمل أوامر "openSSL ca...".

    تحتاج أيضًا إلى ملف تسلسلي، ومفتاح خاص للجذر (ca.key)، وشهادة جذر (ca.crt). سيتم وصف عملية الحصول على هذه الملفات أدناه.

  6. نقوم بتوصيل خوارزميات التشفير التي تقدمها Rutoken.
    يحدث هذا الاتصال في ملف openssl.cfg.

    • أولا وقبل كل شيء، تحتاج إلى تنزيل خوارزميات Rutoken الضرورية. هذه هي الملفات rtengine.dll، rtpkcs11ecp.dll.
      للقيام بذلك، قم بتنزيل Rutoken SDK: www.rutoken.ru/developers/sdk.

      إن Rutoken SDK هو كل ما هو متاح للمطورين الذين يرغبون في تجربة Rutoken. يوجد كلا المثالين المنفصلين للعمل مع Rutoken بلغات برمجة مختلفة، ويتم تقديم بعض المكتبات. توجد مكتباتنا rtengine.dll وrtpkcs11ecp.dll في Rutoken sdk، على التوالي، في الموقع:

      sdk/openssl/rtengine/bin/windows-x86_64/lib/rtengine.dll
      sdk/pkcs11/lib/windows-x86_64/rtpkcs11ecp.dll

      نقطة مهمة جدا. لا تعمل المكتبات rtengine.dll وrtpkcs11ecp.dll بدون برنامج التشغيل المثبت لـ Rutoken. يجب أيضًا توصيل Rutoken بالكمبيوتر. (لتثبيت كل ما تحتاجه لـ Rutoken، راجع الجزء السابق من المقالة habr.com/ar/post/506450)

    • يمكن الاحتفاظ بمكتبات rtengine.dll وrtpkcs11ecp.dll في أي مكان في حساب المستخدم.
    • نكتب المسارات إلى هذه المكتبات في opensl.cfg. للقيام بذلك، افتح الملف openssl.cfg، ضع السطر في بداية هذا الملف:
      openssl_conf = openssl_def

      في نهاية الملف تحتاج إلى إضافة:

      [ openssl_def ]
      engines = engine_section
      [ engine_section ]
      rtengine = gost_section
      [ gost_section ]
      dynamic_path = /Users/username/bin/sdk-rutoken/openssl/rtengine/bin/windows-x86_64/lib/rtengine.dll
      MODULE_PATH = /Users/username/bin/sdk-rutoken/pkcs11/lib/windows-x86_64/rtpkcs11ecp.dll
      RAND_TOKEN = pkcs11:manufacturer=Aktiv%20Co.;model=Rutoken%20ECP
      default_algorithms = CIPHERS, DIGEST, PKEY, RAND
      

      Dynamic_path - يجب عليك تحديد المسار الخاص بك إلى مكتبة rtengine.dll.
      MODULE_PATH - تحتاج إلى تعيين المسار الخاص بك إلى مكتبة rtpkcs11ecp.dll.

  7. إضافة متغيرات البيئة.

    تأكد من إضافة متغير بيئة يحدد المسار إلى ملف التكوين openssl.cfg. في حالتي، تم إنشاء المتغير OPENSSL_CONF بالمسار C:Program FilesOpenSSL-Win64binopenssl.cfg.

    في متغير المسار، يجب عليك تحديد المسار إلى المجلد الذي يوجد به openssl.exe، في حالتي هو: C: Program FilesOpenSSL-Win64bin.

  8. يمكنك الآن العودة إلى الخطوة 5 وإنشاء الملفات المفقودة لدليل demoCA.
    1. الملف المهم الأول الذي بدونه لن يعمل شيء هو الملف التسلسلي. هذا ملف بدون امتداد، وقيمته يجب أن تكون 01. يمكنك إنشاء هذا الملف بنفسك وكتابة 01 بداخله، ويمكنك أيضًا تنزيله من Rutoken SDK على طول المسار sdk/openssl/rtengine/samples/tool/demoCA /.
      يحتوي دليل demoCA على الملف التسلسلي، وهو بالضبط ما نحتاجه.
    2. قم بإنشاء مفتاح خاص للجذر.
      للقيام بذلك، سوف نستخدم أمر مكتبة openSSL، والذي يجب تشغيله مباشرة على سطر الأوامر:

      openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:A -out ca.key

    3. نقوم بإنشاء شهادة الجذر.
      للقيام بذلك، استخدم أمر مكتبة openSSL التالي:

      openssl req -utf8 -x509 -key ca.key -out ca.crt

      يرجى ملاحظة أن المفتاح الخاص الجذر، الذي تم إنشاؤه في الخطوة السابقة، مطلوب لإنشاء شهادة الجذر. لذلك، يجب تشغيل سطر الأوامر في نفس الدليل.

    يحتوي كل شيء الآن على كافة الملفات المفقودة للتكوين الكامل لدليل demoCA. ضع الملفات التي تم إنشاؤها في الدلائل المشار إليها في النقطة 5.

سنفترض أنه بعد إكمال جميع النقاط الثماني، يكون مركز الشهادات الخاص بنا قد تم تكوينه بالكامل.

في الجزء التالي، سأصف كيف سنعمل مع جهة التصديق من أجل إنجاز ما تم وصفه في الجزء السابق من المقال.

المصدر: www.habr.com

إضافة تعليق