OPENSSL-PKEY(1ssl) OpenSSL OPENSSL-PKEY(1ssl)

openssl-pkey - مدیریت کلید عمومی و خصوصی

openssl pkey [-help] [-engine id] [-provider name] [-provider-path path] [-provparam [name:]key=value] [-propquery propq] [-check] [-pubcheck] [-in filename|uri] [-inform DER|PEM|P12|ENGINE] [-passin arg] [-pubin] [-out filename] [-outform DER|PEM] [-cipher] [-passout arg] [-traditional] [-pubout] [-noout] [-text] [-text_pub] [-ec_conv_form arg] [-ec_param_enc arg]

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

نمایش پیام راهنمای استفاده از دستور.
بخش "Engine Options" را در openssl(1) ببینید. این گزینه منسوخ شده است.
بخش "Provider Options" را در openssl(1)، provider(7) و property(7) ببینید.
این گزینه سازگاری یک جفت‌کلید را برای هر دو جزء عمومی و خصوصی بررسی می‌کند.
این گزینه درستی یک کلید عمومی یا جزء عمومی از یک جفت‌کلید را بررسی می‌کند.

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

اگر کلید ورودی رمزگذاری شده باشد و -passin داده نشده باشد، عبارت عبور درخواست خواهد شد.

قالب ورودی کلید؛ به‌طور پیش‌فرض مشخص نشده است. برای جزئیات بیشتر به openssl-format-options(1) مراجعه کنید.
منبع گذرواژه برای ورودی کلید.

برای اطلاعات بیشتر درباره قالب arg به openssl-passphrase-options(1) مراجعه کنید.

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

فایل خروجی را برای ذخیره خروجی کدگذاری‌شده و/یا متنی کلید مشخص می‌کند، یا در صورت مشخص نشدن این گزینه از خروجی استاندارد استفاده می‌شود. نام فایل خروجی می‌تواند مشابه نام فایل ورودی باشد که منجر به جایگزینی محتوای فایل خواهد شد. توجه داشته باشید که عملیات ورودی/خروجی فایل اتمیک (اتمی) نیست؛ فایل خروجی ابتدا خالی (truncate) شده و سپس نوشته می‌شود.

اگر هر گزینه سایفری تنظیم شده باشد اما -passout داده نشده باشد، عبارت عبور درخواست خواهد شد. هنگامی که ورود گذرواژه قطع شود، فایل خروجی دست‌نخورده باقی می‌ماند.

قالب خروجی کلید؛ مقدار پیش‌فرض PEM است. برای جزئیات بیشتر به openssl-format-options(1) مراجعه کنید.
کلید خصوصی کدگذاری‌شده با PEM را با سایفر ارائه‌شده رمزگذاری می‌کند. هر نام الگوریتمی که توسط EVP_get_cipherbyname() پذیرفته شود قابل قبول است، مانند aes128. رمزگذاری برای خروجی DER پشتیبانی نمی‌شود.
منبع گذرواژه برای فایل خروجی.

برای اطلاعات بیشتر درباره قالب arg به openssl-passphrase-options(1) مراجعه کنید.

به‌طور معمول یک کلید خصوصی با استفاده از قالب استاندارد نوشته می‌شود: این قالب PKCS#8 همراه با الگوریتم رمزنگاری مناسب (در صورت وجود) است. اگر گزینه -traditional مشخص شود، در عوض از قالب قدیمی‌تر «سنتی» (traditional) استفاده می‌شود.
به‌طور پیش‌فرض کلید خصوصی و عمومی در خروجی نوشته می‌شوند؛ این گزینه خروجی را فقط به اجزای عمومی محدود می‌کند. اگر ورودی یک کلید عمومی باشد، این گزینه به‌طور خودکار تنظیم می‌شود.

هنگامی که با -text ترکیب شود، معادل -text_pub خواهد بود.

