| CERTUTIL(1) | NSS Security Tools | CERTUTIL(1) |
نام (NAME)
certutil - ابزار مدیریت کلیدها و گواهیها در پایگاهدادهها و توکنهای NSS
خلاصه دستور (SYNOPSIS)
certutil [options] [[arguments]]
وضعیت (STATUS)
این مستندات هنوز در حال تکمیل است. لطفاً در بازبینی اولیه در Mozilla NSS bug 836477[1] مشارکت کنید.
توضیحات (DESCRIPTION)
ابزار پایگاهداده گواهی، certutil، یک ابزار خط فرمانی است که میتواند پایگاههای داده گواهی و کلید را ایجاد و ویرایش کند. این ابزار به طور خاص میتواند گواهیها را فهرست، تولید، ویرایش یا حذف کند، گذرواژه ایجاد کرده یا تغییر دهد، جفتکلیدهای عمومی و خصوصی جدید تولید نماید، محتویات پایگاهداده کلید را نمایش دهد یا جفتکلیدهای موجود در پایگاهداده کلید را حذف کند.
صدور گواهی، بخشی از فرآیند مدیریت کلید و گواهی است که مستلزم ایجاد کلیدها و گواهیها در پایگاهداده کلید میباشد. این مستند به مدیریت پایگاهداده کلید و گواهی میپردازد. برای کسب اطلاعات درباره مدیریت پایگاهداده ماژولهای امنیتی، به صفحه راهنمای modutil مراجعه کنید.
گزینهها و آرگومانهای دستور (COMMAND OPTIONS AND ARGUMENTS)
اجرای certutil همیشه نیازمند یک و تنها یک گزینه دستور است تا نوع عملیات گواهی را مشخص کند. هر گزینه دستور ممکن است صفر یا چند آرگومان بپذیرد. گزینه دستور -H تمام گزینههای دستور و آرگومانهای مرتبط با آنها را فهرست میکند.
گزینههای دستور
-A
-B
-C
-D
--rename
-E
-F
برخی کارتهای هوشمند اجازه حذف کلید عمومی تولیدشده را نمیدهند. در چنین مواردی، تنها کلید خصوصی از جفتکلید حذف میشود.
-G
-H
-K
-L
-M
-N
-O
-R
-S
-T
-U
-V
-W
--merge
--upgrade-merge
آرگومانها
آرگومانها یک گزینه دستور را تغییر میدهند و معمولاً حروف کوچک، اعداد یا نمادها هستند.
-a
--simple-self-signed
-b validity-time
اگر از این گزینه استفاده نشود، بررسی اعتبار بهطور پیشفرض به زمان فعلی سیستم واگذار میشود.
-c issuer
-d [prefix]directory
دستور certutil از دو نوع پایگاهداده پشتیبانی میکند: پایگاههای داده امنیتی قدیمی (cert8.db ،key3.db و secmod.db) و پایگاههای داده جدید SQLite (شامل cert9.db ،key4.db و pkcs11.txt).
بسته NSS پیشوندهای زیر را شناسایی میکند:
اگر هیچ پیشوندی مشخص نشود، نوع پیشفرض از NSS_DEFAULT_DB_TYPE دریافت میشود. اگر NSS_DEFAULT_DB_TYPE تنظیم نشده باشد، sql: پیشفرض است.
--dump-ext-val OID
-e
--email email-address
--extGeneric OID:critical-flag:filename[,OID:critical-flag:filename]...
-f password-file
-g keysize
-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
-m serial-number
-n nickname
نام مستعار میتواند یک PKCS #11 URI نیز باشد. برای نمونه، اگر گواهی با نام "my-server-cert" در مخزن گواهی داخلی دارید، میتواند بهطور صریح بهصورت "pkcs11:token=NSS%20Certificate%20DB;object=my-server-cert" مشخص شود. برای جزئیات بیشتر درباره این قالب، به RFC 7512 مراجعه کنید.
-o output-file
-P dbPrefix
-p phone
-q pqgfile or curve-name
نام منحنی بیضوی یکی از موارد 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
-s subject
-t trustargs
کدهای ویژگی برای دستهبندیها با کاما از یکدیگر جدا میشوند، و کل مجموعه ویژگیها داخل علامت نقلقول قرار میگیرد. برای نمونه:
-t TC,C,T
برای مشاهده فهرستی از گواهیهای فعلی و ویژگیهای اعتماد در پایگاهداده گواهی، از گزینه -L استفاده کنید.
توجه داشته باشید که خروجی گزینه -L ممکن است شامل فلگ "u" باشد، به این معنی که یک کلید خصوصی مرتبط با آن گواهی وجود دارد. این یک فلگ پویا است و نمیتوانید آن را با certutil تنظیم کنید.
-u certusage
زمینهها به شرح زیر هستند:
-v valid-months
-w offset-months
-X
-x
-y exp
--pss
--pss-sign
-z noise-file
-Z hashAlg
-0 SSO_password
-1 | --keyUsage keyword,keyword
-2
افزونههای گواهی X.509 در RFC 5280 شرح داده شدهاند.
-3
افزونههای گواهی X.509 در RFC 5280 شرح داده شدهاند.
-4
افزونههای گواهی X.509 در RFC 5280 شرح داده شدهاند.
-5 | --nsCertType keyword,keyword
افزونههای گواهی X.509 در RFC 5280 شرح داده شدهاند.
-6 | --extKeyUsage keyword,keyword
افزونههای گواهی X.509 در RFC 5280 شرح داده شدهاند.
-7 emailAddrs
-8 dns-names
--extAIA
--extSIA
--extCP
--extPM
--extPC
--extIA
--extSKID
--extNC
--extSAN type:name[,type:name]...
-type: directory, dn, dns, edi, ediparty, email, ip, ipaddr, other, registerid, rfc822, uri, x400, x400addr
--empty-password
--keyAttrFlags attrflags
--keyOpFlagsOn opflags, --keyOpFlagsOff opflags
--new-n nickname
--source-dir certdir
--source-prefix certdir
--upgrade-id uniqueID
--upgrade-token-name name
-@ pwfile
کاربرد و مثالها (USAGE AND EXAMPLES)
بیشتر گزینههای دستور در مثالهای فهرستشده در اینجا، دارای آرگومانهای بیشتری هستند. آرگومانهای ارائهشده در این مثالها پرکاربردترین موارد بوده یا برای نشان دادن یک سناریوی خاص به کار رفتهاند. از گزینه -H برای نمایش فهرست کامل آرگومانها برای هر گزینه دستور استفاده کنید.
ایجاد پایگاههای داده امنیتی جدید
گواهیها، کلیدها و ماژولهای امنیتی مرتبط با مدیریت گواهیها در سه پایگاهداده مرتبط ذخیره میشوند:
این پایگاههای داده باید پیش از امکان تولید گواهیها یا کلیدها ایجاد شوند.
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 نیازمند چهار آرگومان است:
درخواست گواهی جدید میتواند در قالب اسکی (-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
روشهایی برای محدود کردن کلیدهای فهرستشده در نتایج جستجو وجود دارد:
فهرست کردن ماژولهای امنیتی
دستگاههایی که میتوانند برای ذخیره گواهیها استفاده شوند -- هم پایگاههای داده داخلی و هم دستگاههای خارجی مانند کارتهای هوشمند -- با بارگذاری ماژولهای امنیتی شناسایی و استفاده میشوند. گزینه دستور -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 (NSS DATABASE TYPES)
سامانه NSS در ابتدا از پایگاههای داده BerkeleyDB برای ذخیره اطلاعات امنیتی استفاده میکرد. آخرین نسخههای این پایگاههای داده قدیمی (legacy) عبارتند از:
با این حال، پایگاهداده BerkeleyDB محدودیتهای کارایی دارد که مانع از استفاده همزمان و آسان آن توسط چندین برنامه میشود. سامانه NSS دارای انعطافپذیریهایی است که به برنامهها اجازه میدهد ضمن حفظ یک پایگاهداده مشترک و دور زدن مشکلات دسترسی، از موتور پایگاهداده مستقل خود استفاده کنند. با این وجود، NSS برای ارائه یک پایگاهداده امنیتی واقعاً مشترک، به انعطافپذیری بیشتری نیاز دارد.
در سال ۲۰۰۹، سامانه NSS مجموعه جدیدی از پایگاههای داده را معرفی کرد که به جای BerkeleyDB، از نوع پایگاههای داده SQLite هستند. این پایگاههای داده جدید دسترسیپذیری و کارایی بیشتری را فراهم میکنند:
از آنجا که پایگاههای داده 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 مراجعه فرمایید:
همچنین ببینید (SEE ALSO)
دستور certutil دارای آرگومانها یا عملیاتی است که از ویژگیهای تعریفشده در چندین سند RFC کارگروه IETF استفاده میکنند.
ویکی 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 |