KEYMGR(8) Knot DNS KEYMGR(8)

keymgr - ابزار مدیریت کلیدهای DNSSEC برای Knot DNS

keymgr [config_option] [options] zone_name command

keymgr [config_option] [options] keystore_id command

keymgr [config_option] [-j] -l

keymgr -t parameter...

ابزار keymgr برای مدیریت دستی کلیدها در کارگزار Knot DNS به کار می‌رود.

قابلیت‌هایی برای مدیریت کلیدهای DNSSEC و خط‌مشی KASP (Key And Signature Policy) فراهم شده است.

پیکربندی DNSSEC و KASP در پایگاه‌داده‌ای موسوم به KASP ذخیره می‌شود. این پایگاه‌داده بر پایه LMDB پیاده‌سازی شده است.

نام زونی که دستور برای آن اجرا می‌شود.

استفاده از فایل پیکربندی متنی (پیش‌فرض /etc/knot/knot.conf است).
استفاده از دایرکتوری پایگاه‌داده پیکربندی باینری (پیش‌فرض /var/lib/knot/confdb است). پایگاه‌داده پیکربندی پیش‌فرض، در صورت وجود، بر فایل پیکربندی پیش‌فرض اولویت دارد.
استفاده از مسیر مشخص‌شده برای پایگاه‌داده KASP و پیکربندی پیش‌فرض.

تولید یک کلید TSIG برای نام داده‌شده. به‌صورت اختیاری الگوریتم کلید می‌تواند با نام آن <#key-algorithm> (پیش‌فرض: hmac-sha256) و طول بیت کلید (پیش‌فرض: طول بهینه بر اساس الگوریتم) مشخص شود. کلید TSIG تولیدشده تنها در stdout نمایش داده می‌شود: این دستور فایلی ایجاد نمی‌کند و کلید را در مخزن کلید قرار نمی‌دهد.
خروجی گسترده (فهرست کلیدها همراه با توضیحات کامل).
چاپ زون‌ها یا کلیدها (نه کلیدهای TSIG) در قالب JSON.
چاپ فهرست زون‌هایی که دست‌کم یک کلید ذخیره‌شده در پایگاه‌داده پیکربندی‌شده KASP دارند.
تولید نکردن خروجی رنگی.
اجبار به تولید خروجی رنگی در حالت عادی.
چاپ راهنمای برنامه.
چاپ نسخه برنامه. گزینه -VV باعث می‌شود برنامه خلاصه پیکربندی زمان کامپایل را چاپ کند.

نکته:

ابزار keymgr با همان دسترسی‌های کاربری پیکربندی‌شده برای knotd <> اجرا می‌شود. برای نمونه، اگر keymgr به‌عنوان root اجرا شود، اما کاربر پیکربندی‌شده <#server-user> کاربر knot باشد، قادر به خواندن فایل‌هایی (فایل‌های PEM، پایگاه‌داده KASP، ...) که تنها توسط root قابل خواندن هستند نخواهد بود.

