CERTUTIL(1) NSS Security Tools CERTUTIL(1)

certutil - ابزار مدیریت کلیدها و گواهیها در پایگاهدادهها و توکنهای NSS

certutil [options] [[arguments]]

این مستندات هنوز در حال تکمیل است. لطفاً در بازبینی اولیه در Mozilla NSS bug 836477[1] مشارکت کنید.

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

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

اجرای certutil همیشه نیازمند یک و تنها یک گزینه دستور است تا نوع عملیات گواهی را مشخص کند. هر گزینه دستور ممکن است صفر یا چند آرگومان بپذیرد. گزینه دستور -H تمام گزینه‌های دستور و آرگومان‌های مرتبط با آن‌ها را فهرست می‌کند.

گزینههای دستور

-A

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

-B

اجرای مجموعه‌ای از دستورات از یک فایل دسته‌ای (batch file) مشخص‌شده. این گزینه نیازمند آرگومان -i است.

-C

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

-D

حذف یک گواهی از پایگاه‌داده گواهی.

--rename

تغییر نام مستعار (nickname) پایگاه‌داده یک گواهی.

-E

افزودن یک گواهی ایمیل به پایگاه‌داده گواهی.

-F

حذف یک کلید خصوصی و گواهی مرتبط با آن از پایگاه‌داده. کلید مورد نظر برای حذف را با آرگومان -n یا آرگومان -k مشخص کنید. پایگاه‌داده‌ای که کلید باید از آن حذف شود را با آرگومان -d مشخص نمایید.

برخی کارت‌های هوشمند اجازه حذف کلید عمومی تولیدشده را نمی‌دهند. در چنین مواردی، تنها کلید خصوصی از جفت‌کلید حذف می‌شود.

-G

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

-H

نمایش فهرستی از گزینه‌ها و آرگومان‌های دستور.

-K

فهرست کردن شناسه کلید (Key ID) کلیدها در پایگاه‌داده کلید. شناسه کلید، پیمانه (modulus) کلید RSA یا مقدار عمومی (publicValue) کلید DSA است. شناسه‌ها به‌صورت هگزادسیمال نمایش داده می‌شوند ("0x" نمایش داده نمی‌شود).

-L

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

-M

ویرایش ویژگی‌های اعتماد یک گواهی با استفاده از مقادیر آرگومان -t.

-N

ایجاد پایگاه‌های داده گواهی و کلید جدید.

-O

چاپ زنجیره گواهی (certificate chain).

-R

ایجاد یک فایل درخواست گواهی که می‌تواند جهت پردازش و صدور گواهی نهایی به یک مرجع صدور گواهی (CA) ارسال شود. خروجی به‌طور پیش‌فرض به خروجی استاندارد فرستاده می‌شود، مگر اینکه از آرگومان -o output-file استفاده کنید. از آرگومان -a برای مشخص کردن خروجی ASCII استفاده نمایید.

-S

ایجاد یک گواهی تکی و افزودن آن به پایگاه‌داده گواهی.

-T

بازنشانی پایگاه‌داده کلید یا توکن.

-U

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

-V

بررسی اعتبار یک گواهی و ویژگی‌های آن.

-W

تغییر گذرواژه یک پایگاه‌داده کلید.

--merge

ادغام دو پایگاه‌داده در یک پایگاه‌داده واحد.

--upgrade-merge

ارتقای یک پایگاه‌داده قدیمی و ادغام آن در یک پایگاه‌داده جدید. این گزینه برای مهاجرت از پایگاه‌های داده قدیمی NSS (مانند cert8.db و key3.db) به پایگاه‌های داده جدیدتر SQLite (مانند cert9.db و key4.db) استفاده می‌شود.

آرگومانها

آرگومان‌ها یک گزینه دستور را تغییر می‌دهند و معمولاً حروف کوچک، اعداد یا نمادها هستند.

-a

از قالب ASCII استفاده می‌کند یا اجازه استفاده از قالب ASCII را برای ورودی یا خروجی می‌دهد. این قالب‌بندی از RFC 1113 پیروی می‌کند. برای درخواست‌های گواهی، خروجی ASCII به‌طور پیش‌فرض به خروجی استاندارد هدایت می‌شود مگر اینکه تغییر مسیر داده شود.

--simple-self-signed

هنگام چاپ زنجیره گواهی، اگر نام صادرکننده با نام سوژه برابر باشد، به دنبال زنجیره نگرد.

-b validity-time

زمانی را مشخص می‌کند که گواهی باید در آن معتبر باشد. هنگام بررسی اعتبار گواهی با گزینه -V استفاده می‌شود. قالب آرگومان validity-time به‌صورت YYMMDDHHMMSS[+HHMM|-HHMM|Z] است که امکان تنظیم اختلاف زمانی نسبت به زمان پایان اعتبار را فراهم می‌کند. مشخص کردن ثانیه‌ها (SS) اختیاری است. هنگام تعیین زمان صریح، از یک Z در پایان عبارت، YYMMDDHHMMSSZ، برای بستن آن استفاده کنید. هنگام تعیین زمان انحراف (offset)، از YYMMDDHHMMSS+HHMM یا YYMMDDHHMMSS-HHMM به‌ترتیب برای افزودن یا کم کردن زمان استفاده کنید.

