OPENSSL-PKCS12(1ssl) OpenSSL OPENSSL-PKCS12(1ssl)

openssl-pkcs12 - ابزار مدیریت فایل‌های PKCS#12

openssl pkcs12 [-help] [-passin arg] [-passout arg] [-password arg] [-twopass] [-in filename|uri] [-out filename] [-nokeys] [-nocerts] [-noout] [-legacy] [-engine id] [-provider name] [-provider-path path] [-provparam [name:]key=value] [-propquery propq] [-rand files] [-writerand file]

گزینه‌های ورودی (تجزیه) PKCS#12: [-info] [-nomacver] [-clcerts] [-cacerts]

[-aes128] [-aes192] [-aes256] [-aria128] [-aria192] [-aria256] [-camellia128] [-camellia192] [-camellia256] [-des] [-des3] [-idea] [-noenc] [-nodes]

گزینه‌های خروجی (صدور) PKCS#12:

[-export] [-inkey filename|uri] [-certfile filename] [-passcerts arg] [-chain] [-untrusted filename] [-CAfile file] [-no-CAfile] [-CApath dir] [-no-CApath] [-CAstore uri] [-no-CAstore] [-name name] [-caname name] [-CSP name] [-LMK] [-keyex] [-keysig] [-keypbe cipher] [-certpbe cipher] [-descert] [-macalg digest] [-pbmac1_pbkdf2] [-pbmac1_pbkdf2_md digest] [-iter count] [-noiter] [-nomaciter] [-maciter] [-macsaltlen] [-nomac] [-jdktrust usage]

این دستور امکان ایجاد و تجزیه فایل‌های PKCS#12 (که گاهی فایل‌های PFX نیز نامیده می‌شوند) را فراهم می‌کند. فایل‌های PKCS#12 توسط چندین برنامه از جمله Netscape، MSIE و MS Outlook استفاده می‌شوند.

گزینه‌های متعددی وجود دارد که معنای برخی از آن‌ها به این بستگی دارد که یک فایل PKCS#12 در حال ایجاد است یا تجزیه. به طور پیش‌فرض، یک فایل PKCS#12 تجزیه می‌شود. یک فایل PKCS#12 را می‌توان با استفاده از گزینه -export (به ادامه مراجعه کنید) ایجاد کرد. گزینه‌های رمزگذاری صدور PKCS#12 و MAC مانند -certpbe و -iter و بسیاری از گزینه‌های دیگر مانند -chain تنها همراه با -export معنا دارند. برعکس، گزینه‌های مربوط به رمزگذاری کلیدهای خصوصی هنگام خروجی گرفتن از ورودی PKCS#12 تنها زمانی کاربرد دارند که گزینه -export داده نشده باشد.

الگوریتم رمزگذاری پیش‌فرض AES-256-CBC به همراه PBKDF2 برای اشتقاق کلید است.

هنگام مواجهه با مشکل در بارگذاری فایل‌های قدیمی (legacy) PKCS#12 که به عنوان مثال شامل RC2-40-CBC هستند، استفاده از گزینه -legacy و در صورت نیاز گزینه -provider-path را امتحان کنید.

