| PK12UTIL(1) | NSS Security Tools | PK12UTIL(1) |
نام (NAME)
pk12util - وارد کردن و استخراج گواهیها و کلیدها با فرمت PKCS #12 در NSS
خلاصه دستور (SYNOPSIS)
pk12util [-i p12File|-l p12File|-o p12File] [-c keyCipher] [-C certCipher] [-d directory] [-h tokenname] [-m | --key-len keyLength] [-M hashAlg] [-n certname] [-P dbprefix] [-r] [-v] [--cert-key-len certKeyLength] [-k slotPasswordFile|-K slotPassword] [-w p12filePasswordFile|-W p12filePassword]
وضعیت (STATUS)
این مستندات هنوز در حال تکمیل است. لطفاً در بازبینی اولیه در Mozilla NSS bug 836477[1] مشارکت کنید.
توضیحات (DESCRIPTION)
ابزار PKCS #12، pk12util، امکان اشتراکگذاری گواهیها را میان هر کارسازی که از PKCS #12 پشتیبانی میکند فراهم میسازد. این ابزار میتواند گواهیها و کلیدها را از فایلهای PKCS #12 به پایگاههای داده امنیتی وارد کند، گواهیها را استخراج نماید و گواهیها و کلیدها را فهرست کند.
گزینهها و آرگومانها (OPTIONS AND ARGUMENTS)
گزینهها
-i p12file
-l p12file
-o p12file
آرگومانها
-c keyCipher
-C certCipher
-d directory
pk12util از دو نوع پایگاهداده پشتیبانی میکند: پایگاههای داده امنیتی قدیمی (cert8.db ،key3.db و secmod.db) و پایگاههای داده جدید SQLite (شامل cert9.db ،key4.db و pkcs11.txt). اگر پیشوند dbm: استفاده نشود، ابزار فرض میکند که پایگاههای داده دادهشده در قالب SQLite هستند.
-h tokenname
-k slotPasswordFile
-K slotPassword
-m | --key-len keyLength
-M hashAlg
--cert-key-len certKeyLength
-n certname
نام مستعار میتواند یک PKCS #11 URI نیز باشد. برای نمونه، اگر گواهی با نام "my-server-cert" در مخزن گواهی داخلی دارید، میتواند بهطور صریح بهصورت "pkcs11:token=NSS%20Certificate%20DB;object=my-server-cert" مشخص شود. برای جزئیات بیشتر درباره این قالب، به RFC 7512 مراجعه کنید.
-P prefix
-r
-v
-w p12filePasswordFile
-W p12filePassword
کدهای بازگشتی (RETURN CODES)
مثالها (EXAMPLES)
وارد کردن کلیدها و گواهیها
ابتداییترین حالت استفاده از pk12util برای وارد کردن یک گواهی یا کلید، تعیین فایل ورودی PKCS #12 (-i) و روشی برای مشخص کردن پایگاهداده امنیتی مورد دسترسی است (یا -d برای یک دایرکتوری یا -h برای یک توکن).
pk12util -i p12File [-h tokenname] [-v] [-d directory] [-P dbprefix] [-k slotPasswordFile|-K slotPassword] [-w p12filePasswordFile|-W p12filePassword]
برای مثال:
# pk12util -i /tmp/cert-files/users.p12 -d /home/my/sharednssdb Enter a password which will be used to encrypt your keys. The password should be at least 8 characters long, and should contain at least one non-alphabetic character. Enter new password: Re-enter password: Enter password for PKCS12 file: pk12util: PKCS12 IMPORT SUCCESSFUL
استخراج کلیدها و گواهیها
استفاده از دستور pk12util برای استخراج گواهیها و کلیدها هم نیازمند نام گواهی جهت استخراج از پایگاهداده (-n) و هم فایل خروجی با فرمت PKCS #12 جهت نوشتن در آن است. پارامترهای اختیاری نیز وجود دارند که میتوانند برای رمزگذاری فایل جهت محافظت از محتوای گواهی استفاده شوند.
pk12util -o p12File -n certname [-c keyCipher] [-C certCipher] [-m|--key_len keyLen] [-n|--cert_key_len certKeyLen] [-d directory] [-P dbprefix] [-k slotPasswordFile|-K slotPassword] [-w p12filePasswordFile|-W p12filePassword]
برای مثال:
# pk12util -o certs.p12 -n Server-Cert -d /home/my/sharednssdb Enter password for PKCS12 file: Re-enter password:
فهرست کردن کلیدها و گواهیها
اطلاعات موجود در یک فایل .p12 برای انسان خوانا نیست. گواهیها و کلیدهای موجود در فایل میتوانند در قالب خوانا و آراسته (pretty-print) چاپ (فهرست) شوند که اطلاعات مربوط به هر گواهی و هرگونه کلید عمومی موجود در فایل .p12 را نمایش میدهد.
pk12util -l p12File [-h tokenname] [-r] [-d directory] [-P dbprefix] [-k slotPasswordFile|-K slotPassword] [-w p12filePasswordFile|-W p12filePassword]
برای مثال، این دستور خروجی پیشفرض ASCII را چاپ میکند:
# pk12util -l certs.p12
Enter password for PKCS12 file:
Key(shrouded):
Friendly Name: Thawte Freemail Member's Thawte Consulting (Pty) Ltd. ID
Encryption algorithm: PKCS #12 V2 PBE With SHA-1 And 3KEY Triple DES-CBC
Parameters:
Salt:
45:2e:6a:a0:03:4d:7b:a1:63:3c:15:ea:67:37:62:1f
Iteration Count: 1 (0x1)
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 13 (0xd)
Signature Algorithm: PKCS #1 SHA-1 With RSA Encryption
Issuer: "E=personal-freemail@thawte.com,CN=Thawte Personal Freemail C
A,OU=Certification Services Division,O=Thawte Consulting,L=Cape T
own,ST=Western Cape,C=ZA"
همچنین، گزینه -r گواهیها را چاپ کرده و سپس آنها را در فایلهای باینری DER جداگانه استخراج میکند. این کار اجازه میدهد تا گواهیها به برنامه دیگری که از فایلهای .p12 پشتیبانی میکند داده شوند. هر گواهی در فایلی با شمارهگذاری ترتیبی، با شروع از file0001.der تا file000N.der، با افزایش شماره برای هر گواهی نوشته میشود:
pk12util -l test.p12 -r
Enter password for PKCS12 file:
Key(shrouded):
Friendly Name: Thawte Freemail Member's Thawte Consulting (Pty) Ltd. ID
Encryption algorithm: PKCS #12 V2 PBE With SHA-1 And 3KEY Triple DES-CBC
Parameters:
Salt:
45:2e:6a:a0:03:4d:7b:a1:63:3c:15:ea:67:37:62:1f
Iteration Count: 1 (0x1)
Certificate Friendly Name: Thawte Personal Freemail Issuing CA - Thawte Consulting
Certificate Friendly Name: Thawte Freemail Member's Thawte Consulting (Pty) Ltd. ID
رمزگذاری مبتنی بر گذرواژه (PASSWORD ENCRYPTION)
استاندارد PKCS #12 نه تنها برای محافظت از کلیدهای خصوصی بلکه برای محافظت از گواهیها و فرادادههای مرتبط با کلیدها نیز سازوکار ارائه میدهد. رمزگذاری مبتنی بر گذرواژه برای محافظت از کلیدهای خصوصی در هنگام استخراج به فایل PKCS #12 و در صورت تمایل، گواهیهای مرتبط استفاده میشود. اگر هیچ الگوریتمی مشخص نشود، این ابزار بهطور پیشفرض از PKCS #12 SHA-1 و DES سهگانه سهکلیدی برای رمزگذاری کلید خصوصی استفاده میکند. در صورتی که در حالت FIPS نباشد، از PKCS #12 SHA-1 و RC4 چهلبیتی برای رمزگذاری گواهی استفاده میشود. در حالت FIPS، هیچ رمزگذاری روی گواهی انجام نمیگیرد. اگر رمزگذاری گواهی مورد نظر نباشد، مقدار "NONE" را به عنوان آرگومان گزینه -C مشخص کنید.
کلید خصوصی همیشه بهطور پیشفرض با رمزگذاری قوی محافظت میشود.
چندین نوع رمزنگاری (ciphers) پشتیبانی میشوند.
رمزگذاری مبتنی بر گذرواژه PKCS #5
رمزگذاری مبتنی بر گذرواژه PKCS #12
در PKCS #12، ارائهدهنده رمزنگاری میتواند ماژول توکن نرمافزاری یا یک ماژول سختافزاری خارجی باشد. اگر ماژول رمزنگاری از الگوریتم درخواستی پشتیبانی نکند، مناسبترین گزینه بعدی انتخاب خواهد شد (معمولاً حالت پیشفرض). اگر جایگزین مناسبی برای الگوریتم مورد نظر پیدا نشود، ابزار خطای no security module can perform the requested operation را بازمیگرداند.
انواع پایگاهداده NSS (NSS DATABASE TYPES)
سامانه NSS در ابتدا از پایگاههای داده BerkeleyDB برای ذخیره اطلاعات امنیتی استفاده میکرد. آخرین نسخههای این پایگاههای داده قدیمی (legacy) عبارتند از:
با این حال، پایگاهداده BerkeleyDB محدودیتهای کارایی دارد که مانع از استفاده همزمان و آسان آن توسط چندین برنامه میشود. سامانه NSS دارای انعطافپذیریهایی است که به برنامهها اجازه میدهد ضمن حفظ یک پایگاهداده مشترک و دور زدن مشکلات دسترسی، از موتور پایگاهداده مستقل خود استفاده کنند. با این وجود، NSS برای ارائه یک پایگاهداده امنیتی واقعاً مشترک، به انعطافپذیری بیشتری نیاز دارد.
در سال ۲۰۰۹، سامانه NSS مجموعه جدیدی از پایگاههای داده را معرفی کرد که به جای BerkeleyDB، از نوع پایگاههای داده SQLite هستند. این پایگاههای داده جدید دسترسیپذیری و کارایی بیشتری را فراهم میکنند:
از آنجا که پایگاههای داده SQLite برای اشتراکگذاری طراحی شدهاند، این پایگاهها از نوع مشترک (shared) محسوب میشوند. استفاده از نوع پایگاهداده مشترک اولویت دارد؛ و قالب قدیمی صرفاً برای سازگاری با گذشته حفظ شده است.
بهطور پیشفرض، ابزارها (مانند certutil، pk12util و modutil) فرض میکنند که پایگاههای داده امنیتی مشخصشده از نوع SQLite هستند. استفاده از پایگاههای داده قدیمی باید بهصورت دستی با افزودن پیشوند dbm: به مسیر پوشه امنیتی مورد نظر مشخص شود. برای مثال:
# pk12util -i /tmp/cert-files/users.p12 -d dbm:/home/my/sharednssdb
برای تنظیم نوع پایگاهداده قدیمی بهعنوان نوع پیشفرض ابزارها، متغیر محیطی NSS_DEFAULT_DB_TYPE را روی dbm تنظیم کنید:
export NSS_DEFAULT_DB_TYPE="dbm"
این خط را میتوان به فایل ~/.bashrc اضافه کرد تا این تغییر دائمی شود.
برای مطالعه پیشنویس مهندسی درباره تغییرات اعمالشده در پایگاههای داده مشترک NSS، به ویکی پروژه NSS مراجعه فرمایید:
نکات سازگاری (COMPATIBILITY NOTES)
رفتار استخراج pk12util به مرور زمان تغییر کرده است، در حالی که وارد کردن فایلهای استخراجشده با نسخههای قدیمیتر NSS همچنان پشتیبانی میشود.
تا قبل از انتشار نسخه ۳.۳۰، ابزار pk12util از کدگذاری UTF-16 برای طرحهای رمزگذاری مبتنی بر گذرواژه PKCS #5 استفاده میکرد، در حالی که توصیه میشود در صورتی که طرح رمزگذاری استفادهشده خارج از استاندارد PKCS #12 تعریف شده است، گذرواژهها به صورت UTF-8 کدگذاری شوند.
تا قبل از انتشار نسخه ۳.۳۱، حتی زمانی که "AES-128-CBC" یا "AES-192-CBC" از خط فرمان داده میشد، pk12util همیشه از AES دویستوپنجاهوششبیتی (256-bit AES) به عنوان طرح رمزگذاری زیربنایی استفاده میکرد.
به دلایل تاریخی، pk12util طرحهای رمزگذاری مبتنی بر گذرواژهای را که در این سند ذکر نشدهاند نیز میپذیرد. با این حال، این طرحها رسماً پشتیبانی نمیشوند و ممکن است در سازگاری با سایر ابزارها با مشکل مواجه شوند.
همچنین ببینید (SEE ALSO)
ویکی NSS حاوی اطلاعاتی در مورد طراحی پایگاهداده جدید و نحوه پیکربندی برنامهها برای استفاده از آن است.
منابع بیشتر (ADDITIONAL RESOURCES)
برای کسب اطلاعات درباره 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
نویسندگان (AUTHORS)
ابزارهای NSS توسط توسعهدهندگانی از Netscape، Red Hat، Sun، Oracle، Mozilla و Google نوشته شده و نگهداری میشوند.
نویسندگان: Elio Maldonado <emaldona@redhat.com>، Deon Lackey <dlackey@redhat.com>.
مجوز (LICENSE)
تحت مجوز عمومی موزیلا (Mozilla Public License)، نسخه ۲.۰ منتشر شده است. اگر نسخهای از MPL همراه با این فایل توزیع نشده است، میتوانید آن را از نشانی http://mozilla.org/MPL/2.0 دریافت کنید.
یادداشتها (NOTES)
- 1.
- گزارش اشکال شماره ۸۳۶۴۷۷ موزیلا NSS
| 19 May 2021 | nss-tools |