اگر از این گزینه استفاده نشود، بررسی اعتبار به‌طور پیش‌فرض به زمان فعلی سیستم واگذار می‌شود.

-c issuer

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

-d [prefix]directory

دایرکتوری پایگاه‌داده حاوی فایل‌های پایگاه‌داده گواهی و کلید را مشخص می‌کند.

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

بسته NSS پیشوندهای زیر را شناسایی می‌کند:

•sql: پایگاه‌داده جدیدتر را درخواست می‌کند
•dbm: پایگاه‌داده قدیمی را درخواست می‌کند

اگر هیچ پیشوندی مشخص نشود، نوع پیش‌فرض از NSS_DEFAULT_DB_TYPE دریافت می‌شود. اگر NSS_DEFAULT_DB_TYPE تنظیم نشده باشد، sql: پیش‌فرض است.

--dump-ext-val OID

برای یک گواهی تکی، کدگذاری باینری DER مربوط به افزونه OID را چاپ می‌کند.

-e

امضای گواهی را در طول فرآیند اعتبارسنجی گواهی بررسی می‌کند.

--email email-address

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

--extGeneric OID:critical-flag:filename[,OID:critical-flag:filename]...

یک یا چند افزونه را که certutil هنوز قادر به کدگذاری آن‌ها نیست، با بارگذاری کدگذاری‌هایشان از فایل‌های خارجی اضافه می‌کند.
•OID (نمونه): 1.2.3.4
•critical-flag: مقدار critical یا not-critical
•filename: مسیر کامل به فایلی حاوی یک افزونه کدگذاری‌شده

-f password-file

فایلی را مشخص می‌کند که گذرواژه را به‌طور خودکار برای قرار گرفتن در گواهی یا دسترسی به پایگاه‌داده گواهی تامین می‌کند. این یک فایل متنی ساده حاوی یک گذرواژه است. حتماً از دسترسی غیرمجاز به این فایل جلوگیری کنید.

-g keysize

اندازه کلید را برای استفاده هنگام تولید جفت‌کلیدهای جدید عمومی و خصوصی تنظیم می‌کند. حداقل 512 بیت و حداکثر 16384 بیت است. مقدار پیش‌فرض 2048 بیت است. هر اندازه‌ای بین حداقل و حداکثر مجاز است.

-h tokenname

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

نام می‌تواند یک PKCS #11 URI نیز باشد. برای نمونه، مخزن گواهی داخلی NSS می‌تواند به‌طور صریح به‌صورت "pkcs11:token=NSS%20Certificate%20DB" مشخص شود. برای جزئیات بیشتر درباره این قالب، به RFC 7512 مراجعه کنید.

-i input_file

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

-k key-type-or-id

نوع یا شناسه خاص یک کلید را مشخص می‌کند.

گزینه‌های معتبر برای نوع کلید عبارتند از rsa، dsa، ec یا all. مقدار پیش‌فرض rsa است. مشخص کردن نوع کلید می‌تواند از اشتباهات ناشی از نام‌های مستعار تکراری جلوگیری کند. مشخص کردن نوع کلید یک جفت‌کلید جدید تولید می‌کند؛ ارائه شناسه یک کلید موجود مجدداً از آن جفت‌کلید استفاده می‌کند (که برای تمدید گواهی‌ها لازم است).

-l

هنگام اعتبارسنجی یک گواهی با گزینه -V اطلاعات دقیق را نمایش می‌دهد.

-m serial-number

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

-n nickname

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

نام مستعار می‌تواند یک PKCS #11 URI نیز باشد. برای نمونه، اگر گواهی با نام "my-server-cert" در مخزن گواهی داخلی دارید، می‌تواند به‌طور صریح به‌صورت "pkcs11:token=NSS%20Certificate%20DB;object=my-server-cert" مشخص شود. برای جزئیات بیشتر درباره این قالب، به RFC 7512 مراجعه کنید.

-o output-file

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

-P dbPrefix

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

-p phone

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

-q pqgfile or curve-name

هنگام تولید جفت‌کلیدهای DSA، مقدار PQG جایگزین را از فایل مشخص‌شده می‌خواند. اگر از این آرگومان استفاده نشود، certutil مقدار PQG خودش را تولید می‌کند. فایل‌های PQG با یک ابزار جداگانه DSA ایجاد می‌شوند.

نام منحنی بیضوی یکی از موارد nistp256 ،nistp384 ،nistp521 یا curve25519 است.