چاپ پیام راهنمای نحوه استفاده.
منبع گذرواژه برای ورودی، و برای رمزگذاری هر کلید خصوصی که در خروجی نوشته می‌شود. برای اطلاعات بیشتر درباره قالب arg به openssl-passphrase-options(1) مراجعه کنید.
منبع گذرواژه برای فایل‌های خروجی.
همراه با -export، گزینه -password معادل -passout است، در غیر این صورت معادل -passin خواهد بود.
درخواست گذرواژه‌های جداگانه برای یکپارچگی و رمزگذاری: بیشتر نرم‌افزارها همیشه فرض می‌کنند که این دو گذرواژه یکسان هستند، بنابراین این گزینه باعث می‌شود چنین فایل‌های PKCS#12 غیرقابل خواندن شوند. نمی‌توان آن را در ترکیب با گزینه‌های -password، -passin (هنگام وارد کردن از PKCS#12) یا -passout (هنگام صدور) استفاده کرد.
هیچ کلید خصوصی در خروجی نوشته نخواهد شد.
هیچ گواهی‌ای در خروجی نوشته نخواهد شد.
این گزینه مانع از خروجی دادن تمام اطلاعات اعتباری می‌شود و بنابراین ورودی صرفاً اعتبارسنجی می‌گردد.
استفاده از حالت عملکرد قدیمی و بارگذاری خودکار ارائه‌دهنده legacy. اگر OpenSSL به صورت سراسری در سیستم نصب نشده باشد، لازم است از گزینه‌هایی مانند "-provider-path ./providers" نیز استفاده شود یا متغیر محیطی OPENSSL_MODULES طوری تنظیم گردد که به پوشه‌ای که ارائه‌دهنده‌ها در آن قرار دارند اشاره کند.

در حالت قدیمی، الگوریتم پیش‌فرض برای رمزگذاری گواهی، بسته به فعال بودن یا نبودن رمزنگار RC2 در ساخت برنامه، برابر با RC2_CBC یا 3DES_CBC است. الگوریتم پیش‌فرض برای رمزگذاری کلید خصوصی 3DES_CBC است. اگر گزینه legacy مشخص نشود، ارائه‌دهنده legacy بارگذاری نمی‌شود و الگوریتم رمزگذاری پیش‌فرض برای هر دو گواهی‌ها و کلیدهای خصوصی AES_256_CBC به همراه PBKDF2 برای اشتقاق کلید خواهد بود.

بخش "Engine Options" در openssl(1) را ببینید. این گزینه منسوخ شده است.
بخش "Provider Options" در openssl(1)، provider(7) و property(7) را ببینید.
برای جزئیات به بخش "Random State Options" در openssl(1) مراجعه کنید.

نام فایل یا URI ورودی را مشخص می‌کند. به طور پیش‌فرض از ورودی استاندارد استفاده می‌شود. بدون گزینه -export، این باید یک فایل PKCS#12 برای تجزیه شدن باشد. برای استفاده همراه با گزینه -export به بخش "گزینه‌های خروجی (صدور) PKCS#12" مراجعه کنید.
نام فایلی که گواهی‌ها و کلیدهای خصوصی در آن نوشته می‌شوند، که به طور پیش‌فرض خروجی استاندارد است. همه آن‌ها در قالب PEM نوشته می‌شوند.
خروجی دادن اطلاعات تکمیلی درباره ساختار فایل PKCS#12، الگوریتم‌های استفاده‌شده و تعداد دورهای تکرار.
تلاش نکردن برای اعتبارسنجی کد یکپارچگی MAC.
تنها خروجی دادن گواهی‌های کلاینت (نه گواهی‌های CA).
تنها خروجی دادن گواهی‌های CA (نه گواهی‌های کلاینت).
استفاده از AES برای رمزگذاری کلیدهای خصوصی پیش از خروجی دادن.
استفاده از ARIA برای رمزگذاری کلیدهای خصوصی پیش از خروجی دادن.
استفاده از Camellia برای رمزگذاری کلیدهای خصوصی پیش از خروجی دادن.
استفاده از DES برای رمزگذاری کلیدهای خصوصی پیش از خروجی دادن.
استفاده از Triple DES برای رمزگذاری کلیدهای خصوصی پیش از خروجی دادن.
استفاده از IDEA برای رمزگذاری کلیدهای خصوصی پیش از خروجی دادن.
عدم رمزگذاری کلیدهای خصوصی به طور کامل.
این گزینه از OpenSSL 3.0 به بعد منسوخ شده است؛ به جای آن از -noenc استفاده کنید.

