MODUTIL(1) دستورات کاربر MODUTIL(1)

modutil - مدیریت ماژولهای پایگاهداده امنیتی PKCS #11 در NSS

modutil [گزینه‌ها] [[آرگومان‌ها]]

این مستندات هنوز در حال تکمیل هستند. لطفاً در بررسی اولیه در خطای ۸۳۶۴۷۷ موزیلا NSS[1] مشارکت فرمایید.

دستور modutil ابزاری برای مدیریت پایگاهداده ماژولهای امنیتی PKCS #11 (فایلهای secmod.db) در سرویسهای امنیت شبکه NSS است.

ابزار پایگاه‌داده ماژول امنیتی، modutil، یک ابزار خط فرمانی برای مدیریت اطلاعات ماژول PKCS #11 هم در فایل‌های secmod.db و هم درون توکن‌های سخت‌افزاری است. modutil می‌تواند ماژول‌های PKCS #11 را اضافه یا حذف کند، گذرواژه‌های پایگاه‌های داده امنیتی را تغییر دهد، مقادیر پیش‌فرض را تعیین نماید، محتویات ماژول را فهرست کند، اسلات‌ها را فعال یا غیرفعال سازد، انطباق با استاندارد FIPS 140-2 را فعال یا غیرفعال کند و ارائه‌دهندگان پیش‌فرض را برای عملیات رمزنگاری تخصیص دهد. این ابزار همچنین می‌تواند فایل‌های پایگاه‌داده گواهی، کلید و ماژول امنیتی را ایجاد نماید.

وظایف مرتبط با مدیریت پایگاه‌داده ماژول‌های امنیتی بخشی از فرایندی هستند که معمولاً شامل مدیریت پایگاه‌های داده کلید و پایگاه‌های داده گواهی نیز می‌شود.

اجرای modutil همواره نیازمند یک (و تنها یک) گزینه برای تعیین نوع عملیات ماژول است. هر گزینه ممکن است آرگومان‌هایی دریافت کند، از هیچ تا چندین آرگومان.

گزینه‌ها

-add modulename

ماژول PKCS #11 نام‌برده را به پایگاه‌داده اضافه می‌کند. از این گزینه به همراه آرگومان‌های -libfile، -ciphers و -mechanisms استفاده کنید.

-changepw tokenname

گذرواژه توکن نام‌برده را تغییر می‌دهد. اگر توکن مقداردهی اولیه نشده باشد، این گزینه گذرواژه را مقداردهی اولیه می‌کند. از این گزینه به همراه آرگومان‌های -pwfile و -newpwfile استفاده کنید. یک گذرواژه معادل یک شماره شناسایی شخصی (PIN) است.

-chkfips

بررسی می‌کند که آیا ماژول در حالت FIPS مشخص‌شده قرار دارد یا خیر. true به معنای بررسی قرار داشتن ماژول در حالت FIPS است، در حالی که false بررسی می‌کند که ماژول در حالت FIPS نباشد.

-create

پایگاه‌های داده جدید گواهی، کلید و ماژول را ایجاد می‌کند. از آرگومان دایرکتوری -dbdir برای تعیین یک پوشه استفاده کنید. اگر هر یک از این پایگاه‌های داده قبلاً در پوشه مشخص‌شده وجود داشته باشند، modutil پیام خطا برمی‌گرداند.

-default modulename

سازوکارهای امنیتی را مشخص می‌کند که ماژول نام‌برده ارائه‌دهنده پیش‌فرض آن‌ها خواهد بود. سازوکارهای امنیتی با آرگومان -mechanisms تعیین می‌شوند.

-delete modulename

ماژول نام‌برده را حذف می‌کند. ماژول پیش‌فرض NSS PKCS #11 قابل حذف نیست.

-disable modulename

تمام اسلات‌های ماژول نام‌برده را غیرفعال می‌کند. از آرگومان -slot برای غیرفعال کردن یک اسلات خاص استفاده کنید.

ماژول داخلی NSS PKCS #11 قابل غیرفعال کردن نیست.

-enable modulename

تمام اسلات‌های ماژول نام‌برده را فعال می‌کند. از آرگومان -slot برای فعال کردن یک اسلات خاص استفاده کنید.

-fips [true | false]

انطباق با استاندارد FIPS 140-2 را برای ماژول پیش‌فرض NSS فعال (true) یا غیرفعال (false) می‌کند.

-force

پرسش‌های تعاملی modutil را غیرفعال می‌کند تا بتوان آن را از طریق یک اسکریپت اجرا کرد. از این گزینه تنها پس از آزمایش دستی تک‌تک عملیات‌های برنامه‌ریزی‌شده استفاده کنید تا هشدارها بررسی شوند و اطمینان حاصل شود که نادیده گرفتن پرسش‌ها موجب رخنه امنیتی یا از دست رفتن یکپارچگی پایگاه‌داده نمی‌شود.

-jar JAR-file