اگر توکنی در دسترس باشد که از منحنی‌های بیشتری پشتیبانی کند، منحنی‌های زیر نیز پشتیبانی می‌شوند: sect163k1, nistk163, sect163r1, sect163r2, nistb163, sect193r1, sect193r2, sect233k1, nistk233, sect233r1, nistb233, sect239k1, sect283k1, nistk283, sect283r1, nistb283, sect409k1, nistk409, sect409r1, nistb409, sect571k1, nistk571, sect571r1, nistb571, secp160k1, secp160r1, secp160r2, secp192k1, secp192r1, nistp192, secp224k1, secp224r1, nistp224, secp256k1, secp256r1, secp384r1, secp521r1, prime192v1, prime192v2, prime192v3, prime239v1, prime239v2, prime239v3, c2pnb163v1, c2pnb163v2, c2pnb163v3, c2pnb176v1, c2tnb191v1, c2tnb191v2, c2tnb191v3, c2pnb208w1, c2tnb239v1, c2tnb239v2, c2tnb239v3, c2pnb272w1, c2pnb304w1, c2tnb359w1, c2pnb368w1, c2tnb431r1, secp112r1, secp112r2, secp128r1, secp128r2, sect113r1, sect113r2, sect131r1, sect131r2

-r

کدگذاری باینری DER یک گواهی را هنگام فهرست کردن اطلاعات مربوط به آن با گزینه -L نمایش می‌دهد.

-s subject

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

-t trustargs

ویژگی‌های اعتماد را برای تغییر در یک گواهی موجود، یا برای اعمال روی یک گواهی هنگام ایجاد یا افزودن آن به پایگاه‌داده مشخص می‌کند. سه دسته‌بندی اعتماد برای هر گواهی در دسترس است که به ترتیب SSL, email, object signing برای هر تنظیم اعتماد بیان می‌شوند. در هر موقعیت دسته‌بندی، می‌توانید از هیچ، هرکدام، یا همه کدهای ویژگی استفاده کنید:
•p - همتای معتبر
•P - همتای مورد اعتماد (شامل p)
•c - مرجع صدور گواهی (CA) معتبر
•C - مرجع صدور گواهی (CA) مورد اعتماد (شامل c)
•T - مرجع صدور گواهی (CA) مورد اعتماد برای احراز هویت کارخواه (فقط کارساز SSL)

کدهای ویژگی برای دسته‌بندی‌ها با کاما از یکدیگر جدا می‌شوند، و کل مجموعه ویژگی‌ها داخل علامت نقل‌قول قرار می‌گیرد. برای نمونه:

-t TC,C,T

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

توجه داشته باشید که خروجی گزینه -L ممکن است شامل فلگ "u" باشد، به این معنی که یک کلید خصوصی مرتبط با آن گواهی وجود دارد. این یک فلگ پویا است و نمی‌توانید آن را با certutil تنظیم کنید.

-u certusage

تعیین زمینه کاربرد برای اعمال هنگام تأیید اعتبار یک گواهی با گزینه -V.

زمینه‌ها به شرح زیر هستند:

•C (به‌عنوان کلاینت SSL)
•V (به‌عنوان سرور SSL)
•L (به‌عنوان CA برای SSL)
•A (به‌عنوان هر CA)
•Y (تأیید اعتبار CA)
•S (به‌عنوان امضاکننده ایمیل)
•R (به‌عنوان دریافت‌کننده ایمیل)
•O (به‌عنوان پاسخ‌دهنده وضعیت OCSP)
•J (به‌عنوان امضاکننده شیء)
•I (به‌عنوان کاربر IPSEC)

-v valid-months

تعیین تعداد ماه‌هایی که یک گواهی جدید معتبر خواهد بود. دوره اعتبار از زمان فعلی سیستم آغاز می‌شود، مگر اینکه با گزینه -w یک انحراف زمانی افزوده یا کسر شده باشد. در صورت عدم استفاده از این آرگومان، دوره اعتبار پیش‌فرض سه ماه خواهد بود.

-w offset-months

تنظیم یک انحراف زمانی (offset) برحسب ماه نسبت به زمان فعلی سیستم، برای آغاز دوره اعتبار یک گواهی. هنگام ایجاد گواهی یا افزودن آن به پایگاه‌داده استفاده می‌شود. این انحراف زمانی را به‌صورت اعداد صحیح بیان کنید و از علامت منفی (-) برای نشان دادن انحراف منفی بهره ببرید. در صورت عدم استفاده از این آرگومان، دوره اعتبار از زمان فعلی سیستم آغاز می‌گردد. طول دوره اعتبار با استفاده از آرگومان -v تنظیم می‌شود.

-X

باز کردن اجباری پایگاه‌داده کلید و گواهی در حالت خواندن-نوشتن (read-write). این گزینه به همراه گزینه‌های دستوری -U و -L به کار می‌رود.

-x

استفاده از certutil برای تولید امضای گواهی در حال ایجاد یا افزوده‌شدن به پایگاه‌داده، به‌جای دریافت امضا از یک CA مجزا.

-y exp

تنظیم یک مقدار نمای جایگزین برای استفاده در تولید یک کلید عمومی RSA جدید برای پایگاه‌داده، به‌جای مقدار پیش‌فرض 65537. مقادیر جایگزین در دسترس 3 و 17 هستند.

--pss

محدود کردن گواهی تولیدشده (با گزینه -S) یا درخواست گواهی (با گزینه -R) جهت استفاده با طرح امضای RSA-PSS. این مورد تنها زمانی عمل می‌کند که کلید خصوصی گواهی یا درخواست گواهی از نوع RSA باشد.