این گزینه مشخص می‌کند که یک فایل PKCS#12 به جای تجزیه شدن، ایجاد شود.
نام فایلی که فایل PKCS#12 در آن نوشته می‌شود را مشخص می‌کند. به طور پیش‌فرض از خروجی استاندارد استفاده می‌شود.
نام فایل یا URI ورودی را مشخص می‌کند. به طور پیش‌فرض از ورودی استاندارد استفاده می‌شود. همراه با گزینه -export، این یک فایل حاوی گواهی‌ها و یک کلید است، یا یک URI که به کلیدی اشاره دارد که از طریق یک موتور به آن دسترسی یافته است. ترتیب اطلاعات اعتباری در فایل اهمیتی ندارد، اما یک کلید خصوصی و گواهی متناظر با آن باید موجود باشند. در صورت وجود گواهی‌های اضافی، آن‌ها نیز در فایل خروجی PKCS#12 گنجانده خواهند شد.
ورودی کلید خصوصی برای خروجی PKCS#12. اگر این گزینه مشخص نشود، فایل ورودی (آرگومان -in) باید حاوی یک کلید خصوصی باشد. اگر از هیچ موتوری استفاده نشود، این آرگومان به عنوان یک فایل در نظر گرفته می‌شود. اگر گزینه -engine استفاده شود یا URI دارای پیشوند "org.openssl.engine:" باشد، ادامه URI به عنوان شناسه کلید برای موتور داده‌شده در نظر گرفته می‌شود.
یک فایل ورودی با گواهی‌های اضافی برای افزودن به خروجی PKCS#12 در صورتی که گزینه -export داده شده باشد.
منبع گذرواژه برای ورودی گواهی مانند -certfile و -untrusted. برای اطلاعات بیشتر درباره قالب arg به openssl-passphrase-options(1) مراجعه کنید.
در صورت وجود این گزینه، زنجیره گواهی مربوط به گواهی موجودیت نهایی ساخته شده و در فایل خروجی PKCS#12 گنجانده می‌شود. گواهی موجودیت نهایی اولین گواهی خوانده‌شده از فایل -in است (اگر کلیدی داده نشده باشد)، در غیر این صورت اولین گواهی منطبق با کلید داده‌شده خواهد بود. مخزن اعتماد استاندارد CA برای ساخت زنجیره استفاده می‌شود، همچنین هر گواهی نامعتمد CA که با گزینه -untrusted ارائه شده باشد به کار گرفته می‌شود.
یک فایل ورودی از گواهی‌های نامعتمد که ممکن است برای ساخت زنجیره استفاده شود؛ این گزینه تنها زمانی کاربرد دارد که یک فایل PKCS#12 با گزینه -export ایجاد شود و گزینه -chain نیز ارائه شده باشد. هر گواهی که در واقع بخشی از زنجیره باشد به خروجی افزوده می‌شود.
برای جزئیات به بخش "Trusted Certificate Options" در openssl-verification-options(1) مراجعه کنید.
این گزینه "نام دوستانه" (friendly name) را برای گواهی‌ها و کلید خصوصی مشخص می‌کند. این نام معمولاً در کادرهای لیست نرم‌افزارهایی که فایل را وارد می‌کنند نمایش داده می‌شود.
این گزینه "نام دوستانه" را برای سایر گواهی‌ها مشخص می‌کند. از این گزینه می‌توان چندین بار برای تعیین نام تمام گواهی‌ها به ترتیب ظهورشان استفاده کرد. Netscape نام‌های دوستانه در سایر گواهی‌ها را نادیده می‌گیرد در حالی که MSIE آن‌ها را نمایش می‌دهد.
نوشتن name به عنوان نام CSP مایکروسافت. منبع گذرواژه برای ورودی، و برای رمزگذاری هر کلید خصوصی که در خروجی نوشته می‌شود. برای اطلاعات بیشتر درباره قالب arg به openssl-passphrase-options(1) مراجعه کنید.
افزودن شناسه "Local Key Set" به مشخصه‌ها.
مشخص می‌کند که کلید خصوصی برای تبادل کلید استفاده شود یا صرفاً برای امضا. این گزینه فقط توسط MSIE و نرم‌افزارهای مشابه مایکروسافت تفسیر می‌شود. به طور معمول نرم‌افزارهای "درجه صادراتی" فقط به کلیدهای ۵۱۲ بیتی RSA اجازه می‌دهند که برای اهداف رمزگذاری استفاده شوند، اما کلیدهایی با طول دلخواه برای امضا مجاز هستند. گزینه -keysig کلید را صرفاً برای امضا علامت‌گذاری می‌کند. کلیدهای صرفاً امضا می‌توانند برای امضای S/MIME، امضای Authenticode (امضای کنترل‌های ActiveX) و احراز هویت کلاینت SSL استفاده شوند؛ با این حال، به دلیل یک اشکال نرم‌افزاری تنها MSIE 5.0 و بالاتر از استفاده از کلیدهای صرفاً امضا برای احراز هویت کلاینت SSL پشتیبانی می‌کنند.
این گزینه‌ها امکان انتخاب الگوریتم مورد استفاده برای رمزگذاری کلید خصوصی و گواهی‌ها را فراهم می‌کنند. از نام هر الگوریتم PBE مربوط به PKCS#5 v1.5 یا PKCS#12 می‌توان استفاده کرد (برای اطلاعات بیشتر به بخش "نکات (NOTES)" مراجعه کنید). اگر نام یک رمزنگار (مشابه خروجی "openssl list -cipher-algorithms") مشخص شود، آنگاه با PKCS#5 v2.0 استفاده خواهد شد. به دلایل سازگاری و تعامل‌پذیری، توصیه می‌شود فقط از الگوریتم‌های PKCS#12 استفاده کنید.