یک ماژول PKCS #11 جدید را با استفاده از فایل JAR نام‌برده به پایگاه‌داده اضافه می‌کند. از این دستور به همراه آرگومان‌های -installdir و -tempdir استفاده کنید. فایل JAR از ساختار NSS PKCS #11 JAR برای شناسایی تمام فایل‌های نصبی، نام ماژول، فلگ‌های سازوکار و فلگ‌های الگوریتم رمزنگاری، و همچنین تمامی فایل‌هایی که باید روی سیستم مقصد نصب شوند (شامل فایل کتابخانه ماژول PKCS #11 و سایر فایل‌ها نظیر مستندات) استفاده می‌کند. این موضوع در بخش قالب فایل نصب JAR در همین صفحه راهنما پوشش داده شده است که جزئیات اسکریپت خاص مورد نیاز برای انجام نصب از طریق سرور یا با modutil را شرح می‌دهد.

-list [modulename]

اطلاعات پایه‌ای درباره محتویات فایل secmod.db نمایش می‌دهد. تعیین یک modulename اطلاعات دقیق در مورد یک ماژول خاص و اسلات‌ها و توکن‌های آن را نشان می‌دهد.

-rawadd

رشته مشخصات ماژول (module spec) را به پایگاه‌داده secmod.db اضافه می‌کند.

-rawlist

مشخصات ماژول را برای یک ماژول خاص یا برای تمامی ماژول‌های قابل بارگذاری نمایش می‌دهد.

-undefault modulename

سازوکارهای امنیتی را مشخص می‌کند که ماژول نام‌برده ارائه‌دهنده پیش‌فرض آن‌ها نخواهد بود. سازوکارهای امنیتی با آرگومان -mechanisms مشخص می‌شوند.

آرگومان‌ها

MODULE

ماژول امنیتی مورد دسترسی را مشخص می‌کند.

MODULESPEC

مشخصات ماژول امنیتی (module spec) جهت بارگذاری در پایگاه‌داده امنیتی را مشخص می‌کند.

-ciphers cipher-enable-list

رمزهای مشخصی را در ماژولی که در حال افزودن به پایگاه‌داده است فعال می‌کند. عبارت cipher-enable-list فهرستی از نام‌های الگوریتم رمزنگاری است که با دو‌نقطه (:) از هم جدا شده‌اند. اگر این فهرست شامل فاصله است آن را در علامت نقل‌قول قرار دهید.

-dbdir directory

دایرکتوری پایگاه‌داده را برای دسترسی یا ایجاد فایل‌های پایگاه‌داده ماژول امنیتی مشخص می‌کند.

ابزار modutil از دو نوع پایگاه‌داده پشتیبانی می‌کند: پایگاه‌های داده امنیتی سنتی (cert8.db، key3.db و secmod.db) و پایگاه‌های داده SQLite (cert9.db، key4.db و pkcs11.txt). اگر پیشوند dbm: استفاده نشود، ابزار فرض می‌کند که پایگاه‌های داده داده‌شده در قالب SQLite هستند.

--dbprefix prefix

پیشوند استفاده‌شده روی فایل‌های پایگاه‌داده را مشخص می‌کند، مانند my_ برای my_cert9.db. این گزینه برای موارد خاص در نظر گرفته شده است؛ تغییر دادن نام‌های پایگاه‌های داده گواهی و کلید توصیه نمی‌شود.

-installdir root-installation-directory

دایرکتوری ریشه نصب را که فایل‌ها با گزینه -jar نسبت به آن نصب می‌شوند مشخص می‌کند. این پوشه باید مکانی باشد که ذخیره فایل‌های کتابخانه پویا در زیرشاخه آن مناسب است، مانند پوشه ریشه یک سرور.

-libfile library-file

مسیری به یک فایل کتابخانه حاوی پیاده‌سازی ماژول رابط PKCS #11 که در حال افزودن به پایگاه‌داده است را مشخص می‌کند.

-mechanisms mechanism-list

سازوکارهای امنیتی را مشخص می‌کند که ماژول خاصی به عنوان ارائه‌دهنده پیش‌فرض آن‌ها علامت‌گذاری می‌شود. عبارت mechanism-list فهرستی از نام‌های سازوکارها است که با دو‌نقطه (:) جدا شده‌اند. اگر این فهرست شامل فاصله است آن را در علامت نقل‌قول قرار دهید.

هنگامی که این سازوکارها فعال شوند، ماژول ارائه‌دهنده پیش‌فرض آن‌ها می‌گردد. اگر بیش از یک ماژول ادعای ارائه‌دهنده پیش‌فرض بودن یک سازوکار خاص را داشته باشد، ارائه‌دهنده پیش‌فرض آن سازوکار تعریف‌نشده خواهد بود.

دستور modutil از چندین سازوکار پشتیبانی می‌کند: RSA، DSA، RC2، RC4، RC5، AES، DES، DH، SHA1، SHA256، SHA512، SSL، TLS، MD5، MD2، RANDOM (برای تولید اعداد تصادفی)، و FRIENDLY (به این معنی که گواهی‌ها به صورت عمومی قابل خواندن هستند).

-newpwfile new-password-file