--pss-sign

امضای گواهی تولیدشده با طرح امضای RSA-PSS (با گزینه -C یا -S). این مورد فقط زمانی عمل می‌کند که کلید خصوصی گواهی امضاکننده از نوع RSA باشد. اگر گواهی امضاکننده به RSA-PSS محدود شده باشد، نیازی به مشخص کردن این گزینه نیست.

-z noise-file

خواندن یک مقدار بذر (seed) از فایل مشخص‌شده برای تولید یک جفت‌کلید عمومی و خصوصی جدید. این آرگومان امکان استفاده از مقادیر بذر تولیدشده توسط سخت‌افزار یا ایجاد دستی مقدار از طریق صفحه‌کلید را فراهم می‌سازد. حداقل اندازه فایل 20 بایت است.

-Z hashAlg

مشخص کردن الگوریتم هش برای استفاده با گزینه‌های دستوری -C، -S یا -R. کلمات کلیدی ممکن:
•MD2
•MD4
•MD5
•SHA1
•SHA224
•SHA256
•SHA384
•SHA512

-0 SSO_password

تنظیم گذرواژه افسر امنیت سایت (SSO) روی یک توکن.

-1 | --keyUsage keyword,keyword

تنظیم افزونه استفاده از کلید گواهی X.509 V3 در گواهی. چندین کلمه کلیدی در دسترس است:
•digitalSignature
•nonRepudiation
•keyEncipherment
•dataEncipherment
•keyAgreement
•certSigning
•crlSigning
•critical

-2

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

افزونه‌های گواهی X.509 در RFC 5280 شرح داده شده‌اند.

-3

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

افزونه‌های گواهی X.509 در RFC 5280 شرح داده شده‌اند.

-4

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

افزونه‌های گواهی X.509 در RFC 5280 شرح داده شده‌اند.

-5 | --nsCertType keyword,keyword

افزودن افزونه نوع گواهی X.509 V3 به گواهی در حال ایجاد یا اضافه شدن به پایگاه‌داده. چندین کلمه کلیدی در دسترس است:
•sslClient
•sslServer
•smime
•objectSigning
•sslCA
•smimeCA
•objectSigningCA
•critical

افزونه‌های گواهی X.509 در RFC 5280 شرح داده شده‌اند.

-6 | --extKeyUsage keyword,keyword

افزودن افزونه کاربرد کلید گسترش‌یافته به گواهی در حال ایجاد یا اضافه شدن به پایگاه‌داده. چندین کلمه کلیدی در دسترس است:
•serverAuth
•clientAuth
•codeSigning
•emailProtection
•timeStamp
•ocspResponder
•stepUp
•msTrustListSign
•critical
•x509Any
•ipsecIKE
•ipsecIKEEnd
•ipsecIKEIntermediate
•ipsecEnd
•ipsecTunnel
•ipsecUser

افزونه‌های گواهی X.509 در RFC 5280 شرح داده شده‌اند.

-7 emailAddrs

افزودن یک فهرست جداشده با کاما از نشانی‌های ایمیل به افزونه نام‌های جایگزین موضوع (SAN) یک گواهی یا درخواست گواهی در حال ایجاد یا اضافه شدن به پایگاه‌داده. افزونه‌های نام‌های جایگزین موضوع در بخش 4.2.1.7 از RFC 3280 شرح داده شده‌اند.

-8 dns-names

افزودن یک فهرست جداشده با کاما از نام‌های DNS به افزونه نام‌های جایگزین موضوع (SAN) یک گواهی یا درخواست گواهی در حال ایجاد یا اضافه شدن به پایگاه‌داده. افزونه‌های نام‌های جایگزین موضوع در بخش 4.2.1.7 از RFC 3280 شرح داده شده‌اند.

--extAIA

افزودن افزونه اطلاعات دسترسی مرجع (AIA) به گواهی. افزونه‌های گواهی X.509 در RFC 5280 شرح داده شده‌اند.

--extSIA

افزودن افزونه اطلاعات دسترسی موضوع (SIA) به گواهی. افزونه‌های گواهی X.509 در RFC 5280 شرح داده شده‌اند.

--extCP

افزودن افزونه سیاست‌های گواهی (Certificate Policies) به گواهی. افزونه‌های گواهی X.509 در RFC 5280 شرح داده شده‌اند.

--extPM

افزودن افزونه نگاشت‌های سیاست (Policy Mappings) به گواهی. افزونه‌های گواهی X.509 در RFC 5280 شرح داده شده‌اند.

--extPC

افزودن افزونه محدودیت‌های سیاست (Policy Constraints) به گواهی. افزونه‌های گواهی X.509 در RFC 5280 شرح داده شده‌اند.

--extIA

افزودن افزونه مهار دسترسی به هرگونه سیاست (Inhibit Any Policy) به گواهی. افزونه‌های گواهی X.509 در RFC 5280 شرح داده شده‌اند.

--extSKID

افزودن افزونه شناسه کلید موضوع (Subject Key ID) به گواهی. افزونه‌های گواهی X.509 در RFC 5280 شرح داده شده‌اند.

--extNC

