تجربه استفاده از فناوری روتوکن برای ثبت نام و مجوزدهی کاربران در سیستم (قسمت دوم)

عصر بخیر بیایید به این موضوع ادامه دهیمقسمت قبلی در لینک قابل مشاهده است).

امروز به قسمت عملی آن می رویم. بیایید با تنظیم CA خود بر اساس کتابخانه رمزنگاری متن باز کامل openSSL شروع کنیم. این الگوریتم با استفاده از ویندوز 7 تست شده است.

با نصب openSSL، می‌توانیم عملیات رمزنگاری مختلفی (مانند ایجاد کلیدها و گواهی‌ها) را از طریق خط فرمان انجام دهیم.

الگوریتم اقدامات به شرح زیر است:

  1. توزیع نصب openssl-1.1.1g را دانلود کنید.
    openSSL نسخه های مختلفی دارد. در اسناد روتوکن آمده است که openSSL نسخه 1.1.0 یا جدیدتر مورد نیاز است. من از نسخه openssl-1.1.1g استفاده کردم. می توانید openSSL را از سایت رسمی دانلود کنید، اما برای نصب راحت تر، باید فایل نصب ویندوز را در نت پیدا کنید. من این کار را برای شما انجام دادم: slproweb.com/products/Win32OpenSSL.html
    صفحه را به پایین اسکرول کنید و Win64 OpenSSL v1.1.1g EXE 63MB Installer را دانلود کنید.
  2. openssl-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 ] دارد. در فایل openssl.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 انجام می شود.

    • اول از همه، شما باید الگوریتم های لازم روتوکن را دانلود کنید. اینها فایل‌های rtengine.dll، rtpkcs11ecp.dll هستند.
      برای انجام این کار، Rutoken SDK را دانلود کنید: www.rutoken.ru/developers/sdk.

      Rutoken SDK همه چیز برای توسعه دهندگانی است که می خواهند 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 بدون درایور نصب شده برای روتوکن کار نمی کنند. همچنین روتوکن باید به کامپیوتر متصل باشد. (برای نصب همه چیزهایی که برای روتوکن نیاز دارید، به قسمت قبلی مقاله مراجعه کنید habr.com/fa/post/506450)

    • کتابخانه های rtengine.dll و rtpkcs11ecp.dll را می توان در هر جایی از حساب کاربری نگه داشت.
    • ما مسیرهای این کتابخانه ها را در openssl.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 ایجاد شد.

    در متغیر path، باید مسیر پوشه ای که openssl.exe در آن قرار دارد را مشخص کنید، در مورد من این است: C: Program FilesOpenSSL-Win64bin.

  8. اکنون می توانید به مرحله 5 برگردید و فایل های گم شده را برای دایرکتوری demoCA ایجاد کنید.
    1. اولین فایل مهمی که هیچ چیز بدون آن کار نمی کند سریال است. این یک فایل بدون پسوند است که مقدار آن باید 01 باشد. می توانید این فایل را خودتان بسازید و داخل آن 01 بنویسید. همچنین می توانید آن را از Rutoken SDK در مسیر sdk/openssl/rtengine/samples/tool/demoCA دانلود کنید. /.
      دایرکتوری demoCA حاوی فایل سریال است که دقیقا همان چیزی است که ما نیاز داریم.
    2. یک کلید خصوصی ریشه ایجاد کنید.
      برای این کار از دستور openSSL library استفاده می کنیم که باید مستقیماً در خط فرمان اجرا شود:

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

    3. ما یک گواهی ریشه ایجاد می کنیم.
      برای این کار از دستور openSSL library زیر استفاده کنید:

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

      لطفاً توجه داشته باشید که کلید خصوصی root که در مرحله قبل ایجاد شد برای تولید گواهی ریشه مورد نیاز است. بنابراین، خط فرمان باید در همان دایرکتوری راه اندازی شود.

    اکنون همه چیز دارای تمام فایل های گم شده برای پیکربندی کامل دایرکتوری demoCA است. فایل های ایجاد شده را در دایرکتوری های مشخص شده در نقطه 5 قرار دهید.

ما فرض می کنیم که پس از تکمیل هر 8 نقطه، مرکز صدور گواهینامه ما به طور کامل پیکربندی شده است.

در قسمت بعدی توضیح خواهم داد که چگونه با مرجع صدور گواهینامه کار خواهیم کرد تا آنچه را که در آن توضیح داده شد به انجام برسانیم. قسمت قبلی مقاله.

منبع: www.habr.com

اضافه کردن نظر