| KEYMGR(8) | Knot DNS | KEYMGR(8) |
نام (NAME)
keymgr - ابزار مدیریت کلیدهای DNSSEC برای Knot DNS
خلاصه دستور (SYNOPSIS)
keymgr [config_option] [options] zone_name command
keymgr [config_option] [options] keystore_id command
keymgr [config_option] [-j] -l
keymgr -t parameter...
توضیحات (DESCRIPTION)
ابزار keymgr برای مدیریت دستی کلیدها در کارگزار Knot DNS به کار میرود.
قابلیتهایی برای مدیریت کلیدهای DNSSEC و خطمشی KASP (Key And Signature Policy) فراهم شده است.
پیکربندی DNSSEC و KASP در پایگاهدادهای موسوم به KASP ذخیره میشود. این پایگاهداده بر پایه LMDB پیادهسازی شده است.
پارامترها (Parameters)
- zone_name
- نام زونی که دستور برای آن اجرا میشود.
گزینههای پیکربندی (Config options)
- -c, --config file
- استفاده از فایل پیکربندی متنی (پیشفرض /etc/knot/knot.conf است).
- -C, --confdb directory
- استفاده از دایرکتوری پایگاهداده پیکربندی باینری (پیشفرض /var/lib/knot/confdb است). پایگاهداده پیکربندی پیشفرض، در صورت وجود، بر فایل پیکربندی پیشفرض اولویت دارد.
- -D, --dir path
- استفاده از مسیر مشخصشده برای پایگاهداده KASP و پیکربندی پیشفرض.
گزینهها (OPTIONS)
- -t, --tsig tsig_name [tsig_algorithm [tsig_bits]]
- تولید یک کلید TSIG برای نام دادهشده. بهصورت اختیاری الگوریتم کلید میتواند با نام آن <#key-algorithm> (پیشفرض: hmac-sha256) و طول بیت کلید (پیشفرض: طول بهینه بر اساس الگوریتم) مشخص شود. کلید TSIG تولیدشده تنها در stdout نمایش داده میشود: این دستور فایلی ایجاد نمیکند و کلید را در مخزن کلید قرار نمیدهد.
- -e, --extended
- خروجی گسترده (فهرست کلیدها همراه با توضیحات کامل).
- -j, --json
- چاپ زونها یا کلیدها (نه کلیدهای TSIG) در قالب JSON.
- -l, --list
- چاپ فهرست زونهایی که دستکم یک کلید ذخیرهشده در پایگاهداده پیکربندیشده KASP دارند.
- -x, --mono
- تولید نکردن خروجی رنگی.
- -X, --color
- اجبار به تولید خروجی رنگی در حالت عادی.
- -h, --help
- چاپ راهنمای برنامه.
- -V, --version
- چاپ نسخه برنامه. گزینه -VV باعث میشود برنامه خلاصه پیکربندی زمان کامپایل را چاپ کند.
نکته:
دستورات (Commands)
- list [timestamp_format]
- چاپ فهرست شناسه کلیدها و پارامترهای کلیدهای متعلق به زون.
- generate [arguments...]
- تولید کلید جدید DNSSEC و ذخیره آن در پایگاهداده KASP. شناسه کلید را چاپ میکند. این عمل تعدادی آرگومان میگیرد (به زیر مراجعه کنید). مقادیر آرگومانهای نامشخص از خطمشی متناظر (در صورت استفاده از گزینههای -c یا -C) یا از پیشفرضهای خطمشی Knot گرفته میشوند.
- import-bind BIND_key_file
- وارد کردن یک کلید به سبک BIND به پایگاهداده KASP (با تبدیل آن به قالب PEM). یک آرگومان میگیرد: مسیر فایل کلید BIND (خصوصی یا عمومی، اما هر دو باید وجود داشته باشند).
- import-pub BIND_pubkey_file
- وارد کردن یک کلید عمومی به پایگاهداده KASP. این کلید چرخش نخواهد داشت و برای امضا استفاده نخواهد شد. یک آرگومان میگیرد: مسیر فایل کلید عمومی BIND.
- import-pem PEM_file [arguments...]
- وارد کردن یک کلید DNSSEC از فایل PEM. پارامترهای کلید (مشابه عمل generate) باید مشخص شوند (بهویژه الگوریتم، زمانسنجها...) زیرا در قالب PEM موجود نیستند.
- import-pkcs11 key_id [arguments...]
- وارد کردن یک کلید DNSSEC از حافظه PKCS #11. پارامترهای کلید (مشابه عمل generate) باید مشخص شوند (بهویژه الگوریتم، زمانسنجها...) زیرا در دسترس نیستند. در واقع، هیچ داده کلیدی وارد نمیشود، تنها متادیتای پایگاهداده KASP ایجاد میگردد.
- nsec3-salt [new_salt]
- چاپ salt فعلی NSEC3 مورد استفاده برای امضا. در صورت مشخص شدن new_salt، salt بازنویسی میشود. مقدار salt بهصورت هگزادسیمال چاپ شده و انتظار میرود، یا در صورت خالی بودن یک خط تیره (-) است.
- master-serial [new_serial]
- چاپ شماره سریال SOA کارگزار اصلی دوردست ذخیرهشده در پایگاهداده KASP هنگام استفاده از امضای DNSSEC در حالت ثانویه (on-secondary). در صورت مشخص شدن new_serial، شماره سریال بازنویسی میشود (توصیه نمیشود).
- set key_spec [arguments...]
- تغییر یک آرگومان زمانبندی (یا ksk/zsk) از یک کلید موجود به مقدار جدید. Key_spec یا تگ کلید است یا پیشوندی از شناسه کلید، همراه با پیشوند اختیاری [id=|keytag=]؛ arguments همانند دستور generate هستند، اما تنها موارد مرتبط.
- ds [key_spec]
- تولید رکورد DS (همه الگوریتمهای خلاصه با هم) برای کلید مشخصشده. Key_spec همانند set است، اگر مشخص نشود، از تمام KSKها استفاده میشود.
- dnskey [key_spec]
- تولید رکورد DNSKEY برای کلید مشخصشده. Key_spec همانند ds است، اگر مشخص نشود، از تمام KSKها استفاده میشود.
- delete key_spec
- حذف کلید مشخصشده از زون. اگر کلید به اشتراک گذاشته نشده باشد، از مخزن کلید نیز حذف میشود.
- وارد کردن یک کلید (مشخصشده با شناسه کامل کلید) از زونی دیگر بهصورت اشتراکی. پس از این کار، هر دو زون مالکیت یکسانی بر کلید خواهند داشت.
دستورات مخزن کلید (Keystore commands)
- keystore-test
- انجام برخی آزمایشها روی مخزن کلید مشخصشده. برای هر الگوریتم، تولید کلید، وارد کردن، حذف و استفاده (امضا و اعتبارسنجی) آزمایش میشوند. از یک keystore_id پیکربندیشده یا - برای حالت پیشفرض استفاده کنید.
- keystore-bench [num_threads]
- انجام یک بنچمارک امضا روی مخزن کلید مشخصشده. بلاکهای تصادفی داده توسط تعداد رشتههای انتخابشده (پیشفرض ۱ است) در یک حلقه امضا میشوند و میانگین تعداد عملیاتهای امضا در ثانیه برای هر الگوریتم بازگردانده میشود. از یک keystore_id پیکربندیشده یا - برای حالت پیشفرض استفاده کنید.
دستورات مرتبط با قابلیت Offline KSK
- pregenerate [timestamp-from] timestamp-to
- پیشتولید ZSKها برای استفاده همراه با KSK آفلاین، برای بازه زمانی مشخصشده از اکنون یا زمان مشخصشده. این تابع همچنین برای کلیدهای KSK غیرآفلاین نیز اعمال میشود.
- show-offline [timestamp-from] [timestamp-to]
- چاپ رکوردهای مرتبط با کلید آفلاین پیشتولیدشده برای بازه زمانی مشخصشده. اگر timestamp_to حذف شود، تا بینهایت خواهد بود. اگر timestamp-from حذف شود، از ابتدا شروع خواهد شد.
- del-offline timestamp-from timestamp-to
- حذف رکوردهای مرتبط با کلید آفلاین پیشتولیدشده در بازه زمانی مشخصشده.
- del-all-old
- حذف کلیدهای قدیمی که در وضعیت 'removed' هستند. این تابع برای کلیدهای KSK غیرآفلاین نیز اعمال میشود.
- generate-ksr [timestamp-from] timestamp-to
- چاپ KeySigningRequest به stdout بر اساس ZSKهای پیشتولیدشده برای بازه زمانی مشخصشده. اگر timestamp-from حذف شود، برچسب زمانی آخرین مجموعه رکوردهای آفلاین استفاده میشود یا در صورت نبود رکوردها، زمان کنونی به کار میرود.
- sign-ksr ksr_file
- خواندن KeySigningRequest از یک فایل متنی، امضای آن با استفاده از مجموعه کلید محلی و چاپ SignedKeyResponse در stdout.
- validate-skr skr_file
- خواندن SignedKeyResponse از یک فایل متنی و اعتبارسنجی RRSIGهای درون آن در صورتی که خراب نشده باشند.
- import-skr skr_file
- خواندن SignedKeyResponse از یک فایل متنی و وارد کردن امضاها برای استفاده بعدی در زون. اگر برخی امضاها قبلاً وارد شده باشند، برای بازه زمانی از ابتدای SKR تا بینهایت حذف خواهند شد.
آرگومانهای تولید (Generate arguments)
آرگومانها با فاصله از هم جدا میشوند و هر یک در قالب 'name=value' هستند. یک آرگومان (bool) مقادیر yes یا no را میپذیرد. اگر مقدار حذف شود، بهصورت yes تفسیر میشود.
- algorithm
- یا یک شماره الگوریتم (مانند 14) یا نام الگوریتم <#policy-algorithm> (مانند ecdsap256sha256).
- size
- طول کلید بر حسب بیت.
- ksk
- (bool) کلید برای امضای مجموعه رکورد (rrset) مربوط به DNSKEY استفاده خواهد شد. کلید تولیدشده همچنین فلگ Secure Entry Point را روی 1 تنظیم خواهد داشت.
- zsk
- (bool) کلید برای امضای زون (بهجز مجموعه رکورد DNSKEY) استفاده خواهد شد. این فلگ میتواند همزمان با فلگ ksk تنظیم شود (برای کلید CSK).
- sep
- (bool) تنظیم استاندارد فلگ Secure Entry Point را بازنویسی میکند.
- for-later
- (bool) کلید برای استفاده بعدی مشخص خواهد شد. این بدان معناست که هرگاه قرار باشد کلید جدیدی تولید شود، در صورت تطابق نوع و الگوریتم کلید، بهجای آن از این کلید استفاده خواهد شد.
آرگومانهای زیر برچسبهای زمانی طول عمر کلید هستند (به وضعیتهای کلید DNSSEC در <#dnssec-key-states> مراجعه کنید):
- pre_active
- استفاده از کلید برای امضا آغاز شده، اما منتشر نشده است (تنها برای چرخش الگوریتم).
- publish
- کلید منتشر شده است.
- ready
- کلید در انتظار ارسال است (تنها برای KSK).
- active
- کلید برای امضا استفاده میشود.
- retire_active
- کلید همچنان برای امضا استفاده میشود، اما کلید دیگری فعال است (تنها برای KSK یا چرخش الگوریتم).
- retire
- کلید همچنان منتشر است (تنها اگر ZSK باشد)، اما دیگر برای امضا استفاده نمیشود.
- post_active
- کلید دیگر منتشر نمیشود، اما همچنان برای امضا استفاده میشود (تنها برای چرخش الگوریتم).
- revoke
- کلید بر اساس چرخش لنگر اعتماد RFC 5011 https://datatracker.ietf.org/doc/html/rfc5011.html لغو شده است.
- remove
- کلید حذف شده است.
برچسبهای زمانی (Timestamps)
- 0
- برچسب زمانی صفر به معنای آینده نامتناهی است.
- UNIX_time
- تعداد ثانیههای مثبت از مبدأ ۱۹۷۰ UTC.
- YYYYMMDDHHMMSS
- تاریخ و زمان در این قالب بدون هیچگونه علامت نگارشی.
- relative_timestamp
- یک نویسه علامت (+، -)، یک عدد، و یک واحد زمانی اختیاری (y، mo، d، h، mi، s). واحد پیشفرض یک ثانیه است. مانند +1mi، -2mo.
قالبهای برچسب زمانی در خروجی (Output timestamp formats)
کدهای خروج (EXIT VALUES)
وضعیت خروج 0 نشاندهنده موفقیتآمیز بودن عملیات است. هر وضعیت خروج دیگر نشاندهنده بروز خطا است.
مثالها (EXAMPLES)
- 1.
- تولید کلید جدید TSIG:
$ keymgr -t my_name hmac-sha384
- 2.
- تولید کلید جدید DNSSEC:
$ keymgr example.com. generate algorithm=ECDSAP256SHA256 size=256 \ ksk=true created=1488034625 publish=20170223205611 retire=+10mo remove=+1y
- 3.
- وارد کردن یک کلید DNSSEC از BIND:
$ keymgr example.com. import-bind ~/bind/Kharbinge4d5.+007+63089.key
- 4.
- وارد کردن یک کلید CSK DNSSEC از یک فایل PEM:
$ keymgr example.com. import-pem 085d3890e8c22d854586678d9263933f2d02d795.pem ksk=yes zsk=yes
- 5.
- پیکربندی زمانبندی کلید:
$ keymgr example.com. set 4208 active=+2mi retire=+4mi remove=+5mi
- 6.
- به اشتراکگذاری یک KSK از زونی دیگر:
$ keymgr example.com. share e687cf927029e9db7184d2ece6d663f5d1e5b0e9 another-zone.com.
همچنین ببینید (SEE ALSO)
RFC 6781 https://datatracker.ietf.org/doc/html/rfc6781.html - DNSSEC Operational Practices. RFC 7583 https://datatracker.ietf.org/doc/html/rfc7583.html - DNSSEC Key Rollover Timing Considerations.
نویسنده (AUTHOR)
CZ.NIC, z.s.p.o. and contributors https://www.knot-dns.cz
حق نشر (COPYRIGHT)
Copyright (C) CZ.NIC, z.s.p.o. and contributors
| 2026-06-12 | 3.5.5 |