OPENSSL-GENPKEY(1ssl) OpenSSL OPENSSL-GENPKEY(1ssl)

openssl-genpkey - تولید یک کلید خصوصی یا جفت‌کلید

openssl genpkey [-help] [-out filename] [-outpubkey filename] [-outform DER|PEM] [-verbose] [-quiet] [-pass arg] [-cipher] [-paramfile file] [-algorithm alg] [-pkeyopt opt:value] [-genparam] [-text] [-rand files] [-writerand file] [-engine id]

[-provider name] [-provider-path path] [-provparam [name:]key=value] [-propquery propq] [-config configfile]

این دستور یک کلید خصوصی یا جفت‌کلید تولید می‌کند.

چاپ پیام راهنمای نحوه استفاده از دستور.
خروجی دادن کلید خصوصی به فایل مشخص‌شده. اگر این آرگومان مشخص نشود، از خروجی استاندارد استفاده می‌شود.
خروجی دادن کلید عمومی به فایل مشخص‌شده. اگر این آرگومان مشخص نشود، کلید عمومی در خروجی نوشته نمی‌شود.
قالب خروجی، به جز زمانی که -genparam داده شده باشد؛ مقدار پیش‌فرض PEM است. برای جزئیات بیشتر به openssl-format-options(1) مراجعه کنید.

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

چاپ نقطه‌های وضعیت («status dots») در حین تولید کلیدها.
عدم چاپ نقطه‌های وضعیت در حین تولید کلیدها.
منبع عبارت عبور فایل خروجی. برای کسب اطلاعات بیشتر پیرامون قالب arg به openssl-passphrase-options(1) مراجعه فرمایید.
رمزگذاری کلید خصوصی با استفاده از الگوریتم مشخص‌شده. این الگوریتم می‌تواند با استفاده از نامی که توسط تابع EVP_get_cipherbyname() پذیرفته می‌شود، مشخص گردد. برای مثال، از ساختار -aes-128-cbc برای تعیین الگوریتم رمزگذاری AES با کلید ۱۲۸ بیتی در حالت CBC استفاده کنید.
الگوریتم کلید عمومی مورد استفاده مانند RSA، DSA، DH یا DHX. در صورت استفاده، این گزینه باید پیش از هر گزینه -pkeyopt قرار گیرد. گزینه‌های -paramfile و -algorithm مانعة‌الجمع (ناسازگار با یکدیگر) هستند. موتورها (engines) یا ارائه‌دهندگان (providers) ممکن است الگوریتم‌هایی را علاوه بر الگوریتم‌های استاندارد توکار اضافه کنند.

نام‌های معتبر الگوریتم‌های توکار برای تولید کلید خصوصی عبارتند از RSA، RSA-PSS، EC، X25519، X448، ED25519، ED448، ML-DSA و ML-KEM.

نام‌های معتبر الگوریتم‌های توکار برای تولید پارامتر (گزینه -genparam را ببینید) عبارتند از DH، DSA و EC.

توجه داشته باشید که نام الگوریتم X9.42 DH ممکن است به عنوان مترادفی برای کلیدهای DHX به کار رود و PKCS#3 به کلیدهای DH اشاره دارد. برخی گزینه‌ها بین کلیدهای DH و DHX مشترک نیستند.

تنظیم گزینه الگوریتم کلید عمومی opt روی مقدار value. مجموعه دقیق گزینه‌های پشتیبانی‌شده به الگوریتم کلید عمومی استفاده‌شده و پیاده‌سازی آن بستگی دارد. برای جزئیات بیشتر به بخش‌های "KEY GENERATION OPTIONS" و "PARAMETER GENERATION OPTIONS" در زیر مراجعه کنید.

برای فهرست کردن مقادیر ممکن opt برای یک الگوریتم از این دستور استفاده کنید:

openssl genpkey -algorithm XXX -help

تولید مجموعه‌ای از پارامترها به جای کلید خصوصی. در صورت استفاده، این گزینه باید پیش از هر کدام از گزینه‌های -algorithm، -paramfile یا -pkeyopt قرار گیرد.
برخی از الگوریتم‌های کلید عمومی یک کلید خصوصی را بر پایه مجموعه‌ای از پارامترها تولید می‌کنند. این پارامترها را می‌توان با استفاده از این گزینه فراهم کرد. در صورت استفاده از این گزینه، الگوریتم کلید عمومی بر اساس پارامترها تعیین می‌شود. در صورت استفاده، این گزینه باید پیش از هر گزینه -pkeyopt قرار گیرد. گزینه‌های -paramfile و -algorithm مانعة‌الجمع (ناسازگار با یکدیگر) هستند.
چاپ نمایش متنی (رمزگذاری‌نشده) از کلیدهای خصوصی و عمومی و پارامترها به همراه ساختار PEM یا DER.
بخش "Random State Options" را در openssl(1) برای جزئیات بیشتر ببینید.
بخش "Engine Options" را در openssl(1) ببینید. این گزینه منسوخ شده است.
بخش "Provider Options" را در openssl(1)، provider(7) و property(7) ببینید.
بخش "Configuration Option" را در openssl(1) ببینید.