از نوشتن کلید در قالب کدگذاری‌شده در خروجی خودداری می‌کند.
اجزای مختلف کلید را به‌صورت متن ساده چاپ می‌کند (احتمالاً علاوه بر فرم کدگذاری‌شده PEM). این گزینه را نمی‌توان با خروجی کدگذاری‌شده در قالب DER ترکیب کرد.
تنها اجزای کلید عمومی را به‌صورت متنی در خروجی چاپ می‌کند (حتی برای کلیدهای خصوصی). این گزینه را نمی‌توان با خروجی کدگذاری‌شده در قالب DER ترکیب کرد.
این گزینه فقط برای کلیدهای مبتنی بر منحنی بیضوی (elliptic-curve) کاربرد دارد.

این گزینه نحوه تبدیل نقاط روی منحنی بیضوی به رشته‌های هشت‌بیتی (octet strings) را مشخص می‌کند. مقادیر ممکن عبارتند از: compressed (مقدار پیش‌فرض)، uncompressed و hybrid. برای اطلاعات بیشتر در مورد قالب‌های تبدیل نقطه، لطفاً استاندارد X9.62 را مطالعه کنید.

نکته: به دلیل مسائل مربوط به حق اختراع (پتنت)، گزینه compressed به‌طور پیش‌فرض برای منحنی‌های باینری غیرفعال است و می‌توان با تعریف ماکروی پیش‌پردازنده OPENSSL_EC_BIN_PT_COMP در زمان کامپایل، آن را فعال کرد.

این گزینه فقط برای کلیدهای عمومی و خصوصی مبتنی بر منحنی بیضوی کاربرد دارد.

این گزینه نحوه کدگذاری پارامترهای منحنی بیضوی را مشخص می‌کند. مقادیر ممکن عبارتند از: named_curve، یعنی پارامترهای ec توسط یک OID مشخص می‌شوند، یا explicit که در آن پارامترهای ec به‌طور صریح داده می‌شوند (برای تعریف ساختارهای پارامترهای EC به RFC 3279 مراجعه کنید). مقدار پیش‌فرض named_curve است.

نکته: گزینه جایگزین implicitlyCA، همان‌طور که در RFC 3279 مشخص شده است، در حال حاضر در OpenSSL پیاده‌سازی نشده است.

برای حذف عبارت عبور از یک کلید خصوصی:

openssl pkey -in key.pem -out keyout.pem

برای رمزگذاری یک کلید خصوصی با استفاده از Triple DES:

openssl pkey -in key.pem -des3 -out keyout.pem

برای تبدیل یک کلید خصوصی از قالب PEM به DER:

openssl pkey -in key.pem -outform DER -out keyout.der

برای چاپ اجزای یک کلید خصوصی در خروجی استاندارد:

openssl pkey -in key.pem -text -noout

برای چاپ اجزای عمومی یک کلید خصوصی در خروجی استاندارد:

openssl pkey -in key.pem -text_pub -noout

برای خروجی گرفتن صرفاً از بخش عمومی یک کلید خصوصی:

openssl pkey -in key.pem -pubout -out pubkey.pem

برای تغییر کدگذاری پارامترهای EC به explicit:

openssl pkey -in key.pem -ec_param_enc explicit -out keyout.pem

برای تغییر قالب تبدیل نقطه EC به compressed:

openssl pkey -in key.pem -ec_conv_form compressed -out keyout.pem

openssl(1), openssl-genpkey(1), openssl-rsa(1), openssl-pkcs8(1), openssl-dsa(1), openssl-genrsa(1), openssl-gendsa(1)

گزینه -engine در OpenSSL 3.0 منسوخ شد.

Copyright 2006-2023 The OpenSSL Project Authors. All Rights Reserved.

تحت مجوز آپاچی نسخه ۲.۰ (Apache License 2.0) منتشر شده است («مجوز»). شما نمی‌توانید از این فایل جز در انطباق با این مجوز استفاده کنید. می‌توانید نسخه‌ای از مجوز را در فایل LICENSE در توزیع منبع یا در https://www.openssl.org/source/license.html دریافت کنید.

2026-08-25 3.6.4