یک فایل متنی حاوی گذرواژه جدید یا جایگزین توکن را مشخص می‌کند تا گذرواژه بتواند به‌طور خودکار با گزینه -changepw وارد شود.

-nocertdb

پایگاه‌های داده گواهی یا کلید را باز نمی‌کند. این کار چندین اثر دارد:
•با دستور -create، تنها یک فایل امنیتی ماژول ایجاد می‌شود؛ پایگاه‌های داده گواهی و کلید ایجاد نمی‌شوند.
•با دستور -jar، امضاهای فایل JAR بررسی نمی‌شوند.
•با دستور -changepw، گذرواژه ماژول داخلی NSS قابل تنظیم یا تغییر نیست، زیرا این گذرواژه در پایگاه‌داده کلید ذخیره می‌شود.

-pwfile old-password-file

یک فایل متنی حاوی گذرواژه فعلی توکن را مشخص می‌کند تا هنگام استفاده از گزینه -changepw برای تغییر گذرواژه، گذرواژه به‌طور خودکار وارد شود.

-secmod secmodname

نام پایگاه‌داده ماژول امنیتی (مانند secmod.db) جهت بارگذاری را مشخص می‌کند.

-slot slotname

یک اسلات خاص را برای فعال‌سازی یا غیرفعال‌سازی با گزینه‌های -enable یا -disable مشخص می‌کند.

-string CONFIG_STRING

یک رشته پیکربندی را برای ماژولی که به پایگاه‌داده اضافه می‌شود ارسال می‌کند.

-tempdir temporary-directory

مکان دایرکتوری ایجاد فایل‌های موقت در طول فرایند نصب توسط گزینه -jar را مشخص می‌کند. اگر پوشه موقتی مشخص نشود، از دایرکتوری جاری استفاده می‌شود.

ایجاد فایل‌های پایگاه‌داده

پیش از انجام هرگونه عملیات، باید مجموعه‌ای از پایگاه‌های داده امنیتی در دسترس باشد. از modutil می‌توان برای ایجاد این فایل‌ها استفاده کرد. تنها آرگومان الزامی، دایرکتوری محلی است که پایگاه‌های داده در آن قرار خواهند گرفت.

modutil -create -dbdir directory

افزودن یک ماژول رمزنگاری

افزودن یک ماژول PKCS #11 به معنای ارائه فایل کتابخانه پشتیبان، فعال‌سازی الگوریتم‌های رمزنگاری آن و تعیین وضعیت ارائه‌دهنده پیش‌فرض برای سازوکارهای امنیتی مختلف است. این کار را می‌توان با ارائه مستقیم تمامی اطلاعات از طریق modutil یا با اجرای یک فایل JAR و اسکریپت نصب انجام داد. برای ساده‌ترین حالت، تنها کتابخانه را بارگذاری کنید:

modutil -add modulename -libfile library-file [-ciphers cipher-enable-list] [-mechanisms mechanism-list] 

به عنوان مثال:

modutil -dbdir /home/my/sharednssdb -add "Example PKCS #11 Module" -libfile "/tmp/crypto.so" -mechanisms RSA:DSA:RC2:RANDOM 
Using database directory ... 
Module "Example PKCS #11 Module" added to database.

نصب یک ماژول رمزنگاری از یک فایل JAR

ماژول‌های PKCS #11 همچنین می‌توانند با استفاده از یک فایل JAR بارگذاری شوند که شامل تمامی کتابخانه‌های مورد نیاز و یک اسکریپت نصب است که نحوه نصب ماژول را توصیف می‌کند. اسکریپت نصب JAR با جزئیات بیشتر در بخش «قالب فایل نصب JAR» شرح داده شده است.

اسکریپت نصب JAR اطلاعات راه‌اندازی را برای هر بستری که ماژول می‌تواند روی آن نصب شود تعریف می‌کند. برای مثال:

Platforms { 
   Linux:5.4.08:x86 { 
      ModuleName { "Example PKCS #11 Module" } 
      ModuleFile { crypto.so } 
      DefaultMechanismFlags{0x0000} 
      CipherEnableFlags{0x0000} 
      Files { 
         crypto.so { 
            Path{ /tmp/crypto.so } 
         } 
         setup.sh { 
            Executable 
            Path{ /tmp/setup.sh } 
         } 
      } 
   } 
   Linux:6.0.0:x86 { 
      EquivalentPlatform { Linux:5.4.08:x86 } 
   } 
} 

هم اسکریپت نصب و هم کتابخانه‌های مورد نیاز باید در یک فایل JAR بسته‌بندی شوند که با آرگومان -jar مشخص می‌شود.