چاپ فهرست شناسه کلیدها و پارامترهای کلیدهای متعلق به زون.
تولید کلید جدید DNSSEC و ذخیره آن در پایگاه‌داده KASP. شناسه کلید را چاپ می‌کند. این عمل تعدادی آرگومان می‌گیرد (به زیر مراجعه کنید). مقادیر آرگومان‌های نامشخص از خط‌مشی متناظر (در صورت استفاده از گزینه‌های -c یا -C) یا از پیش‌فرض‌های خط‌مشی Knot گرفته می‌شوند.
وارد کردن یک کلید به سبک BIND به پایگاه‌داده KASP (با تبدیل آن به قالب PEM). یک آرگومان می‌گیرد: مسیر فایل کلید BIND (خصوصی یا عمومی، اما هر دو باید وجود داشته باشند).
وارد کردن یک کلید عمومی به پایگاه‌داده KASP. این کلید چرخش نخواهد داشت و برای امضا استفاده نخواهد شد. یک آرگومان می‌گیرد: مسیر فایل کلید عمومی BIND.
وارد کردن یک کلید DNSSEC از فایل PEM. پارامترهای کلید (مشابه عمل generate) باید مشخص شوند (به‌ویژه الگوریتم، زمان‌سنج‌ها...) زیرا در قالب PEM موجود نیستند.
وارد کردن یک کلید DNSSEC از حافظه PKCS #11. پارامترهای کلید (مشابه عمل generate) باید مشخص شوند (به‌ویژه الگوریتم، زمان‌سنج‌ها...) زیرا در دسترس نیستند. در واقع، هیچ داده کلیدی وارد نمی‌شود، تنها متادیتای پایگاه‌داده KASP ایجاد می‌گردد.
چاپ salt فعلی NSEC3 مورد استفاده برای امضا. در صورت مشخص شدن new_salt، salt بازنویسی می‌شود. مقدار salt به‌صورت هگزادسیمال چاپ شده و انتظار می‌رود، یا در صورت خالی بودن یک خط تیره (-) است.
چاپ شماره سریال SOA کارگزار اصلی دوردست ذخیره‌شده در پایگاه‌داده KASP هنگام استفاده از امضای DNSSEC در حالت ثانویه (on-secondary). در صورت مشخص شدن new_serial، شماره سریال بازنویسی می‌شود (توصیه نمی‌شود).
تغییر یک آرگومان زمان‌بندی (یا ksk/zsk) از یک کلید موجود به مقدار جدید. Key_spec یا تگ کلید است یا پیشوندی از شناسه کلید، همراه با پیشوند اختیاری [id=|keytag=]؛ arguments همانند دستور generate هستند، اما تنها موارد مرتبط.
تولید رکورد DS (همه الگوریتم‌های خلاصه با هم) برای کلید مشخص‌شده. Key_spec همانند set است، اگر مشخص نشود، از تمام KSKها استفاده می‌شود.
تولید رکورد DNSKEY برای کلید مشخص‌شده. Key_spec همانند ds است، اگر مشخص نشود، از تمام KSKها استفاده می‌شود.
حذف کلید مشخص‌شده از زون. اگر کلید به اشتراک گذاشته نشده باشد، از مخزن کلید نیز حذف می‌شود.
وارد کردن یک کلید (مشخص‌شده با شناسه کامل کلید) از زونی دیگر به‌صورت اشتراکی. پس از این کار، هر دو زون مالکیت یکسانی بر کلید خواهند داشت.

انجام برخی آزمایش‌ها روی مخزن کلید مشخص‌شده. برای هر الگوریتم، تولید کلید، وارد کردن، حذف و استفاده (امضا و اعتبارسنجی) آزمایش می‌شوند. از یک keystore_id پیکربندی‌شده یا - برای حالت پیش‌فرض استفاده کنید.
انجام یک بنچ‌مارک امضا روی مخزن کلید مشخص‌شده. بلاک‌های تصادفی داده توسط تعداد رشته‌های انتخاب‌شده (پیش‌فرض ۱ است) در یک حلقه امضا می‌شوند و میانگین تعداد عملیات‌های امضا در ثانیه برای هر الگوریتم بازگردانده می‌شود. از یک keystore_id پیکربندی‌شده یا - برای حالت پیش‌فرض استفاده کنید.

پیش‌تولید ZSKها برای استفاده همراه با KSK آفلاین، برای بازه زمانی مشخص‌شده از اکنون یا زمان مشخص‌شده. این تابع همچنین برای کلیدهای KSK غیرآفلاین نیز اعمال می‌شود.
چاپ رکوردهای مرتبط با کلید آفلاین پیش‌تولیدشده برای بازه زمانی مشخص‌شده. اگر timestamp_to حذف شود، تا بی‌نهایت خواهد بود. اگر timestamp-from حذف شود، از ابتدا شروع خواهد شد.
حذف رکوردهای مرتبط با کلید آفلاین پیش‌تولیدشده در بازه زمانی مشخص‌شده.
حذف کلیدهای قدیمی که در وضعیت 'removed' هستند. این تابع برای کلیدهای KSK غیرآفلاین نیز اعمال می‌شود.
چاپ KeySigningRequest به stdout بر اساس ZSKهای پیش‌تولیدشده برای بازه زمانی مشخص‌شده. اگر timestamp-from حذف شود، برچسب زمانی آخرین مجموعه رکوردهای آفلاین استفاده می‌شود یا در صورت نبود رکوردها، زمان کنونی به کار می‌رود.
خواندن KeySigningRequest از یک فایل متنی، امضای آن با استفاده از مجموعه کلید محلی و چاپ SignedKeyResponse در stdout.
خواندن SignedKeyResponse از یک فایل متنی و اعتبارسنجی RRSIGهای درون آن در صورتی که خراب نشده باشند.
خواندن SignedKeyResponse از یک فایل متنی و وارد کردن امضاها برای استفاده بعدی در زون. اگر برخی امضاها قبلاً وارد شده باشند، برای بازه زمانی از ابتدای SKR تا بی‌نهایت حذف خواهند شد.