گزینه‌های پشتیبانی‌شده توسط هر الگوریتم و در واقع هر پیاده‌سازی از یک الگوریتم می‌تواند متفاوت باشد. گزینه‌های مربوط به پیاده‌سازی‌های OpenSSL در ادامه به تفصیل آمده است. هیچ گزینه تولید کلیدی برای الگوریتم‌های X25519، X448، ED25519 یا ED448 تعریف نشده است.

تعداد بیت‌ها در کلید تولیدشده. اگر مشخص نشود، از 2048 استفاده می‌شود.
تعداد اعداد اول در کلید تولیدشده. اگر مشخص نشود، از 2 استفاده می‌شود.
مقدار توان عمومی RSA. این مقدار می‌تواند یک عدد ده‌دهی یا هگزادسیمال بزرگ باشد اگر پیش از آن "0x" آمده باشد. مقدار پیش‌فرض 65537 است.

نکته: به طور پیش‌فرض یک کلید RSA-PSS هیچ محدودیتی در پارامترها ندارد.

این گزینه‌ها معنایی مشابه الگوریتم RSA دارند.
در صورت تنظیم، کلید محدود شده و فقط می‌تواند از digest برای امضا استفاده کند.
در صورت تنظیم، کلید محدود شده و فقط می‌تواند از digest به عنوان پارامتر MGF1 خود استفاده کند.
در صورت تنظیم، کلید محدود شده و len حداقل طول نمک (salt) را مشخص می‌کند.

گزینه‌های تولید کلید EC را می‌توان برای تولید پارامتر نیز به کار برد.

منحنی EC مورد استفاده. نرم‌افزار OpenSSL از نام‌های منحنی NIST مانند "P-256" پشتیبانی می‌کند.
کدگذاری مورد استفاده برای پارامترها. پارامتر encoding باید named_curve یا explicit باشد. مقدار پیش‌فرض named_curve است.

این گزینه بذر (seed) اختیاری ML-DSA را در قالب هگزادسیمال مشخص می‌کند. این بذر ۳۲ بایت است که ۶۴ رقم هگزادسیمال ارائه می‌دهد. هنگامی که کلید از یک بذر صریح تولید می‌شود، کلید کاملاً با مقدار بذر تعیین می‌گردد. اگر سایر کاربران بتوانند آرگومان‌های خط فرمان فرآیند در حال اجرا را مشاهده کنند، این گزینه ممکن است امنیت کلید محرمانه را به خطر بیندازد، بنابراین به غیر از آزمایش‌ها، بهتر است از آن پرهیز شود.

برای جزئیات بیشتر EVP_PKEY-ML-DSA(7) را ببینید.

این گزینه بذر (seed) اختیاری ML-KEM را در قالب هگزادسیمال مشخص می‌کند. این بذر ۶۴ بایت است که ۱۲۸ رقم هگزادسیمال ارائه می‌دهد. هنگامی که کلید از یک بذر صریح تولید می‌شود، کلید کاملاً با مقدار بذر تعیین می‌گردد. اگر سایر کاربران بتوانند آرگومان‌های خط فرمان فرآیند در حال اجرا را مشاهده کنند، این گزینه ممکن است امنیت کلید محرمانه را به خطر بیندازد، بنابراین به غیر از آزمایش‌ها، بهتر است از آن پرهیز شود.

برای جزئیات بیشتر EVP_PKEY-ML-KEM(7) را ببینید.

اگر در اینجا از یک گروه نام‌گذاری‌شده استفاده شود، گزینه paramfile لازم نیست. بخش "DH Parameter Generation Options" را در زیر ببینید.

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