افزودن افزونه محدودیت نام (Name Constraint) به گواهی. افزونه‌های گواهی X.509 در RFC 5280 شرح داده شده‌اند.

--extSAN type:name[,type:name]...

ایجاد یک افزونه نام‌های جایگزین موضوع (SAN) با یک یا چند نام.

-type: directory, dn, dns, edi, ediparty, email, ip, ipaddr, other, registerid, rfc822, uri, x400, x400addr

--empty-password

استفاده از گذرواژه خالی هنگام ایجاد پایگاه‌داده جدید گواهی با گزینه -N.

--keyAttrFlags attrflags

ویژگی‌های کلید PKCS #11. فهرست جداشده با کاما از فلگ‌های ویژگی کلید، انتخاب‌شده از بین گزینه‌های زیر: {token | session} {public | private} {sensitive | insensitive} {modifiable | unmodifiable} {extractable | unextractable}

--keyOpFlagsOn opflags, --keyOpFlagsOff opflags

فلگ‌های عملیات کلید PKCS #11. فهرست جداشده با کاما از یک یا چند مورد از گزینه‌های زیر: {token | session} {public | private} {sensitive | insensitive} {modifiable | unmodifiable} {extractable | unextractable}

--new-n nickname

نام مستعار جدید که هنگام تغییر نام یک گواهی استفاده می‌شود.

--source-dir certdir

تعیین دایرکتوری پایگاه‌داده گواهی جهت مهاجرت پایگاه‌داده (ارتقا).

--source-prefix certdir

تعیین پیشوند پایگاه‌های داده گواهی و کلید جهت مهاجرت پایگاه‌داده (ارتقا).

--upgrade-id uniqueID

ارائه شناسه یکتای (unique ID) پایگاه‌داده جهت مهاجرت یا ارتقا.

--upgrade-token-name name

تنظیم نام توکن مورد استفاده در زمان مهاجرت یا ارتقای آن.

-@ pwfile

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

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

ایجاد پایگاههای داده امنیتی جدید

گواهی‌ها، کلیدها و ماژول‌های امنیتی مرتبط با مدیریت گواهی‌ها در سه پایگاه‌داده مرتبط ذخیره می‌شوند:

•cert8.db یا cert9.db
•key3.db یا key4.db
•secmod.db یا pkcs11.txt

این پایگاه‌های داده باید پیش از امکان تولید گواهی‌ها یا کلیدها ایجاد شوند.

certutil -N -d directory

ایجاد یک درخواست گواهی

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

$ certutil -R -k key-type-or-id [-q pqgfile|curve-name] -g key-size -s subject [-h tokenname] -d directory [-p phone] [-o output-file] [-a]

گزینه دستور -R نیازمند چهار آرگومان است:

•-k برای مشخص کردن نوع کلید جهت تولید، یا هنگام تمدید یک گواهی، جفت کلید موجود جهت استفاده
•-g برای تعیین اندازه کلید جهت تولید
•-s برای تعیین نام موضوع (subject) گواهی
•-d برای تعیین دایرکتوری پایگاه‌داده امنیتی

درخواست گواهی جدید می‌تواند در قالب اسکی (-a) خروجی داده شود یا در یک فایل مشخص (-o) نوشته شود.

برای مثال:

$ certutil -R -k rsa -g 1024 -s "CN=John Smith,O=Example Corp,L=Mountain View,ST=California,C=US" -d $HOME/nssdb -p 650-555-0123 -a -o cert.cer
Generating key.  This may take a few moments...

ایجاد یک گواهی

یک گواهی معتبر باید توسط یک CA معتمد صادر شود. این کار می‌تواند با مشخص کردن یک گواهی CA (-c) که در پایگاه‌داده گواهی ذخیره شده است انجام شود. اگر جفت کلید CA در دسترس نباشد، می‌توانید با استفاده از آرگومان -x همراه با گزینه دستور -S یک گواهی خودامضا (self-signed) ایجاد کنید.

$ certutil -S -k rsa|dsa|ec -n certname -s subject [-c issuer |-x] -t trustargs -d directory [-m serial-number] [-v valid-months] [-w offset-months] [-p phone] [-1] [-2] [-3] [-4] [-5 keyword] [-6 keyword] [-7 emailAddress] [-8 dns-names] [--extAIA] [--extSIA] [--extCP] [--extPM] [--extPC] [--extIA] [--extSKID]

مجموعه اعداد و گزینه‌های --ext* افزونه‌های گواهی را تعیین می‌کنند که می‌توانند هنگام تولید گواهی توسط CA به آن اضافه شوند. اعلان‌های تعاملی نمایش داده خواهند شد.

برای مثال، این دستور یک گواهی خودامضا ایجاد می‌کند:

$ certutil -S -s "CN=Example CA" -n my-ca-cert -x -t "C,C,C" -1 -2 -5 -m 3650

اعلان‌های تعاملی برای کاربرد کلید و اینکه آیا افزونه‌ای حیاتی است یا خیر و همچنین پاسخ‌ها به منظور اختصار حذف شده‌اند.

از آنجا به بعد، گواهی‌های جدید می‌توانند به این گواهی خودامضا ارجاع دهند:

$ certutil -S -s "CN=My Server Cert" -n my-server-cert -c "my-ca-cert" -t ",," -1 -5 -6 -8 -m 730

تولید یک گواهی از روی درخواست گواهی

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

certutil -C -c issuer -i cert-request-file -o output-file [-m serial-number] [-v valid-months] [-w offset-months] -d directory [-1] [-2] [-3] [-4] [-5 keyword] [-6 keyword] [-7 emailAddress] [-8 dns-names]

برای مثال:

$ certutil -C -c "my-ca-cert" -i /home/certs/cert.req -o cert.cer -m 010 -v 12 -w 1 -d $HOME/nssdb -1 nonRepudiation,dataEncipherment -5 sslClient -6 clientAuth -7 jsmith@example.com

فهرست کردن گواهیها

گزینه دستور -L تمام گواهی‌های موجود در پایگاه‌داده گواهی را فهرست می‌کند. مسیر دایرکتوری (-d) الزامی است.

$ certutil -L -d /home/my/sharednssdb
Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI
CA Administrator of Instance pki-ca1's Example Domain ID     u,u,u
TPS Administrator's Example Domain ID                        u,u,u
Google Internet Authority                                    ,,   
Certificate Authority - Example Domain                       CT,C,C

استفاده از آرگومان‌های اضافی همراه با -L می‌تواند اطلاعات مربوط به یک گواهی تکی و مشخص را بازگردانده و چاپ کند. برای مثال، آرگومان -n نام گواهی را منتقل می‌کند، در حالی که آرگومان -a گواهی را در قالب اسکی (ASCII) چاپ می‌نماید:

$ certutil -L -d $HOME/nssdb -a -n my-ca-cert
-----BEGIN CERTIFICATE-----
MIIB1DCCAT2gAwIBAgICDkIwDQYJKoZIhvcNAQEFBQAwFTETMBEGA1UEAxMKRXhh
bXBsZSBDQTAeFw0xMzAzMTMxOTEwMjlaFw0xMzA2MTMxOTEwMjlaMBUxEzARBgNV
BAMTCkV4YW1wbGUgQ0EwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJ4Kzqvz
JyBVgFqDXRYSyTBNw1DrxUU/3GvWA/ngjAwHEv0Cul/6sO/gsCvnABHiH6unns6x
XRzPORlC2WY3gkk7vmlsLvYpyecNazAi/NAwVnU/66HOsaoVFWE+gBQo99UrN2yk
0BiK/GMFlLm5dXQROgA9ZKKyFdI0LIXtf6SbAgMBAAGjMzAxMBEGCWCGSAGG+EIB
AQQEAwIHADAMBgNVHRMEBTADAQH/MA4GA1UdDwEB/wQEAwICBDANBgkqhkiG9w0B
AQUFAAOBgQA6chkzkACN281d1jKMrc+RHG2UMaQyxiteaLVZO+Ro1nnRUvseDf09
XKYFwPMJjWCihVku6bw/ihZfuMHhxK22Nue6inNQ6eDu7WmrqL8z3iUrQwxs+WiF
ob2rb8XRVVJkzXdXxlk4uo3UtNvw8sAz7sWD71qxKaIHU5q49zijfg==
-----END CERTIFICATE-----

برای نمایش خوانا برای انسان:

$ certutil -L -d $HOME/nssdb -n my-ca-cert
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 3650 (0xe42)
        Signature Algorithm: PKCS #1 SHA-1 With RSA Encryption
        Issuer: "CN=Example CA"
        Validity:
            Not Before: Wed Mar 13 19:10:29 2013
            Not After : Thu Jun 13 19:10:29 2013
        Subject: "CN=Example CA"
        Subject Public Key Info:
            Public Key Algorithm: PKCS #1 RSA Encryption
            RSA Public Key:
                Modulus:
                    9e:0a:ce:ab:f3:27:20:55:80:5a:83:5d:16:12:c9:30:
                    4d:c3:50:eb:c5:45:3f:dc:6b:d6:03:f9:e0:8c:0c:07:
                    12:fd:02:ba:5f:fa:b0:ef:e0:b0:2b:e7:00:11:e2:1f:
                    ab:a7:9e:ce:b1:5d:1c:cf:39:19:42:d9:66:37:82:49:
                    3b:be:69:6c:2e:f6:29:c9:e7:0d:6b:30:22:fc:d0:30:
                    56:75:3f:eb:a1:ce:b1:aa:15:15:61:3e:80:14:28:f7:
                    d5:2b:37:6c:a4:d0:18:8a:fc:63:05:94:b9:b9:75:74:
                    11:3a:00:3d:64:a2:b2:15:d2:34:2c:85:ed:7f:a4:9b
                Exponent: 65537 (0x10001)
        Signed Extensions:
            Name: Certificate Type
            Data: none
            Name: Certificate Basic Constraints
            Data: Is a CA with no maximum path length.
            Name: Certificate Key Usage
            Critical: True
            Usages: Certificate Signing
    Signature Algorithm: PKCS #1 SHA-1 With RSA Encryption
    Signature:
        3a:72:19:33:90:00:8d:db:cd:5d:d6:32:8c:ad:cf:91:
        1c:6d:94:31:a4:32:c6:2b:5e:68:b5:59:3b:e4:68:d6:
        79:d1:52:fb:1e:0d:fd:3d:5c:a6:05:c0:f3:09:8d:60:
        a2:85:59:2e:e9:bc:3f:8a:16:5f:b8:c1:e1:c4:ad:b6:
        36:e7:ba:8a:73:50:e9:e0:ee:ed:69:ab:a8:bf:33:de:
        25:2b:43:0c:6c:f9:68:85:a1:bd:ab:6f:c5:d1:55:52:
        64:cd:77:57:c6:59:38:ba:8d:d4:b4:db:f0:f2:c0:33:
        ee:c5:83:ef:5a:b1:29:a2:07:53:9a:b8:f7:38:a3:7e
    Fingerprint (MD5):
        86:D8:A5:8B:8A:26:BE:9E:17:A8:7B:66:10:6B:27:80
    Fingerprint (SHA1):
        48:78:09:EF:C5:D4:0C:BD:D2:64:45:59:EB:03:13:15:F7:A9:D6:F7
    Certificate Trust Flags:
        SSL Flags:
            Valid CA
            Trusted CA
            User
        Email Flags:
            Valid CA
            Trusted CA
            User
        Object Signing Flags:
            Valid CA
            Trusted CA
            User