مقدار ویژه "NONE" رمزگذاری کلید خصوصی و گواهی‌ها را غیرفعال می‌کند.

رمزگذاری گواهی‌ها با استفاده از Triple DES. به طور پیش‌فرض، کلید خصوصی و گواهی‌ها با استفاده از AES-256-CBC رمزگذاری می‌شوند مگر اینکه از گزینه '-legacy' استفاده شود. اگر '-descert' همراه با '-legacy' به کار رود، آنگاه هر دو کلید خصوصی و گواهی‌ها با استفاده از Triple DES رمزگذاری می‌شوند.
تعیین الگوریتم خلاصه پیام (دایجست) MAC. در صورت عدم ذکر، از SHA256 استفاده خواهد شد.
استفاده از PBMAC1 با PBKDF2 برای محافظت MAC از فایل PKCS#12.
تعیین الگوریتم خلاصه پیام PBKDF2 KDF. در صورت عدم تعیین، از SHA256 استفاده خواهد شد. این پارامتر نادیده گرفته می‌شود مگر اینکه "-pbmac1_pbkdf2" مشخص شده باشد.
این گزینه تعداد دورهای تکرار را برای کلید رمزگذاری و MAC مشخص می‌کند. مقدار پیش‌فرض ۲۰۴۸ است.

برای دفع حملات با استفاده از واژه‌نامه‌های بزرگ از گذرواژه‌های رایج، الگوریتمی که کلیدها را از گذرواژه‌ها اشتقاق می‌کند می‌تواند یک شمارنده تکرار داشته باشد: این امر باعث می‌شود بخش معینی از الگوریتم تکرار شود و سرعت آن کاهش یابد. از MAC برای بررسی یکپارچگی فایل استفاده می‌شود، اما از آنجا که معمولاً گذرواژه‌ای یکسان با کلیدها و گواهی‌ها دارد، ممکن است هدف حمله نیز قرار گیرد.