تعداد بیت‌ها در عدد اول تولیدشده. اگر مشخص نشود، از 2048 استفاده می‌شود.
تعداد بیت‌ها در پارامتر q. باید یکی از ۱۶۰، ۲۲۴ یا ۲۵۶ باشد. اگر مشخص نشود، از 224 استفاده می‌شود.
خلاصه پیام مورد استفاده در حین تولید پارامتر. باید یکی از sha1، sha224 یا sha256 باشد. در صورت تنظیم، تعداد بیت‌ها در q با اندازه خروجی خلاصه مشخص‌شده مطابقت خواهد داشت و پارامتر dsa_paramgen_q_bits نادیده گرفته خواهد شد. اگر تنظیم نشود، خلاصه‌ای به کار می‌رود که خروجی آن با تعداد بیت‌های q مطابقت داشته باشد، یعنی sha1 اگر طول q برابر ۱۶۰ باشد، sha224 اگر ۲۲۴ باشد یا sha256 اگر ۲۵۶ باشد.
رشته پرس‌وجوی ویژگی (property query) برای digest که هنگام دریافت خلاصه از یک ارائه‌دهنده به کار می‌رود.
نوع تولید مورد استفاده. این مقدار را روی 1 تنظیم کنید تا از تولید پارامتر قدیمی FIPS186-2 استفاده شود. مقدار پیش‌فرض 0 از تولید پارامتر FIPS186-4 استفاده می‌کند.
شاخص مورد استفاده برای تولید و اعتبارسنجی متعارف مولد g. برای استفاده از این حالت، این مقدار را روی عددی مثبت بین 0 تا 255 تنظیم کنید. مقادیر بزرگ‌تر فقط از بایت پایینی استفاده خواهند کرد. این index سپس باید در طول اعتبارسنجی کلید برای تأیید مقدار g مجدداً به کار رود. اگر این مقدار تنظیم نشود، g قابل تأیید نیست. مقدار پیش‌فرض -1 است.
داده بذر seed که به جای تولید یک بذر تصادفی درونی استفاده می‌شود. این گزینه فقط باید برای اهداف آزمایشی به کار رود. این گزینه یا مقادیر ثابتی برای پارامترهای تولیدشده ایجاد می‌کند یا اگر بذر اعداد اول معتبری ایجاد نکند، با خطا مواجه خواهد شد.

برای بیشتر موارد کاربرد، توصیه می‌شود به جای گزینه‌های type از گزینه group استفاده شود. توجه داشته باشید که اگر هیچ گزینه تولید پارامتری مشخص نشده باشد، گزینه group به صورت پیش‌فرض استفاده نمی‌شود.

استفاده از یک گروه نام‌گذاری‌شده DH برای انتخاب مقادیر ثابت برای پارامترهای DH. اگر این مقدار تنظیم شود، تمام گزینه‌های دیگر نادیده گرفته خواهند شد.

مقادیر معتبری که به algorithm با مقدار "DH" مرتبط هستند عبارتند از: "ffdhe2048"، "ffdhe3072"، "ffdhe4096"، "ffdhe6144"، "ffdhe8192"، "modp_1536"، "modp_2048"، "modp_3072"، "modp_4096"، "modp_6144"، "modp_8192".

مقادیر معتبری که به algorithm با مقدار "DHX" مرتبط هستند، نام‌های RFC5114 شامل موارد زیر می‌باشند: "dh_1024_160"، "dh_2048_224"، "dh_2048_256".