فهرست کردن کلیدها

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

برای فهرست کردن تمام کلیدهای موجود در پایگاه داده، از گزینه دستور -K و آرگومان (الزامی) -d برای تعیین مسیر دایرکتوری استفاده کنید.

$ certutil -K -d $HOME/nssdb
certutil: Checking token "NSS Certificate DB" in slot "NSS User Private Key and Certificate Services                  "
< 0> rsa      455a6673bde9375c2887ec8bf8016b3f9f35861d   Thawte Freemail Member's Thawte Consulting (Pty) Ltd. ID
< 1> rsa      40defeeb522ade11090eacebaaf1196a172127df   Example Domain Administrator Cert
< 2> rsa      1d0b06f44f6c03842f7d4f4a1dc78b3bcd1b85a5   John Smith user cert

روش‌هایی برای محدود کردن کلیدهای فهرست‌شده در نتایج جستجو وجود دارد:

•برای بازگرداندن یک کلید خاص، از آرگومان -n name همراه با نام کلید استفاده کنید.
•اگر چندین دستگاه امنیتی بارگذاری شده باشند، آرگومان -h tokenname می‌تواند یک توکن خاص یا همه توکن‌ها را جستجو کند.
•اگر چندین نوع کلید در دسترس باشد، آرگومان -k key-type می‌تواند یک نوع خاص از کلید مانند RSA، DSA یا ECC را جستجو کند.

فهرست کردن ماژول‌های امنیتی

دستگاه‌هایی که می‌توانند برای ذخیره گواهی‌ها استفاده شوند -- هم پایگاه‌های داده داخلی و هم دستگاه‌های خارجی مانند کارت‌های هوشمند -- با بارگذاری ماژول‌های امنیتی شناسایی و استفاده می‌شوند. گزینه دستور -U تمام ماژول‌های امنیتی فهرست‌شده در پایگاه داده secmod.db را فهرست می‌کند. مسیر دایرکتوری (-d) الزامی است.

$ certutil -U -d /home/my/sharednssdb
    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
    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

افزودن گواهی‌ها به پایگاه داده

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

certutil -A -n certname -t trustargs -d directory [-a] [-i input-file]

برای مثال:

$ certutil -A -n "CN=My SSL Certificate" -t ",," -d /home/my/sharednssdb -i /home/example-certs/cert.cer

یک گزینه دستور مرتبط، -E، به‌طور خاص برای افزودن گواهی‌های ایمیل به پایگاه داده گواهی استفاده می‌شود. دستور -E دارای همان آرگومان‌های دستور -A است. آرگومان‌های اعتبار برای گواهی‌ها دارای قالب SSL,S/MIME,Code-signing هستند، بنابراین تنظیمات اعتبار میانی بیشترین ارتباط را با گواهی‌های ایمیل دارند (اگرچه بقیه نیز قابل تنظیم هستند). برای مثال:

$ certutil -E -n "CN=John Smith Email Cert" -t ",P," -d /home/my/sharednssdb -i /home/example-certs/email.cer

حذف گواهی‌ها از پایگاه داده

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

certutil -D -d directory -n "nickname"

برای مثال:

$ certutil -D -d /home/my/sharednssdb -n "my-ssl-cert"

اعتبارسنجی گواهی‌ها

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

certutil -V -n certificate-name [-b time] [-e] [-u cert-usage] -d directory

برای مثال، جهت اعتبارسنجی یک گواهی ایمیل:

$ certutil -V -n "John Smith's Email Cert" -e -u S,R -d /home/my/sharednssdb

تغییر تنظیمات اعتبار گواهی