آرگومان‌ها با فاصله از هم جدا می‌شوند و هر یک در قالب 'name=value' هستند. یک آرگومان (bool) مقادیر yes یا no را می‌پذیرد. اگر مقدار حذف شود، به‌صورت yes تفسیر می‌شود.

یا یک شماره الگوریتم (مانند 14) یا نام الگوریتم <#policy-algorithm> (مانند ecdsap256sha256).
طول کلید بر حسب بیت.
(bool) کلید برای امضای مجموعه رکورد (rrset) مربوط به DNSKEY استفاده خواهد شد. کلید تولیدشده همچنین فلگ Secure Entry Point را روی 1 تنظیم خواهد داشت.
(bool) کلید برای امضای زون (به‌جز مجموعه رکورد DNSKEY) استفاده خواهد شد. این فلگ می‌تواند هم‌زمان با فلگ ksk تنظیم شود (برای کلید CSK).
(bool) تنظیم استاندارد فلگ Secure Entry Point را بازنویسی می‌کند.
(bool) کلید برای استفاده بعدی مشخص خواهد شد. این بدان معناست که هرگاه قرار باشد کلید جدیدی تولید شود، در صورت تطابق نوع و الگوریتم کلید، به‌جای آن از این کلید استفاده خواهد شد.

آرگومان‌های زیر برچسب‌های زمانی طول عمر کلید هستند (به وضعیت‌های کلید DNSSEC در <#dnssec-key-states> مراجعه کنید):

استفاده از کلید برای امضا آغاز شده، اما منتشر نشده است (تنها برای چرخش الگوریتم).
کلید منتشر شده است.
کلید در انتظار ارسال است (تنها برای KSK).
کلید برای امضا استفاده می‌شود.
کلید همچنان برای امضا استفاده می‌شود، اما کلید دیگری فعال است (تنها برای KSK یا چرخش الگوریتم).
کلید همچنان منتشر است (تنها اگر ZSK باشد)، اما دیگر برای امضا استفاده نمی‌شود.
کلید دیگر منتشر نمی‌شود، اما همچنان برای امضا استفاده می‌شود (تنها برای چرخش الگوریتم).
کلید بر اساس چرخش لنگر اعتماد RFC 5011 https://datatracker.ietf.org/doc/html/rfc5011.html لغو شده است.
کلید حذف شده است.

0
برچسب زمانی صفر به معنای آینده نامتناهی است.
تعداد ثانیه‌های مثبت از مبدأ ۱۹۷۰ UTC.
تاریخ و زمان در این قالب بدون هیچ‌گونه علامت نگارشی.
یک نویسه علامت (+، -)، یک عدد، و یک واحد زمانی اختیاری (y، mo، d، h، mi، s). واحد پیش‌فرض یک ثانیه است. مانند +1mi، -2mo.

(هیچ/none)
برچسب‌های زمانی به‌صورت زمان UNIX چاپ می‌شوند.
برچسب‌های زمانی به‌صورت نسبی نسبت به اکنون و با استفاده از واحدهای زمانی چاپ می‌شوند (مانند -2y5mo، +1h13s).
برچسب‌های زمانی در قالب ISO8601 چاپ می‌شوند (مانند 2016-12-31T23:59:00).

وضعیت خروج 0 نشان‌دهنده موفقیت‌آمیز بودن عملیات است. هر وضعیت خروج دیگر نشان‌دهنده بروز خطا است.

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.

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.

knot.conf(5), knotc(8), knotd(8).

CZ.NIC, z.s.p.o. and contributors https://www.knot-dns.cz

Copyright (C) CZ.NIC, z.s.p.o. and contributors

2026-06-12 3.5.5