modutil -dbdir /home/mt"jar-install-filey/sharednssdb -jar install.jar -installdir /home/my/sharednssdb
This installation JAR file was signed by: 
---------------------------------------------- 
**SUBJECT NAME** 
C=US, ST=California, L=Mountain View, CN=Cryptorific Inc., OU=Digital ID
Class 3 - Netscape Object Signing, OU="www.verisign.com/repository/CPS
Incorp. by Ref.,LIAB.LTD(c)9 6", OU=www.verisign.com/CPS Incorp.by Ref
. LIABILITY LTD.(c)97 VeriSign, OU=VeriSign Object Signing CA - Class 3
Organization, OU="VeriSign, Inc.", O=VeriSign Trust Network **ISSUER
NAME**, OU=www.verisign.com/CPS Incorp.by Ref. LIABILITY LTD.(c)97
VeriSign, OU=VeriSign Object Signing CA - Class 3 Organization,
OU="VeriSign, Inc.", O=VeriSign Trust Network 
---------------------------------------------- 
Do you wish to continue this installation? (y/n) y 
Using installer script "installer_script" 
Successfully parsed installation script 
Current platform is Linux:5.4.08:x86 
Using installation parameters for platform Linux:5.4.08:x86 
Installed file crypto.so to /tmp/crypto.so
Installed file setup.sh to ./pk11inst.dir/setup.sh 
Executing "./pk11inst.dir/setup.sh"... 
"./pk11inst.dir/setup.sh" executed successfully 
Installed module "Example PKCS #11 Module" into module database 
Installation completed successfully 

افزودن مشخصات ماژول

هر ماژول اطلاعاتی درباره پیکربندی و پارامترهای خود دارد که در پایگاه‌داده امنیتی ذخیره می‌شود. این موارد را می‌توان با استفاده از دستور -rawadd اضافه یا ویرایش کرد. برای تنظیمات جاری یا مشاهده قالب مشخصات ماژول در پایگاه‌داده، از گزینه -rawlist استفاده کنید.

modutil -rawadd modulespec

حذف یک ماژول

یک ماژول خاص PKCS #11 را می‌توان از پایگاه‌داده secmod.db حذف کرد:

modutil -delete modulename -dbdir directory 

نمایش اطلاعات ماژول

پایگاه‌داده secmod.db حاوی اطلاعاتی درباره ماژول‌های PKCS #11 است که برای استفاده یک برنامه یا سرور در دسترس هستند. فهرست همه ماژول‌ها، اطلاعات مربوط به ماژول‌های خاص و مشخصات پیکربندی پایگاه‌داده برای ماژول‌ها همگی قابل مشاهده هستند.

برای دریافت ساده فهرست ماژول‌های موجود در پایگاه‌داده، از دستور -list استفاده کنید.

modutil -list [modulename] -dbdir directory 

فهرست کردن ماژول‌ها نام ماژول، وضعیت آن‌ها و سایر پایگاه‌های داده امنیتی مرتبط برای گواهی‌ها و کلیدها را نشان می‌دهد. برای مثال:

modutil -list -dbdir /home/my/sharednssdb 
Listing of PKCS #11 Modules
-----------------------------------------------------------
  1. NSS Internal PKCS #11 Module
         slots: 2 slots attached
        status: loaded
         slot: NSS Internal Cryptographic Services                            
        token: NSS Generic Crypto Services
	  uri: pkcs11:token=NSS%20Generic%20Crypto%20Services;manufacturer=Mozilla%20Foundation;serial=0000000000000000;model=NSS%203
         slot: NSS User Private Key and Certificate Services                  
        token: NSS Certificate DB
	  uri: pkcs11:token=NSS%20Certificate%20DB;manufacturer=Mozilla%20Foundation;serial=0000000000000000;model=NSS%203
-----------------------------------------------------------

ارسال نام یک ماژول مشخص به همراه -list اطلاعات دقیق در مورد خود ماژول مانند سازوکارهای رمزنگاری پشتیبانی‌شده، شماره نسخه‌ها، شماره سریال‌ها و سایر اطلاعات مربوط به ماژول و توکنی که روی آن بارگذاری شده است را برمی‌گرداند. برای مثال:

 modutil -list "NSS Internal PKCS #11 Module" -dbdir /home/my/sharednssdb
-----------------------------------------------------------
Name: NSS Internal PKCS #11 Module
Library file: **Internal ONLY module**
Manufacturer: Mozilla Foundation              
Description: NSS Internal Crypto Services    
PKCS #11 Version 2.20
Library Version: 3.11
Cipher Enable Flags: None
Default Mechanism Flags: RSA:RC2:RC4:DES:DH:SHA1:MD5:MD2:SSL:TLS:AES
  Slot: NSS Internal Cryptographic Services                            
  Slot Mechanism Flags: RSA:RC2:RC4:DES:DH:SHA1:MD5:MD2:SSL:TLS:AES
  Manufacturer: Mozilla Foundation              
  Type: Software
  Version Number: 3.11
  Firmware Version: 0.0
  Status: Enabled
  Token Name: NSS Generic Crypto Services     
  Token Manufacturer: Mozilla Foundation              
  Token Model: NSS 3           
  Token Serial Number: 0000000000000000
  Token Version: 4.0
  Token Firmware Version: 0.0
  Access: Write Protected
  Login Type: Public (no login required)
  User Pin: NOT Initialized
  Slot: NSS User Private Key and Certificate Services                  
  Slot Mechanism Flags: None
  Manufacturer: Mozilla Foundation              
  Type: Software
  Version Number: 3.11
  Firmware Version: 0.0
  Status: Enabled
  Token Name: NSS Certificate DB              
  Token Manufacturer: Mozilla Foundation              
  Token Model: NSS 3           
  Token Serial Number: 0000000000000000
  Token Version: 8.3
  Token Firmware Version: 0.0
  Access: NOT Write Protected
  Login Type: Login required
  User Pin: Initialized