تنظیمات اعتبار (که به عملیاتی مربوط می‌شود که یک گواهی مجاز به استفاده برای آن‌ها است) را می‌توان پس از ایجاد یا افزودن گواهی به پایگاه داده تغییر داد. این امر به‌ویژه برای گواهی‌های CA مفید است، اما می‌تواند برای هر نوع گواهی انجام شود.

certutil -M -n certificate-name -t trust-args -d directory

برای مثال:

$ certutil -M -n "My CA Certificate" -d /home/my/sharednssdb -t "CT,CT,CT"

چاپ زنجیره گواهی

گواهی‌ها می‌توانند در زنجیره‌ها صادر شوند، زیرا هر مرجع صدور گواهی (CA) خود دارای یک گواهی است؛ هنگامی که یک CA گواهی صادر می‌کند، اساساً آن گواهی را با اثر انگشت خود مهر می‌کند. گزینه -O زنجیره کامل یک گواهی را چاپ می‌کند که از CA اولیه (CA ریشه) از طریق هر CA واسط تا خود گواهی واقعی امتداد می‌یابد. برای مثال، برای یک گواهی ایمیل با دو CA در زنجیره:

$ certutil -d /home/my/sharednssdb -O -n "jsmith@example.com"
"Builtin Object Token:Thawte Personal Freemail CA" [E=personal-freemail@thawte.com,CN=Thawte Personal Freemail CA,OU=Certification Services Division,O=Thawte Consulting,L=Cape Town,ST=Western Cape,C=ZA]
  "Thawte Personal Freemail Issuing CA - Thawte Consulting" [CN=Thawte Personal Freemail Issuing CA,O=Thawte Consulting (Pty) Ltd.,C=ZA]
    "(null)" [E=jsmith@example.com,CN=Thawte Freemail Member]

بازنشانی یک توکن

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

certutil -T -d directory -h token-name -0 security-officer-password

بسیاری از شبکه‌ها دارای پرسنل اختصاصی هستند که تغییرات توکن‌های امنیتی را مدیریت می‌کنند (مسئول امنیت یا security officer). این شخص باید گذرواژه را برای دسترسی به توکن مشخص‌شده ارائه دهد. برای مثال:

$ certutil -T -d /home/my/sharednssdb -h nethsm -0 secret

ارتقا یا ادغام پایگاه‌های داده امنیتی

بسیاری از شبکه‌ها یا برنامه‌ها ممکن است از نسخه‌های قدیمی‌تر BerkeleyDB پایگاه داده گواهی (cert8.db) استفاده کنند. پایگاه‌های داده را می‌توان با استفاده از گزینه دستور --upgrade-merge به نسخه جدید SQLite پایگاه داده (cert9.db) ارتقا داد یا پایگاه‌های داده موجود را می‌توان با استفاده از دستور ---merge با پایگاه‌های داده جدید cert9.db ادغام کرد.

دستور --upgrade-merge باید اطلاعاتی درباره پایگاه داده اصلی ارائه دهد و سپس از آرگومان‌های استاندارد (مانند -d) برای ارائه اطلاعات مربوط به پایگاه‌های داده جدید استفاده کند. این دستور همچنین به اطلاعاتی نیاز دارد که ابزار برای فرآیند ارتقا و بازنویسی روی پایگاه داده اصلی استفاده می‌کند.

certutil --upgrade-merge -d directory [-P dbprefix] --source-dir directory --source-prefix dbprefix --upgrade-id id --upgrade-token-name name [-@ password-file]

برای مثال:

$ certutil --upgrade-merge -d /home/my/sharednssdb --source-dir /opt/my-app/alias/ --source-prefix serverapp- --upgrade-id 1 --upgrade-token-name internal

دستور --merge تنها به اطلاعاتی درباره مکان پایگاه داده اصلی نیاز دارد؛ از آنجا که این دستور قالب پایگاه داده را تغییر نمی‌دهد، می‌تواند بدون انجام مرحله میانی، روی اطلاعات بازنویسی کند.

certutil --merge -d directory [-P dbprefix] --source-dir directory --source-prefix dbprefix [-@ password-file]

برای مثال:

$ certutil --merge -d /home/my/sharednssdb --source-dir /opt/my-app/alias/ --source-prefix serverapp-

اجرای دستورات certutil از یک فایل دسته‌ای (Batch)

مجموعه‌ای از دستورات را می‌توان با گزینه دستور -B به‌صورت متوالی از یک فایل متنی اجرا کرد. تنها آرگومان برای این منظور، فایل ورودی را مشخص می‌کند.

$ certutil -B -i /path/to/batch-file

سامانه 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: به مسیر پوشه امنیتی مورد نظر مشخص شود. برای مثال:

$ certutil -L -d dbm:/home/my/sharednssdb

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

export NSS_DEFAULT_DB_TYPE="dbm"

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

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

pk12util(1)

modutil(1)

دستور certutil دارای آرگومان‌ها یا عملیاتی است که از ویژگی‌های تعریف‌شده در چندین سند RFC کارگروه IETF استفاده می‌کنند.

ویکی 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>.

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

1.
گزارش اشکال شماره ۸۳۶۴۷۷ موزیلا NSS
19 May 2021 nss-tools