اگر این گزینه تنظیم شود، به جای تولید پارامترهای جدید، از پارامترهای مناسب RFC5114 استفاده می‌شود. مقدار num می‌تواند یکی از 1، 2 یا 3 باشد که معادل استفاده از گزینه group با یکی از مقادیر "dh_1024_160"، "dh_2048_224" یا "dh_2048_256" است. اگر این مقدار تنظیم شود، تمام گزینه‌های دیگر نادیده گرفته خواهند شد.
تعداد بیت‌ها در پارامتر عدد اول p. مقدار پیش‌فرض 2048 است.
تعداد بیت‌ها در پارامتر زیرگروه اول q. مقدار پیش‌فرض 224 است. تنها در صورتی کاربرد دارد که همراه با گزینه dh_paramgen_type برای تولید پارامترهای DHX استفاده شود.
مقدار مورد استفاده برای مولد g. مقدار پیش‌فرض 2 است. گزینه algorithm باید برای استفاده از این پارامتر برابر "DH" باشد.
نام نوع پارامترهای DH جهت تولید. مقادیر معتبر عبارتند از:
"generator"
استفاده از یک مولد عدد اول امن با گزینه safeprime_generator. گزینه algorithm باید "DH" باشد.
"fips186_4"
تولید پارامتر FIPS186-4. گزینه algorithm باید "DHX" باشد.
"fips186_2"
تولید پارامتر FIPS186-2. گزینه algorithm باید "DHX" باشد.
"group"
می‌تواند همراه با گزینه pbits برای انتخاب یکی از گروه‌های "ffdhe2048"، "ffdhe3072"، "ffdhe4096"، "ffdhe6144" یا "ffdhe8192" استفاده شود. گزینه algorithm باید "DH" باشد.
"default"
یک نوع پیش‌فرض را بر پایه algorithm انتخاب می‌کند. این مقدار توسط ارائه‌دهنده پیش‌فرض OpenSSL جهت سازگاری رو به عقب برای تعیین نوع به کار می‌رود. اگر algorithm برابر "DH" باشد، "generator" استفاده می‌شود. اگر algorithm برابر "DHX" باشد، "fips186_2" استفاده می‌شود.
نوع پارامترهای DH برای تولید. مقادیر معتبر 0، 1، 2 یا 3 هستند که به ترتیب با تنظیم گزینه type روی "generator"، "fips186_2"، "fips186_4" یا "group" مطابقت دارند.
خلاصه پیام مورد استفاده در حین تولید پارامتر. باید یکی از sha1، sha224 یا sha256 باشد. در صورت تنظیم، تعداد بیت‌ها در qbits با اندازه خروجی خلاصه مشخص‌شده مطابقت خواهد داشت و پارامتر qbits نادیده گرفته خواهد شد. اگر تنظیم نشود، خلاصه‌ای استفاده خواهد شد که خروجی آن با تعداد بیت‌های q مطابقت داشته باشد، یعنی sha1 اگر طول q برابر ۱۶۰ باشد، sha224 اگر ۲۲۴ باشد یا sha256 اگر ۲۵۶ باشد. این گزینه فقط در تولید کلید "fips186_4" و "fips186_2" استفاده می‌شود.
رشته پرس‌وجوی ویژگی برای digest که هنگام دریافت خلاصه از یک ارائه‌دهنده استفاده می‌شود. این گزینه فقط در تولید کلید "fips186_4" و "fips186_2" استفاده می‌شود.
شاخص مورد استفاده برای تولید و اعتبارسنجی متعارف مولد g. برای استفاده از این حالت، این مقدار را روی عددی مثبت بین 0 تا 255 تنظیم کنید. مقادیر بزرگ‌تر فقط از بایت پایینی استفاده خواهند کرد. این index سپس باید در طول اعتبارسنجی کلید برای تأیید مقدار g مجدداً به کار رود. اگر این مقدار تنظیم نشود، g قابل تأیید نیست. مقدار پیش‌فرض -1 است. این گزینه فقط در تولید کلید "fips186_4" و "fips186_2" استفاده می‌شود.
داده بذر seed که به جای تولید یک بذر تصادفی درونی استفاده می‌شود. این گزینه فقط باید برای اهداف آزمایشی استفاده شود. این گزینه یا مقادیر ثابتی برای پارامترهای تولیدشده ایجاد می‌کند یا اگر بذر اعداد اول معتبری ایجاد نکند، با خطا مواجه خواهد شد. این گزینه فقط در تولید کلید "fips186_4" و "fips186_2" استفاده می‌شود.

گزینه‌های تولید پارامتر EC همانند گزینه‌های تولید کلید هستند. بخش "EC Key Generation Options" را در بالا ببینید.

استفاده از برنامه genpkey بر ابزارهای ویژه هر الگوریتم ارجحیت دارد، زیرا می‌توان از گزینه‌های اضافی الگوریتم و الگوریتم‌های ارائه‌شده توسط ENGINE استفاده نمود.

تولید یک کلید خصوصی RSA با استفاده از پارامترهای پیش‌فرض:

openssl genpkey -algorithm RSA -out key.pem

رمزگذاری کلید خصوصی خروجی با استفاده از الگوریتم AES با طول ۱۲۸ بیت و عبارت عبور "hello":

openssl genpkey -algorithm RSA -out key.pem -aes-128-cbc -pass pass:hello

تولید یک کلید RSA به طول ۲۰۴۸ بیت با استفاده از ۳ به عنوان توان عمومی:

openssl genpkey -algorithm RSA -out key.pem \
    -pkeyopt rsa_keygen_bits:2048 -pkeyopt rsa_keygen_pubexp:3

تولید پارامترهای ۲۰۴۸ بیتی DSA که قابل اعتبارسنجی باشند: (مقادیر خروجی gindex و seed برای اعتبارسنجی کلید لازم بوده و در فایل pem خروجی ذخیره نمی‌شوند).