دستور مرتبط -rawlist اطلاعات مربوط به پیکربندی پایگاه‌داده را برای ماژول‌ها برمی‌گرداند. (این اطلاعات را می‌توان با بارگذاری مشخصات جدید با استفاده از دستور -rawadd ویرایش کرد.)

modutil -rawlist -dbdir /home/my/sharednssdb
name="NSS Internal PKCS #11 Module" parameters="configdir=. certPrefix= keyPrefix= secmod=secmod.db flags=readOnly " NSS="trustOrder=75 cipherOrder=100 slotParams={0x00000001=[slotFlags=RSA,RC4,RC2,DES,DH,SHA1,MD5,MD2,SSL,TLS,AES,RANDOM askpw=any timeout=30 ] }  Flags=internal,critical"

تعیین ارائه‌دهنده پیش‌فرض برای سازوکارهای امنیتی

چندین ماژول امنیتی ممکن است از سازوکارهای امنیتی یکسانی پشتیبانی کنند. این امکان وجود دارد که یک ماژول امنیتی خاص را به عنوان ارائه‌دهنده پیش‌فرض یک سازوکار امنیتی خاص تعیین کنید (یا برعکس، یک ارائه‌دهنده را از ارائه آن سازوکارها منع نمایید).

modutil -default modulename -mechanisms mechanism-list 

برای تنظیم یک ماژول به عنوان ارائه‌دهنده پیش‌فرض سازوکارها، از دستور -default به همراه فهرستی از سازوکارها که با دو‌نقطه از هم جدا شده‌اند استفاده کنید. سازوکارهای در دسترس به ماژول بستگی دارند؛ NSS تقریباً تمام سازوکارهای رایج را فراهم می‌کند. برای مثال:

modutil -default "NSS Internal PKCS #11 Module" -dbdir -mechanisms RSA:DSA:RC2 
Using database directory c:\databases...
Successfully changed defaults.

پاک کردن ارائه‌دهنده پیش‌فرض نیز قالب مشابهی دارد:

modutil -undefault "NSS Internal PKCS #11 Module" -dbdir -mechanisms MD2:MD5

فعال و غیرفعال‌سازی ماژول‌ها و اسلات‌ها

ماژول‌ها و اسلات‌های خاص روی ماژول‌ها را می‌توان با استفاده از modutil به صورت انتخابی فعال یا غیرفعال کرد. هر دو دستور قالب یکسانی دارند:

modutil -enable|-disable modulename [-slot slotname] 

به عنوان مثال:

modutil -enable "NSS Internal PKCS #11 Module" -slot "NSS Internal Cryptographic Services                            " -dbdir .
Slot "NSS Internal Cryptographic Services                            " enabled.

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

فعال‌سازی و اعتبارسنجی انطباق با FIPS

ماژول‌های NSS می‌توانند با استفاده از modutil به همراه گزینه -fips انطباق با FIPS 140-2 را فعال یا غیرفعال کنند. برای مثال:

modutil -fips true -dbdir /home/my/sharednssdb/
FIPS mode enabled.

برای بررسی وضعیت حالت FIPS، دستور -chkfips را با فلگ true یا false اجرا کنید (فرقی نمی‌کند کدام یک). ابزار تنظیمات جاری FIPS را برمی‌گرداند.

modutil -chkfips false -dbdir /home/my/sharednssdb/
FIPS mode enabled.

تغییر گذرواژه در یک توکن

مقداردهی اولیه یا تغییر گذرواژه توکن:

modutil -changepw tokenname [-pwfile old-password-file] [-newpwfile new-password-file] 
modutil -dbdir /home/my/sharednssdb -changepw "NSS Certificate DB" 
Enter old password: 
Incorrect password, try again... 
Enter old password: 
Enter new password: 
Re-enter new password: 
Token "Communicator Certificate DB" password changed successfully.

هنگامی که یک فایل JAR توسط سرور، توسط modutil، یا توسط هر برنامه‌ای که جاوااسکریپت را تفسیر نمی‌کند اجرا می‌شود، باید یک فایل اطلاعات ویژه برای نصب کتابخانه‌ها گنجانده شود. چند نکته وجود دارد که باید در مورد این فایل به یاد داشته باشید:

•باید در فایل مانیفست آرشیو JAR اعلان شده باشد.
•اسکریپت می‌تواند هر نامی داشته باشد.
•تگ فراداده برای این مورد Pkcs11_install_script است. برای اعلان فراداده در فایل مانیفست، آن را در فایلی قرار دهید که به signtool داده می‌شود.

نمونه اسکریپت

برای مثال، اسکریپت نصاب PKCS #11 می‌تواند در فایل pk11install باشد. در این صورت، فایل فراداده برای signtool شامل خطی مانند این خواهد بود:

+ Pkcs11_install_script: pk11install

اسکریپت باید بستر و شماره نسخه، نام ماژول و فایل، و هرگونه اطلاعات اختیاری مانند الگوریتم‌های رمزنگاری و سازوکارهای پشتیبانی‌شده را تعریف کند. چندین بستر را می‌توان در یک فایل نصب منفرد تعریف کرد.

ForwardCompatible { IRIX:6.2:mips SUNOS:5.5.1:sparc }
Platforms {
   WINNT::x86 {
      ModuleName { "Example Module" }
      ModuleFile { win32/fort32.dll }
      DefaultMechanismFlags{0x0001}
      DefaultCipherFlags{0x0001}
      Files {
         win32/setup.exe {
            Executable
            RelativePath { %temp%/setup.exe }
         }
         win32/setup.hlp {
            RelativePath { %temp%/setup.hlp }
         }
         win32/setup.cab {
            RelativePath { %temp%/setup.cab }
         }
      }
   }
   SUNOS:5.5.1:sparc {
      ModuleName { "Example UNIX Module" }
      ModuleFile { unix/fort.so }
      DefaultMechanismFlags{0x0001}
      CipherEnableFlags{0x0001}
      Files {
         unix/fort.so {
            RelativePath{%root%/lib/fort.so}
            AbsolutePath{/usr/local/netscape/lib/fort.so}
            FilePermissions{555}
         }
         xplat/instr.html {
            RelativePath{%root%/docs/inst.html}
            AbsolutePath{/usr/local/netscape/docs/inst.html}
            FilePermissions{555}
         }
      }
   }
   IRIX:6.2:mips {
      EquivalentPlatform { SUNOS:5.5.1:sparc }
   }
}

گرامر اسکریپت

این اسکریپت جاوای پایه است که لیست‌ها، جفت‌های کلید-مقدار، رشته‌ها و ترکیبی از همه آن‌ها را مجاز می‌داند.

--> valuelist
valuelist --> value valuelist
               <null>
value ---> key_value_pair
            string
key_value_pair --> key { valuelist }
key --> string
string --> simple_string
            "complex_string"