به طور پیش‌فرض، تعداد دورهای تکرار هر دو رمزگذاری و MAC روی ۲۰۴۸ تنظیم شده است؛ با استفاده از این گزینه‌ها، تعداد دورهای تکرار MAC و رمزگذاری را می‌توان روی ۱ تنظیم کرد، اما از آنجا که این کار امنیت فایل را کاهش می‌دهد، نباید از این گزینه‌ها استفاده کنید مگر اینکه واقعاً مجبور باشید. بیشتر نرم‌افزارها از هر دو شمارنده تکرار MAC و رمزگذاری پشتیبانی می‌کنند. MSIE 4.0 از شمارنده تکرار MAC پشتیبانی نمی‌کند، بنابراین به گزینه -nomaciter نیاز دارد.
این گزینه برای سازگاری با نسخه‌های پیشین گنجانده شده است؛ در گذشته برای استفاده از شمارنده‌های تکرار MAC به این گزینه نیاز بود، اما اکنون به طور پیش‌فرض اعمال می‌شود.
این گزینه طول نمک (salt) را بر حسب بایت برای MAC مشخص می‌کند. طبق استاندارد NIST SP 800-132، طول نمک باید حداقل ۱۶ بایت باشد که مقدار پیش‌فرض نیز هست.
تلاش نکردن برای تأمین یکپارچگی MAC. این قابلیت می‌تواند هنگام استفاده از ارائه‌دهنده FIPS مفید باشد، زیرا MAC در PKCS#12 نیازمند PKCS12KDF است که یک الگوریتم تأییدشده FIPS نیست و توسط ارائه‌دهنده FIPS پشتیبانی نمی‌شود.
صادر کردن فایل pkcs12 در قالبی سازگار با کاربرد Java keystore. این گزینه یک پارامتر رشته‌ای دریافت می‌کند که نشان‌دهنده نام OID اعتمادی است که به گواهی مرتبط با آن اعطا می‌شود. در حال حاضر فقط "anyExtendedKeyUsage" تعریف شده است. توجه داشته باشید که چون مخازن کلید جاوا فایل‌های PKCS12 شامل هر دو گواهی‌های معتمد و جفت‌کلیدها را نمی‌پذیرند، استفاده از این گزینه به معنای تنظیم گزینه -nokeys است.

اگرچه گزینه‌های بسیار زیادی وجود دارد، بیشتر آن‌ها به ندرت استفاده می‌شوند. برای تجزیه فایل PKCS#12 فقط استفاده از -in و -out لازم است؛ برای ایجاد فایل PKCS#12 گزینه‌های -export و -name نیز به کار می‌روند.

اگر هیچ‌یک از گزینه‌های -clcerts، -cacerts یا -nocerts مشخص نشده باشند، آنگاه تمام گواهی‌ها به همان ترتیبی که در فایل‌های ورودی PKCS#12 ظاهر می‌شوند در خروجی قرار خواهند گرفت. هیچ تضمینی وجود ندارد که اولین گواهی موجود، گواهی متناظر با کلید خصوصی باشد. برخی نرم‌افزارها که سعی می‌کنند یک کلید خصوصی و گواهی متناظر با آن را دریافت کنند، ممکن است فرض کنند که اولین گواهی درون فایل همان گواهی متناظر با کلید خصوصی است، اما ممکن است همیشه این‌گونه نباشد. استفاده از گزینه -clcerts این مشکل را با خروجی دادن انحصاری گواهی متناظر با کلید خصوصی برطرف می‌کند. اگر به گواهی‌های CA نیاز باشد، می‌توان آن‌ها را با استفاده از گزینه‌های -nokeys و -cacerts در فایلی جداگانه تنها برای گواهی‌های CA خروجی گرفت.