openssl genpkey -genparam -algorithm DSA -out dsap.pem -pkeyopt pbits:2048 \
    -pkeyopt qbits:224 -pkeyopt digest:SHA256 -pkeyopt gindex:1 -text

تولید کلید DSA از روی پارامترها:

openssl genpkey -paramfile dsap.pem -out dsakey.pem

تولید کلید DH به طول ۴۰۹۶ بیت با استفاده از گروه اعداد اول امن ffdhe4096:

openssl genpkey -algorithm DH -out dhkey.pem -pkeyopt group:ffdhe4096

تولید کلید ۲۰۴۸ بیتی X9.42 DH با زیرگروه ۲۵۶ بیتی با استفاده از RFC5114 group3:

openssl genpkey -algorithm DHX -out dhkey.pem -pkeyopt dh_rfc5114:3

تولید یک کلید DH با استفاده از یک فایل پارامترهای DH:

openssl genpkey -paramfile dhp.pem -out dhkey.pem

خروجی پارامترهای DH برای گروه اعداد اول امن ffdhe2048:

openssl genpkey -genparam -algorithm DH -out dhp.pem -pkeyopt group:ffdhe2048

خروجی پارامترهای ۲۰۴۸ بیتی X9.42 DH با زیرگروه ۲۲۴ بیتی با استفاده از RFC5114 group2:

openssl genpkey -genparam -algorithm DHX -out dhp.pem -pkeyopt dh_rfc5114:2

خروجی پارامترهای ۲۰۴۸ بیتی X9.42 DH با زیرگروه ۲۲۴ بیتی با استفاده از تولید کلید FIP186-4:

openssl genpkey -genparam -algorithm DHX -out dhp.pem -text \
    -pkeyopt pbits:2048 -pkeyopt qbits:224 -pkeyopt digest:SHA256 \
    -pkeyopt gindex:1 -pkeyopt dh_paramgen_type:2

خروجی پارامترهای ۱۰۲۴ بیتی X9.42 DH با زیرگروه ۱۶۰ بیتی با استفاده از تولید کلید FIP186-2:

openssl genpkey -genparam -algorithm DHX -out dhp.pem -text \
    -pkeyopt pbits:1024 -pkeyopt qbits:160 -pkeyopt digest:SHA1 \
    -pkeyopt gindex:1 -pkeyopt dh_paramgen_type:1

خروجی پارامترهای ۲۰۴۸ بیتی DH:

openssl genpkey -genparam -algorithm DH -out dhp.pem \
    -pkeyopt dh_paramgen_prime_len:2048

خروجی پارامترهای ۲۰۴۸ بیتی DH با استفاده از یک مولد:

openssl genpkey -genparam -algorithm DH -out dhpx.pem \
    -pkeyopt dh_paramgen_prime_len:2048 \
    -pkeyopt dh_paramgen_type:1

تولید پارامترهای EC:

openssl genpkey -genparam -algorithm EC -out ecp.pem \
       -pkeyopt ec_paramgen_curve:secp384r1 \
       -pkeyopt ec_param_enc:named_curve

تولید کلید EC از روی پارامترها:

openssl genpkey -paramfile ecp.pem -out eckey.pem

تولید مستقیم کلید EC:

openssl genpkey -algorithm EC -out eckey.pem \
       -pkeyopt ec_paramgen_curve:P-384 \
       -pkeyopt ec_param_enc:named_curve

تولید یک کلید خصوصی X25519:

openssl genpkey -algorithm X25519 -out xkey.pem

تولید یک کلید خصوصی ED448:

openssl genpkey -algorithm ED448 -out xkey.pem

تولید یک کلید خصوصی ML-DSA-65:

openssl genpkey -algorithm ML-DSA-65 -out ml-dsa-key.pem

تولید یک کلید خصوصی ML-KEM-768:

openssl genpkey -algorithm ML-KEM-768 -out ml-kem-key.pem

openssl(1), openssl-pkey(1), openssl-rsa(1), openssl-dsa(1), openssl-genrsa(1), openssl-gendsa(1)

امکان استفاده از نام‌های منحنی NIST و تولید مستقیم یک کلید EC در OpenSSL 1.0.2 اضافه شدند. امکان تولید کلیدهای X25519 در OpenSSL 1.1.0 اضافه شد. امکان تولید کلیدهای X448، ED25519 و ED448 در OpenSSL 1.1.1 افزوده شد.

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

پشتیبانی از ML-DSA و ML-KEM در OpenSSL 3.5 اضافه شد.

Copyright 2006-2025 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