simple_string --> [^ \t\n\""{""}"]+ 
complex_string --> ([^\"\\\r\n]|(\\\")|(\\\\))+ 

نقل‌قول‌ها و بک‌اسلش‌ها باید با یک بک‌اسلش اسکیپ شوند. یک رشته پیچیده نباید شامل خطوط جدید یا بازگشت به ابتدای سطر باشد. خارج از رشته‌های پیچیده، تمام فضاهای خالی (مانند فاصله‌ها، تب‌ها و کاراکترهای بازگشت به خط بعد) یکسان تلقی شده و صرفاً برای جداسازی نشانه‌ها استفاده می‌شوند.

کلیدها

فایل نصب جاوا از کلیدها برای تعریف اطلاعات پلتفرم و ماژول استفاده می‌کند.

ForwardCompatible فهرستی از پلتفرم‌هایی که سازگاری رو به جلو دارند را ارائه می‌دهد. اگر پلتفرم جاری در فهرست پلتفرم‌های پشتیبانی‌شده یافت نشود، فهرست ForwardCompatible برای پلتفرم‌هایی با همان سیستم‌عامل و معماری در یک نسخه پیشین بررسی می‌شود. در صورت یافتن، ویژگی‌های آن برای پلتفرم جاری به کار می‌رود.

Platforms (الزامی) فهرستی از پلتفرم‌ها را مشخص می‌کند. هر مدخل در فهرست خود یک جفت کلید-مقدار است: کلید نام پلتفرم است و فهرست مقادیر شامل ویژگی‌های گوناگون پلتفرم است. رشته پلتفرم در قالب system name:OS release:architecture است. نصاب این مقادیر را از NSPR به دست می‌آورد. مقدار OS release در سیستم‌عامل‌های غیر یونیکسی یک رشته خالی است. سامانه NSPR از این پلتفرم‌ها پشتیبانی می‌کند:

•AIX (rs6000)
•BSDI (x86)
•FREEBSD (x86)
•HPUX (hppa1.1)
•IRIX (mips)
•LINUX (ppc, alpha, x86)
•MacOS (PowerPC)
•NCR (x86)
•NEC (mips)
•OS2 (x86)
•OSF (alpha)
•ReliantUNIX (mips)
•SCO (x86)
•SOLARIS (sparc)
•SONY (mips)
•SUNOS (sparc)
•UnixWare (x86)
•WIN16 (x86)
•WIN95 (x86)
•WINNT (x86)

برای مثال:

IRIX:6.2:mips
SUNOS:5.5.1:sparc
Linux:2.0.32:x86
WIN95::x86

اطلاعات ماژول به طور مستقل برای هر پلتفرم در ویژگی‌های ModuleName، ModuleFile و Files تعریف می‌شود. این ویژگی‌ها باید ارائه شوند مگر اینکه یک ویژگی EquivalentPlatform مشخص شده باشد.

کلیدهای مربوط به هر پلتفرم

کلیدهای مربوط به هر پلتفرم تنها در فهرست مقادیر یک مدخل در فهرست Platforms معنا دارند.

ModuleName (الزامی) نام عمومی ماژول را مشخص می‌کند. این نام برای ارجاع به ماژول توسط سرورها و ابزار modutil به کار می‌رود.

ModuleFile (الزامی) نام فایل ماژول PKCS #11 را برای این پلتفرم مشخص می‌کند. این نام به عنوان مسیر نسبی فایل در آرشیو JAR داده می‌شود.

Files (الزامی) فایل‌هایی را که باید برای این ماژول نصب شوند فهرست می‌کند. هر مدخل در فهرست فایل یک جفت کلید-مقدار است. کلید مسیر فایل در آرشیو JAR است و فهرست مقادیر شامل ویژگی‌های فایل است. برای هر فایل حداقل یکی از RelativePath یا AbsolutePath باید مشخص شود.

DefaultMechanismFlags سازوکارهایی را تعیین می‌کند که این ماژول ارائه‌دهنده پیش‌فرض آن‌ها است؛ این معادل گزینه -mechanism همراه با دستور -add است. این جفت کلید-مقدار یک رشته بیتی است که در قالب هگزادسیمال (0x) مشخص می‌شود و به صورت OR بیتی ساخته می‌شود. اگر مدخل DefaultMechanismFlags حذف شود، مقدار به طور پیش‌فرض 0x0 خواهد بود.

RSA:                   0x00000001
DSA:                   0x00000002
RC2:                   0x00000004
RC4:                   0x00000008
DES:                   0x00000010
DH:                    0x00000020
FORTEZZA:              0x00000040
RC5:                   0x00000080
SHA1:                  0x00000100
MD5:                   0x00000200
MD2:                   0x00000400
RANDOM:                0x08000000
FRIENDLY:              0x10000000
OWN_PW_DEFAULTS:       0x20000000
DISABLE:               0x40000000

CipherEnableFlags الگوریتم‌های رمزنگاری ارائه‌شده توسط این ماژول را مشخص می‌کند که NSS فراهم نمی‌کند (تا ماژول آن الگوریتم‌ها را برای NSS فعال سازد). این معادل آرگومان -cipher در دستور -add است. این کلید یک رشته بیتی در قالب هگزادسیمال (0x) است و به صورت OR بیتی ساخته می‌شود. اگر مدخل CipherEnableFlags حذف شود، مقدار پیش‌فرض آن 0x0 خواهد بود.

EquivalentPlatform مشخص می‌کند که ویژگی‌های پلتفرم نام‌برده باید برای پلتفرم جاری نیز استفاده شوند. این کار استفاده از تنظیمات یکسان را در بیش از یک پلتفرم ساده‌تر می‌کند.

کلیدهای مربوط به هر فایل

برخی کلیدها تنها درون فهرست مقادیر یک مدخل در فهرست Files معنا دارند.

هر فایل به یک کلید مسیر نیاز دارد که محل قرارگیری فایل را مشخص کند. حداقل یکی از گزینه‌های RelativePath یا AbsolutePath باید تعیین شود. اگر هر دو تعیین شوند، ابتدا مسیر نسبی امتحان می‌شود و مسیر مطلق تنها زمانی استفاده می‌شود که هیچ پوشه ریشه نسبی توسط برنامه نصاب ارائه نشده باشد.

RelativePath دایرکتوری مقصد فایل را به صورت نسبی به پوشه‌ای که در زمان نصب مشخص می‌شود تعیین می‌کند. دو متغیر می‌توانند در مسیر نسبی استفاده شوند: %root% و %temp%. متغیر %root% در زمان اجرا با پوشه‌ای که فایل‌ها باید نسبت به آن نصب شوند جایگزین می‌شود؛ به عنوان مثال، ممکن است پوشه ریشه سرور باشد. پوشه %temp% در ابتدای نصب ایجاد شده و در پایان نابود می‌شود. هدف از %temp% نگهداری فایل‌های اجرایی (مانند برنامه‌های نصب) یا فایل‌های مورد استفاده این برنامه‌ها است. فایل‌های در نظر گرفته‌شده برای دایرکتوری موقت قبل از اجرای هر فایل اجرایی تضمین شده که در محل خود قرار دارند؛ آن‌ها تا زمانی که اجرای تمامی فایل‌های اجرایی پایان نیافته باشد حذف نخواهند شد.

AbsolutePath دایرکتوری مقصد فایل را به عنوان یک مسیر مطلق مشخص می‌کند.

Executable مشخص می‌کند که فایل باید در طول فرایند نصب اجرا شود. معمولاً این رشته برای برنامه نصبی که توسط ارائه‌دهنده ماژول ارائه شده است (مانند یک فایل اجرایی نصب خود-استخراج‌کننده) استفاده می‌شود. بیش از یک فایل را می‌توان به عنوان اجرایی مشخص کرد که در این صورت فایل‌ها به ترتیبی که در فایل اسکریپت مشخص شده‌اند اجرا می‌شوند.

FilePermissions مجوزهای هر فایل ارجاع داده شده را در قالب رشته‌ای از ارقام اکتال (مبنای ۸) طبق فرمت استاندارد یونیکس تنظیم می‌کند. این رشته یک OR بیتی است.

user read:                0400
user write:               0200
user execute:             0100
group read:               0040
group write:              0020
group execute:            0010
other read:               0004
other write:              0002
other execute:            0001

برخی پلتفرم‌ها ممکن است این مجوزها را درک نکنند. آن‌ها تنها تا جایی اعمال می‌شوند که برای پلتفرم جاری معنادار باشند. اگر این ویژگی حذف شود، مقدار پیش‌فرض 777 در نظر گرفته می‌شود.

سامانه NSS در ابتدا از پایگاه‌های داده BerkeleyDB برای ذخیره اطلاعات امنیتی استفاده می‌کرد. آخرین نسخه‌های این پایگاه‌های داده سنتی (legacy) عبارتند از:

•cert8.db برای گواهی‌ها
•key3.db برای کلیدها
•secmod.db برای اطلاعات ماژول PKCS #11

با این وجود، BerkeleyDB دارای محدودیت‌های کارایی است که مانع از استفاده آسان و هم‌زمان چند برنامه از آن می‌شود. نرم‌افزار NSS دارای انعطاف‌پذیری‌هایی است که به برنامه‌ها اجازه می‌دهد ضمن نگهداری یک پایگاه‌داده مشترک و رفع مشکلات دسترسی، از موتور پایگاه‌داده مستقل خود استفاده کنند. با این حال، NSS برای ارائه یک پایگاه‌داده امنیتی واقعاً مشترک به انعطاف‌پذیری بیشتری نیاز دارد.

در سال ۲۰۰۹، NSS مجموعه جدیدی از پایگاه‌های داده را معرفی کرد که به جای BerkeleyDB از پایگاه‌های داده SQLite استفاده می‌کنند. این پایگاه‌های داده جدید دسترسی‌پذیری و کارایی بیشتری را فراهم می‌کنند:

•cert9.db برای گواهی‌ها
•key4.db برای کلیدها
•pkcs11.txt، که فهرستی از تمام ماژول‌های PKCS #11 موجود در یک زیرپوشه جدید در پوشه پایگاه‌های داده امنیتی است

از آنجا که پایگاه‌های داده SQLite برای اشتراک‌گذاری طراحی شده‌اند، این پایگاه‌های داده از نوع اشتراکی (shared) هستند. نوع پایگاه‌داده اشتراکی ترجیح داده می‌شود؛ قالب سنتی صرفاً برای سازگاری با گذشته گنجانده شده است.

به طور پیش‌فرض، ابزارها (certutil، pk12util، modutil) فرض می‌کنند که پایگاه‌های داده امنیتی داده‌شده از نوع SQLite استفاده می‌کنند. استفاده از پایگاه‌های داده سنتی باید با استفاده از پیشوند dbm: به همراه دایرکتوری امنیتی داده‌شده به صورت دستی مشخص شود. برای مثال:

modutil -create -dbdir dbm:/home/my/sharednssdb

برای تنظیم نوع پایگاه‌داده سنتی به عنوان نوع پیش‌فرض ابزارها، متغیر محیطی NSS_DEFAULT_DB_TYPE را برابر dbm قرار دهید:

export NSS_DEFAULT_DB_TYPE="dbm"

این خط را می‌توان به فایل ~/.bashrc اضافه کرد تا این تغییر برای کاربر دائمی شود.

برای مشاهده پیش‌نویس مهندسی تغییرات در پایگاه‌های داده مشترک NSS، به ویکی پروژه NSS مراجعه کنید:

certutil (1)

pk12util (1)

signtool (1)

ویکی پروژه NSS حاوی اطلاعاتی درباره طراحی پایگاه‌داده جدید و نحوه پیکربندی برنامه‌ها برای استفاده از آن است.

برای کسب اطلاعات بیشتر درباره NSS و سایر ابزارهای مرتبط با NSS (مانند JSS)، به ویکی پروژه NSS در http://www.mozilla.org/projects/security/pki/nss مراجعه فرمایید. وب‌سایت NSS مستقیماً با تغییرات کد و نسخه‌های انتشاریافته NSS مرتبط است.

فهرست‌های پستی: https://lists.mozilla.org/listinfo/dev-tech-crypto

کانال گفتگو (IRC): سرور Freenode کانال #dogtag-pki

ابزارهای NSS توسط توسعه‌دهندگانی از Netscape، Red Hat، Sun، Oracle، Mozilla و Google نوشته و نگهداری شده‌اند.

نویسندگان: Elio Maldonado <emaldona@redhat.com> و Deon Lackey <dlackey@redhat.com>.

تحت مجوز عمومی موزیلا (MPL) نسخه ۲.۰ منتشر شده است. اگر نسخه‌ای از MPL همراه با این فایل توزیع نشده است، می‌توانید آن را در http://mozilla.org/MPL/2.0 دریافت کنید.

1.
Mozilla NSS bug 836477
مه ۲۰۲۵ nss