الگوریتم‌های -keypbe و -certpbe امکان تعیین دقیق الگوریتم‌های رمزگذاری کلیدهای خصوصی و گواهی‌ها را فراهم می‌کنند. به طور معمول مقادیر پیش‌فرض مناسب هستند، اما گاهی اوقات نرم‌افزارها نمی‌توانند کلیدهای خصوصی رمزگذاری‌شده با Triple DES را مدیریت کنند؛ در این حالت می‌توان از گزینه -keypbe PBE-SHA1-RC2-40 برای کاهش سطح رمزگذاری کلید خصوصی به RC2 چهل بیتی استفاده کرد. توضیحات کامل تمامی الگوریتم‌ها در openssl-pkcs8(1) آمده است.

پیش از انتشار نسخه 1.1، گذرواژه‌های حاوی نویسه‌های غیر ASCII به شیوه‌ای ناسازگار با استاندارد کدگذاری می‌شدند که این امر تعامل‌پذیری را، به‌ویژه با ویندوز، محدود می‌کرد. اما تغییر به کدگذاری گذرواژه سازگار با استاندارد، در دسترسی به داده‌های قدیمی محافظت‌شده با کدگذاری نامعتبر مشکل ایجاد می‌کند. به همین دلیل، هنگام خواندن داده‌ها حتی کدگذاری‌های موروثی و قدیمی نیز امتحان می‌شوند. اگر در برنامه‌های کاربردی محیط تولید از فایل‌های PKCS#12 استفاده می‌کنید، توصیه می‌شود داده‌ها را تبدیل کنید، زیرا رویکرد اکتشافی پیاده‌سازی‌شده از نظر همزمانی چندریسمانی امن (MT-safe) نیست و تنها هدف آن تسهیل ارتقای داده‌ها با این دستور است.

تجزیه یک فایل PKCS#12 و خروجی دادن آن به یک فایل PEM:

openssl pkcs12 -in file.p12 -out file.pem

خروجی دادن تنها گواهی‌های کلاینت به یک فایل:

openssl pkcs12 -in file.p12 -clcerts -out file.pem

عدم رمزگذاری کلید خصوصی:

openssl pkcs12 -in file.p12 -out file.pem -noenc

چاپ برخی اطلاعات درباره یک فایل PKCS#12:

openssl pkcs12 -in file.p12 -info -noout

چاپ برخی اطلاعات درباره یک فایل PKCS#12 در حالت قدیمی (legacy):

openssl pkcs12 -in file.p12 -info -noout -legacy

ایجاد یک فایل PKCS#12 از یک فایل PEM که ممکن است حاوی یک کلید و گواهی‌ها باشد:

openssl pkcs12 -export -in file.pem -out file.p12 -name "My PSE"

گنجاندن برخی گواهی‌های اضافی:

openssl pkcs12 -export -in file.pem -out file.p12 -name "My PSE" \
 -certfile othercerts.pem

صدور یک فایل PKCS#12 با داده‌هایی از یک فایل PEM گواهی و فایل PEM دیگری حاوی یک کلید، با الگوریتم‌های پیش‌فرض مشابه با ارائه‌دهنده legacy:

openssl pkcs12 -export -in cert.pem -inkey key.pem -out file.p12 -legacy

openssl(1), openssl-pkcs8(1), ossl_store-file(7)

گزینه -engine در OpenSSL 3.0 منسوخ شد. گزینه -nodes نیز در OpenSSL 3.0 منسوخ شد؛ به جای آن از -noenc استفاده کنید. مقدار پیش‌فرض گزینه -macsaltlen در OpenSSL 3.6 از ۸ به ۱۶ بایت تغییر یافت.

حق نشر ۲۰۰۰-۲۰۲۵ متعلق به نگارندگان پروژه OpenSSL است. کلیه حقوق محفوظ است.

تحت مجوز آپاچی، نسخه ۲.۰ ("مجوز") منتشر شده است. شما مجاز به استفاده از این پرونده نیستید مگر با رعایت مفاد مجوز. می‌توانید نسخه‌ای از مجوز را در فایل LICENSE در توزیع منبع یا در https://www.openssl.org/source/license.html دریافت کنید.

2026-08-25 3.6.4