.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Required to disable full justification in groff 1.23.0. .if n .ds AD l .\" ======================================================================== .\" .IX Title "OPENSSL-PKCS8 1ssl" .TH OPENSSL-PKCS8 1ssl 2026-08-25 3.6.4 OpenSSL .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "نام (NAME)" openssl\-pkcs8 \- دستور تبدیل کلید خصوصی با قالب PKCS#8 .SH "خلاصه دستور (SYNOPSIS)" .IX Header "SYNOPSIS" \&\fBopenssl\fR \fBpkcs8\fR [\fB\-help\fR] [\fB\-topk8\fR] [\fB\-inform\fR \fBDER\fR|\fBPEM\fR] [\fB\-outform\fR \fBDER\fR|\fBPEM\fR] [\fB\-in\fR \fIfilename\fR] [\fB\-passin\fR \fIarg\fR] [\fB\-out\fR \fIfilename\fR] [\fB\-passout\fR \fIarg\fR] [\fB\-iter\fR \fIcount\fR] [\fB\-noiter\fR] [\fB\-nocrypt\fR] [\fB\-traditional\fR] [\fB\-v2\fR \fIalg\fR] [\fB\-v2prf\fR \fIalg\fR] [\fB\-v1\fR \fIalg\fR] [\fB\-scrypt\fR] [\fB\-scrypt_N\fR \fIN\fR] [\fB\-scrypt_r\fR \fIr\fR] [\fB\-scrypt_p\fR \fIp\fR] [\fB\-saltlen\fR \fIsize\fR] [\fB\-rand\fR \fIfiles\fR] [\fB\-writerand\fR \fIfile\fR] [\fB\-engine\fR \fIid\fR] [\fB\-provider\fR \fIname\fR] [\fB\-provider\-path\fR \fIpath\fR] [\fB\-provparam\fR \fI[name:]key=value\fR] [\fB\-propquery\fR \fIpropq\fR] .SH "توضیحات (DESCRIPTION)" .IX Header "DESCRIPTION" این دستور کلیدهای خصوصی در قالب PKCS#8 را پردازش می‌کند. این ابزار می‌تواند هم قالب رمزنگاری‌نشدهٔ PKCS#8 PrivateKeyInfo و هم قالب EncryptedPrivateKeyInfo را با انواع الگوریتم‌های PKCS#5 (نسخه‌های v1.5 و v2.0) و PKCS#12 مدیریت و پردازش کند. .SH "گزینه‌ها (OPTIONS)" .IX Header "OPTIONS" .IP \fB\-help\fR 4 .IX Item "-help" نمایش پیام راهنمای نحوهٔ استفاده. .IP \fB\-topk8\fR 4 .IX Item "-topk8" به‌طور معمول یک کلید خصوصی PKCS#8 در ورودی مورد انتظار است و یک کلید خصوصی در فایل خروجی نوشته خواهد شد. با گزینهٔ \fB\-topk8\fR وضعیت معکوس می‌شود: این گزینه یک کلید خصوصی را می‌خواند و کلیدی با قالب PKCS#8 می‌نویسد. .IP "\fB\-inform\fR \fBDER\fR|\fBPEM\fR, \fB\-outform\fR \fBDER\fR|\fBPEM\fR" 4 .IX Item "-inform DER|PEM, -outform DER|PEM" قالب‌های ورودی و خروجی؛ مقدار پیش‌فرض \fBPEM\fR است. برای جزئیات به \fBopenssl\-format\-options\fR\|(1) مراجعه کنید. .Sp اگر یک کلید از قالب PKCS#8 تبدیل می‌شود (یعنی از گزینهٔ \fB\-topk8\fR استفاده نشده باشد)، فایل ورودی باید در قالب PKCS#8 باشد. یک کلید رمزنگاری‌شده مورد انتظار است مگر اینکه گزینهٔ \fB\-nocrypt\fR گنجانده شده باشد. .Sp اگر \fB\-topk8\fR استفاده نشود و حالت \fBPEM\fR تنظیم شده باشد، فایل خروجی یک کلید خصوصی رمزنگاری‌نشده در قالب PKCS#8 خواهد بود. اگر گزینهٔ \fB\-traditional\fR استفاده شود، کلید خصوصی با قالب سنتی (traditional) به جای آن نوشته می‌شود. .Sp اگر \fB\-topk8\fR استفاده نشود و حالت \fBDER\fR تنظیم شده باشد، فایل خروجی یک کلید خصوصی رمزنگاری‌نشده در قالب سنتی DER خواهد بود. .Sp اگر \fB\-topk8\fR استفاده شود، هر کلید خصوصی پشتیبانی‌شده‌ای را می‌توان برای فایل ورودی در قالبی که با \fB\-inform\fR مشخص شده به کار برد. فایل خروجی کلیدی با قالب PKCS#8 و رمزنگاری‌شده با پارامترهای رمزنگاری مشخص‌شده خواهد بود، مگر اینکه \fB\-nocrypt\fR گنجانده شده باشد. .IP \fB\-traditional\fR 4 .IX Item "-traditional" هنگامی که این گزینه موجود باشد و از \fB\-topk8\fR استفاده نشده باشد، کلید خصوصی در قالب سنتی (traditional) نوشته می‌شود. .IP "\fB\-in\fR \fIfilename\fR" 4 .IX Item "-in filename" این گزینه فایل ورودی را برای خواندن کلید مشخص می‌کند؛ در صورت مشخص نشدن، از ورودی استاندارد استفاده می‌شود. اگر کلید رمزنگاری شده باشد، از شما عبارت عبور خواسته خواهد شد، مگر اینکه گزینهٔ \fB\-passin\fR ارائه شده باشد. .IP "\fB\-passin\fR \fIarg\fR, \fB\-passout\fR \fIarg\fR" 4 .IX Item "-passin arg, -passout arg" منبع گذرواژه برای فایل ورودی و خروجی. برای اطلاعات بیشتر دربارهٔ قالب \fBarg\fR به \fBopenssl\-passphrase\-options\fR\|(1) مراجعه کنید. .IP "\fB\-out\fR \fIfilename\fR" 4 .IX Item "-out filename" این گزینه فایل خروجی را برای نوشتن کلید مشخص می‌کند؛ در حالت پیش‌فرض در خروجی استاندارد نوشته می‌شود. نام فایل خروجی می‌تواند با نام فایل ورودی یکسان باشد که منجر به جایگزینی محتوای فایل می‌شود. توجه داشته باشید که ورودی/خروجی فایل‌ها اتمیک (atomic) نیست؛ فایل خروجی ابتدا کوتاه‌سازی (truncate) و سپس نوشته می‌شود. .Sp اگر هر یک از گزینه‌های رمزنگاری تنظیم شده باشند و \fB\-passout\fR مشخص نشده باشد، عبارت عبور درخواست خواهد شد. اگر ورودی گذرواژه متوقف شود، فایل خروجی دست‌نخورده باقی می‌ماند. .IP "\fB\-iter\fR \fIcount\fR" 4 .IX Item "-iter count" هنگام ایجاد محفظه‌های جدید PKCS#8، از تعداد تکرار معینی روی گذرواژه در اشتقاق کلید رمزنگاری برای خروجی PKCS#8 استفاده می‌کند. مقادیر بالا زمان لازم برای شکستن محفظهٔ PKCS#8 به روش جستجوی فراگیر (brute-force) را افزایش می‌دهد. .IP \fB\-noiter\fR 4 .IX Item "-noiter" هنگام ایجاد محفظه‌های جدید PKCS#8، مقدار ۱ را به عنوان تعداد تکرار استفاده می‌کند. .IP \fB\-nocrypt\fR 4 .IX Item "-nocrypt" کلیدهای PKCS#8 تولیدشده یا ورودی به‌طور معمول ساختارهای EncryptedPrivateKeyInfo در PKCS#8 هستند که از یک الگوریتم مناسب رمزنگاری مبتنی بر گذرواژه استفاده می‌کنند. با این گزینه یک ساختار رمزنگاری‌نشدهٔ PrivateKeyInfo مورد انتظار بوده یا خروجی داده می‌شود. این گزینه کلیدهای خصوصی را به هیچ وجه رمزنگاری نمی‌کند و فقط باید در صورت ضرورت مطلق استفاده شود. برخی نرم‌افزارها مانند برخی نسخه‌های نرم‌افزارهای امضای کد جاوا از کلیدهای خصوصی رمزنگاری‌نشده استفاده می‌کردند. .IP "\fB\-v2\fR \fIalg\fR" 4 .IX Item "-v2 alg" این گزینه الگوریتم PKCS#5 v2.0 را تعیین می‌کند. .Sp آرگومان \fIalg\fR الگوریتم رمزنگاری مورد استفاده است؛ مقادیر معتبر شامل \&\fBaes128\fR، \fBaes256\fR و \fBdes3\fR هستند. اگر این گزینه مشخص نشود، از \fBaes256\fR استفاده می‌شود. .IP "\fB\-v2prf\fR \fIalg\fR" 4 .IX Item "-v2prf alg" این گزینه الگوریتم PRF مورد استفاده با PKCS#5 v2.0 را تنظیم می‌کند. یک مقدار معتبر متداول \fBhmacWithSHA256\fR است. اگر این گزینه تنظیم نشود، مقدار پیش‌فرض مربوط به سایفر استفاده می‌شود یا در صورت نبود مقدار پیش‌فرض، \fBhmacWithSHA256\fR به کار می‌رود. .Sp برخی پیاده‌سازی‌ها ممکن است از الگوریتم‌های سفارشی PRF پشتیبانی نکنند و برای کارکرد به گزینهٔ \fBhmacWithSHA1\fR نیاز داشته باشند. .IP "\fB\-v1\fR \fIalg\fR" 4 .IX Item "-v1 alg" این گزینه نشان می‌دهد که باید از یک الگوریتم PKCS#5 v1.5 یا PKCS#12 استفاده شود. برخی پیاده‌سازی‌های قدیمی‌تر ممکن است از PKCS#5 v2.0 پشتیبانی نکنند و به این گزینه نیاز داشته باشند. در صورت مشخص نشدن، قالب PKCS#5 v2.0 استفاده می‌شود. .IP \fB\-scrypt\fR 4 .IX Item "-scrypt" از الگوریتم \fBscrypt\fR برای رمزنگاری کلید خصوصی با پارامترهای پیش‌فرض استفاده می‌کند: در حال حاضر N=16384، r=8 و p=1 و AES در حالت CBC با کلید ۲۵۶ بیتی. این پارامترها را می‌توان با گزینه‌های \fB\-scrypt_N\fR، \fB\-scrypt_r\fR، \&\fB\-scrypt_p\fR و \fB\-v2\fR تغییر داد. .IP "\fB\-scrypt_N\fR \fIN\fR, \fB\-scrypt_r\fR \fIr\fR, \fB\-scrypt_p\fR \fIp\fR" 4 .IX Item "-scrypt_N N, -scrypt_r r, -scrypt_p p" پارامترهای \fIN\fR، \fIr\fR یا \fIp\fR را برای scrypt تنظیم می‌کند. .IP \fB\-saltlen\fR 4 .IX Item "-saltlen" طول نمک (salt به بایت) را برای استفاده در الگوریتم PBE مشخص می‌کند. اگر این مقدار مشخص نشود، پیش‌فرض برای PBES2 مقدار ۱۶ (۱۲۸ بیت) و برای PBES1 مقدار ۸ (۶۴ بیت) است. .IP "\fB\-rand\fR \fIfiles\fR, \fB\-writerand\fR \fIfile\fR" 4 .IX Item "-rand files, -writerand file" برای جزئیات بیشتر به بخش «گزینه‌های وضعیت تصادفی (Random State Options)» در \fBopenssl\fR\|(1) مراجعه کنید. .IP "\fB\-engine\fR \fIid\fR" 4 .IX Item "-engine id" بخش «گزینه‌های موتور (Engine Options)» را در \fBopenssl\fR\|(1) ببینید. این گزینه منسوخ شده است. .IP "\fB\-provider\fR \fIname\fR" 4 .IX Item "-provider name" .PD 0 .IP "\fB\-provider\-path\fR \fIpath\fR" 4 .IX Item "-provider-path path" .IP "\fB\-provparam\fR \fI[name:]key=value\fR" 4 .IX Item "-provparam [name:]key=value" .IP "\fB\-propquery\fR \fIpropq\fR" 4 .IX Item "-propquery propq" .PD بخش «گزینه‌های ارائه‌دهنده (Provider Options)» را در \fBopenssl\fR\|(1)، \fBprovider\fR\|(7) و \fBproperty\fR\|(7) ببینید. .SH "نکات (NOTES)" .IX Header "NOTES" به‌طور پیش‌فرض هنگام تبدیل یک کلید به قالب PKCS#8، از PKCS#5 v2.0 با استفاده از AES ۲۵۶ بیتی همراه با HMAC و SHA256 استفاده می‌شود. .PP برخی پیاده‌سازی‌های قدیمی‌تر از قالب PKCS#5 v2.0 پشتیبانی نمی‌کنند و در عوض به شکل قدیمی‌تر PKCS#5 v1.5 نیاز دارند، و احتمالاً به الگوریتم‌های رمزنگاری ضعیف و ناامن مانند DES ۵۶ بیتی نیز نیاز خواهند داشت. .PP کلیدهای خصوصی رمزنگاری‌شده با الگوریتم‌های PKCS#5 v2.0 و تعداد تکرارهای بالا، بسیار امن‌تر از کلیدهای رمزنگاری‌شده با قالب‌های سنتی سازگار با SSLeay هستند. بنابراین اگر امنیت بیشتر مد نظر باشد، کلیدها باید تبدیل شوند. .PP امکان نوشتن کلیدهای خصوصی رمزنگاری‌شده با کدگذاری DER در قالب PKCS#8 وجود دارد؛ زیرا جزئیات رمزنگاری در سطح ASN1 گنجانده شده‌اند، در حالی که قالب سنتی آن‌ها را در سطح PEM شامل می‌شود. .SH "الگوریتم‌های PKCS#5 V1.5 و PKCS#12 (PKCS#5 V1.5 AND PKCS#12 ALGORITHMS)" .IX Header "PKCS#5 V1.5 AND PKCS#12 ALGORITHMS" الگوریتم‌های مختلفی را می‌توان با گزینهٔ خط فرمان \fB\-v1\fR استفاده کرد، از جمله PKCS#5 v1.5 و PKCS#12. این موارد در ادامه با جزئیات بیشتر توضیح داده شده‌اند. .IP "\fBPBE\-MD2\-DES PBE\-MD5\-DES\fR" 4 .IX Item "PBE-MD2-DES PBE-MD5-DES" این الگوریتم‌ها در مشخصات اولیهٔ PKCS#5 v1.5 گنجانده شده بودند. از آنجا که هر دو از DES استفاده می‌کنند، تنها ۵۶ بیت حفاظت فراهم می‌نمایند. .IP "\fBPBE\-SHA1\-RC2\-64\fR, \fBPBE\-MD2\-RC2\-64\fR, \fBPBE\-MD5\-RC2\-64\fR, \fBPBE\-SHA1\-DES\fR" 4 .IX Item "PBE-SHA1-RC2-64, PBE-MD2-RC2-64, PBE-MD5-RC2-64, PBE-SHA1-DES" این الگوریتم‌ها در مشخصات اصلی PKCS#5 v1.5 ذکر نشده‌اند، اما از همان الگوریتم اشتقاق کلید استفاده می‌کنند و توسط برخی نرم‌افزارها پشتیبانی می‌شوند. آن‌ها در PKCS#5 v2.0 ذکر شده‌اند و از RC2 ۶۴ بیتی یا DES ۵۶ بیتی استفاده می‌کنند. .IP "\fBPBE\-SHA1\-RC4\-128\fR, \fBPBE\-SHA1\-RC4\-40\fR, \fBPBE\-SHA1\-3DES\fR, \fBPBE\-SHA1\-2DES\fR, \fBPBE\-SHA1\-RC2\-128\fR, \fBPBE\-SHA1\-RC2\-40\fR" 4 .IX Item "PBE-SHA1-RC4-128, PBE-SHA1-RC4-40, PBE-SHA1-3DES, PBE-SHA1-2DES, PBE-SHA1-RC2-128, PBE-SHA1-RC2-40" این الگوریتم‌ها از الگوریتم رمزنگاری مبتنی بر گذرواژهٔ PKCS#12 استفاده می‌کنند و اجازه می‌دهند از الگوریتم‌های رمزنگاری قوی مانند triple DES یا RC2 ۱۲۸ بیتی استفاده شود. .SH "مثال‌ها (EXAMPLES)" .IX Header "EXAMPLES" تبدیل یک کلید خصوصی به قالب PKCS#8 با استفاده از پارامترهای پیش‌فرض (AES با کلید ۲۵۶ بیتی و \fBhmacWithSHA256\fR): .PP .Vb 1 \& openssl pkcs8 \-in key.pem \-topk8 \-out enckey.pem .Ve .PP تبدیل یک کلید خصوصی به قالب رمزنگاری‌نشدهٔ PKCS#8: .PP .Vb 1 \& openssl pkcs8 \-in key.pem \-topk8 \-nocrypt \-out enckey.pem .Ve .PP تبدیل یک کلید خصوصی به قالب PKCS#5 v2.0 با استفاده از triple DES: .PP .Vb 1 \& openssl pkcs8 \-in key.pem \-topk8 \-v2 des3 \-out enckey.pem .Ve .PP تبدیل یک کلید خصوصی به قالب PKCS#5 v2.0 با استفاده از AES با ۲۵۶ بیت در حالت CBC و PRF از نوع \fBhmacWithSHA512\fR: .PP .Vb 1 \& openssl pkcs8 \-in key.pem \-topk8 \-v2 aes\-256\-cbc \-v2prf hmacWithSHA512 \-out enckey.pem .Ve .PP تبدیل یک کلید خصوصی به PKCS#8 با استفاده از یک الگوریتم سازگار با PKCS#5 1.5 (الگوریتم DES): .PP .Vb 1 \& openssl pkcs8 \-in key.pem \-topk8 \-v1 PBE\-MD5\-DES \-out enckey.pem .Ve .PP تبدیل یک کلید خصوصی به PKCS#8 با استفاده از یک الگوریتم سازگار با PKCS#12 (الگوریتم 3DES): .PP .Vb 1 \& openssl pkcs8 \-in key.pem \-topk8 \-out enckey.pem \-v1 PBE\-SHA1\-3DES .Ve .PP خواندن یک کلید خصوصی با قالب DER و رمزنگاری‌نشدهٔ PKCS#8: .PP .Vb 1 \& openssl pkcs8 \-inform DER \-nocrypt \-in key.der \-out key.pem .Ve .PP تبدیل یک کلید خصوصی از هر قالب رمزنگاری‌شدهٔ PKCS#8 به قالب سنتی (traditional): .PP .Vb 1 \& openssl pkcs8 \-in pk8.pem \-traditional \-out key.pem .Ve .PP تبدیل یک کلید خصوصی به قالب PKCS#8، با رمزنگاری AES\-256 و با یک میلیون تکرار گذرواژه: .PP .Vb 1 \& openssl pkcs8 \-in key.pem \-topk8 \-v2 aes\-256\-cbc \-iter 1000000 \-out pk8.pem .Ve .SH "استانداردها (STANDARDS)" .IX Header "STANDARDS" بردارهای آزمون (Test vectors) این پیاده‌سازی PKCS#5 v2.0 با استفاده از triple DES، DES و RC2 با تعداد تکرارهای بالا به لیست پستی pkcs\-tng ارسال شدند؛ چندین نفر تأیید کردند که توانسته‌اند کلیدهای خصوصی تولیدشده را رمزگشایی کنند و بنابراین می‌توان فرض کرد که این پیاده‌سازی PKCS#5 v2.0 حداقل تا جایی که به این الگوریتم‌ها مربوط می‌شود تا حد معقولی دقیق است. .PP قالب کلیدهای خصوصی PKCS#8 برای DSA (و موارد دیگر) به خوبی مستند نشده است: این موضوع در PKCS#11 v2.01، بخش 11.9 پنهان مانده است. قالب پیش‌فرض کلید خصوصی PKCS#8 برای DSA در OpenSSL با این استاندارد مطابقت دارد. .SH "اشکالات (BUGS)" .IX Header "BUGS" باید گزینه‌ای وجود داشته باشد که الگوریتم رمزنگاری در حال استفاده و سایر جزئیات مانند تعداد تکرار را چاپ کند. .SH "همچنین ببینید (SEE ALSO)" .IX Header "SEE ALSO" \&\fBopenssl\fR\|(1)، \&\fBopenssl\-dsa\fR\|(1)، \&\fBopenssl\-rsa\fR\|(1)، \&\fBopenssl\-genrsa\fR\|(1)، \&\fBopenssl\-gendsa\fR\|(1) .SH "تاریخچه (HISTORY)" .IX Header "HISTORY" گزینهٔ \fB\-iter\fR در OpenSSL 1.1.0 اضافه شد. .PP گزینهٔ \fB\-engine\fR در OpenSSL 3.0 منسوخ شد. .SH "حق نشر (COPYRIGHT)" .IX Header "COPYRIGHT" Copyright 2000\-2026 The OpenSSL Project Authors. All Rights Reserved. .PP تحت مجوز آپاچی نسخه ۲.۰ (Apache License 2.0) منتشر شده است («مجوز»). شما نمی‌توانید از این فایل جز در انطباق با این مجوز استفاده کنید. می‌توانید نسخه‌ای از مجوز را در فایل LICENSE در توزیع منبع یا در دریافت کنید.