OPENSSL(1) OpenSSL OPENSSL(1)

openssl - ابزار خط فرمان OpenSSL

openssl command [ گزینه‌ها ... ] [ پارامترها ... ]

openssl no-XXX [ گزینه‌ها ]

openssl -help | -version

پروژه OpenSSL یک جعبه‌ابزار رمزنگاری است که پروتکل‌های شبکه لایه سوکت‌های امن (SSL) و امنیت لایه انتقال (TLS) و همچنین استانداردهای رمزنگاری مرتبط مورد نیاز آن‌ها را پیاده‌سازی می‌کند.

برنامه openssl یک ابزار خط فرمان برای استفاده از توابع مختلف رمزنگاری کتابخانه crypto مربوط به OpenSSL از طریق شل است. از این ابزار می‌توان برای موارد زیر استفاده کرد:

o  ایجاد و مدیریت کلیدهای خصوصی، کلیدهای عمومی و پارامترها
o  عملیات رمزنگاری با کلید عمومی
o  ایجاد گواهی‌های X.509، درخواست‌های امضای گواهی (CSR) و فهرست‌های ابطال گواهی (CRL)
o  محاسبه خلاصه‌های پیام (Message Digests) و کدهای اصالت‌سنجی پیام (MAC)
o  رمزنگاری و رمزگشایی با الگوریتم‌های سایفر (Ciphers)
o  آزمایش کلاینت و سرور SSL/TLS
o  مدیریت ایمیل‌های رمزگذاری‌شده یا امضاشده با S/MIME
o  درخواست، تولید و اعتبارسنجی برچسب‌های زمانی (Timestamp)

برنامه openssl مجموعه متنوع و غنی از دستورات را ارائه می‌دهد (که در بخش خلاصه دستور (SYNOPSIS) با command مشخص شده است). هر دستور می‌تواند گزینه‌ها و پارامترهای آرگومان متعددی داشته باشد که در بالا به صورت گزینه‌ها و پارامترها نشان داده شده‌اند.

مستندات تفصیلی و موارد کاربرد برای اکثر زیردستورهای استاندارد در دسترس است (برای نمونه، openssl-x509(1)). زیردستور openssl-list(1) می‌تواند برای فهرست کردن زیردستورها استفاده شود.

دستور no-XXX بررسی می‌کند که آیا دستوری با نام مشخص‌شده در دسترس است یا خیر. اگر هیچ دستوری به نام XXX وجود نداشته باشد، مقدار 0 (موفقیت) را برمی‌گرداند و no-XXX را چاپ می‌کند؛ در غیر این صورت مقدار 1 را برمی‌گرداند و XXX را چاپ می‌کند. در هر دو حالت، خروجی به stdout ارسال می‌شود و چیزی در stderr چاپ نخواهد شد. آرگومان‌های خط فرمان اضافی همیشه نادیده گرفته می‌شوند. از آنجا که برای هر سایفر دستوری با همان نام وجود دارد، این روش راهکاری ساده برای اسکریپت‌های شل فراهم می‌کند تا در دسترس بودن سایفرها را در برنامه openssl بررسی کنند (دستور no-XXX قادر به تشخیص شبه‌دستورهایی مانند quit، list یا خود no-XXX نیست).

بسیاری از دستورات برای برخی یا تمام آرگومان‌های خود از یک فایل پیکربندی خارجی استفاده می‌کنند و دارای گزینه -config برای تعیین آن فایل هستند. نام پیش‌فرض این فایل openssl.cnf در ناحیه ذخیره‌سازی پیش‌فرض گواهی‌ها است که می‌توان آن را از طریق دستور openssl-version(1) با استفاده از گزینه -d یا -a به دست آورد. از متغیر محیطی OPENSSL_CONF می‌توان برای تعیین مسیر دیگری برای فایل یا برای غیرفعال کردن بارگذاری پیکربندی (با استفاده از یک رشته خالی) استفاده کرد.

از جمله کاربردهای دیگر، فایل پیکربندی می‌تواند برای بارگذاری ماژول‌ها و تعیین پارامترها جهت تولید گواهی‌ها و اعداد تصادفی استفاده شود. برای جزئیات بیشتر به config(5) مراجعه کنید.

تجزیه و تحلیل یک دنباله ASN.1.
مدیریت مرجع صدور گواهی (CA).
تعیین و توصیف مجموعه‌های الگوریتم رمزنگاری (Cipher Suites).
دستور نحو پیام رمزنگاری‌شده (CMS یا Cryptographic Message Syntax).
مدیریت فهرست‌های ابطال گواهی (CRL).
تبدیل CRL به PKCS#7.
محاسبه خلاصه پیام (Message Digest). محاسبات کدهای MAC با openssl-mac(1) جایگزین شده است.
تولید و مدیریت پارامترهای دیفی-هلمن (Diffie-Hellman). با openssl-genpkey(1) و openssl-pkeyparam(1) جایگزین شده است.
مدیریت داده‌های DSA.
تولید و مدیریت پارامترهای DSA. با openssl-genpkey(1) و openssl-pkeyparam(1) جایگزین شده است.
پردازش کلیدهای EC (منحنی بیضوی).
دستکاری و تولید پارامترهای EC.
رمزنگاری، رمزگشایی و کدگذاری.
اطلاعات و دستکاری موتورها (Engine - ماژول‌های قابل بارگذاری).
تبدیل شماره خطا به رشته توصیف خطا.
نصب و استقرار پیکربندی FIPS.
تولید کلید خصوصی DSA از روی پارامترها. با openssl-genpkey(1) و openssl-pkey(1) جایگزین شده است.
تولید کلید خصوصی یا پارامترها.
تولید کلید خصوصی RSA. با openssl-genpkey(1) جایگزین شده است.
نمایش اطلاعات درباره گزینه‌های یک دستور.
نمایش اطلاعات گوناگون داخلی تعبیه‌شده در کتابخانه‌های OpenSSL.
توابع اشتقاق کلید (Key Derivation Functions).
فهرست کردن الگوریتم‌ها و ویژگی‌ها.
محاسبه کد اصالت‌سنجی پیام (MAC).
ایجاد یا بررسی یک دنباله گواهی Netscape.
دستور پروتکل برخط وضعیت گواهی (OCSP).
تولید گذرواژه‌های هش‌شده.
مدیریت داده‌های PKCS#12.
مدیریت داده‌های PKCS#7.
دستور تبدیل کلید خصوصی در فرمت PKCS#8.
مدیریت کلیدهای عمومی و خصوصی.
مدیریت پارامترهای الگوریتم‌های کلید عمومی.
دستور عملیات رمزنگاری الگوریتم‌های کلید عمومی.
محاسبه اعداد اول.
تولید بایت‌های شبه‌تصادفی.
ایجاد پیوندهای نمادین به فایل‌های گواهی و CRL بر اساس مقدار هش آن‌ها.
مدیریت درخواست‌های امضای گواهی (CSR) با فرمت PKCS#10 X.509.
مدیریت کلید RSA.
دستور RSA برای امضا، اعتبارسنجی، رمزنگاری و رمزگشایی. با openssl-pkeyutl(1) جایگزین شده است.
یک کلاینت عمومی SSL/TLS را پیاده‌سازی می‌کند که می‌تواند ارتباطی شفاف با یک سرور راه دور با پروتکل SSL/TLS برقرار کند. این ابزار صرفاً برای مقاصد آزمایشی طراحی شده است و تنها یک رابط کاربری ابتدایی ارائه می‌دهد، اما در لایه داخلی تقریباً از تمام عملکردهای کتابخانه ssl مربوط به OpenSSL استفاده می‌کند.
یک سرور عمومی SSL/TLS را پیاده‌سازی می‌کند که اتصالات را از کلاینت‌های راه دور با پروتکل SSL/TLS می‌پذیرد. این ابزار صرفاً برای مقاصد آزمایشی طراحی شده است و تنها یک رابط کاربری ابتدایی ارائه می‌دهد، اما در لایه داخلی تقریباً از تمام عملکردهای کتابخانه ssl مربوط به OpenSSL استفاده می‌کند. این ابزار هم یک پروتکل مبتنی بر خط فرمان اختصاصی برای آزمایش عملکردهای SSL و هم یک سازوکار پاسخ‌دهی ساده HTTP برای شبیه‌سازی یک وب‌سرور پشتیبانی‌کننده از SSL/TLS فراهم می‌کند.
سنجش زمان اتصال SSL.
مدیریت داده‌های نشست SSL.
پردازش نامه‌های الکترونیکی S/MIME.
اندازه‌گیری سرعت الگوریتم‌ها.
دستور چاپ و تولید SPKAC.
نگهداری فایل گذرواژه SRP. این دستور منسوخ شده است.
دستور فهرست‌بندی و نمایش گواهی‌ها، کلیدها، CRLها و غیره.
دستور مرجع برچسب‌گذاری زمانی (TSA).
اعتبارسنجی گواهی‌های X.509. همچنین به صفحه راهنمای openssl-verification-options(1) مراجعه کنید.
اطلاعات نسخه OpenSSL.
مدیریت داده‌های گواهی X.509.

خلاصه پیام BLAKE2b-512
خلاصه پیام BLAKE2s-256
خلاصه پیام MD2
خلاصه پیام MD4
خلاصه پیام MD5
خلاصه پیام MDC2
خلاصه پیام RMD-160
خلاصه پیام SHA-1
خلاصه پیام SHA-2 224
خلاصه پیام SHA-2 256
خلاصه پیام SHA-2 384
خلاصه پیام SHA-2 512
خلاصه پیام SHA-3 224
خلاصه پیام SHA-3 256
خلاصه پیام SHA-3 384
خلاصه پیام SHA-3 512
خلاصه پیام KECCAK 224
خلاصه پیام KECCAK 256
خلاصه پیام KECCAK 384
خلاصه پیام KECCAK 512
خلاصه پیام SHA-3 SHAKE128
خلاصه پیام SHA-3 SHAKE256
خلاصه پیام SM3

نام‌های مستعار زیر دسترسی آسانی را به پرکاربردترین کدگذاری‌ها و سایفرها فراهم می‌کنند.

بسته به نحوه پیکربندی و کامپایل OpenSSL، ممکن است تمام سایفرهای فهرست‌شده در اینجا در دسترس نباشند. برای اطلاعات بیشتر به openssl-enc(1) مراجعه کنید.

سایفر AES-128
سایفر AES-192
سایفر AES-256
سایفر Aria-128
سایفر Aria-192
سایفر Aria-256
کدگذاری Base64
سایفر Blowfish
سایفر Camellia-128
سایفر Camellia-192
سایفر Camellia-256
سایفر CAST
سایفر CAST5
سایفر Chacha20
سایفر DES
سایفر Triple-DES
سایفر IDEA
سایفر RC2
سایفر RC4
سایفر RC5
سایفر SEED
سایفر SM4

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

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

خلاصه‌ای فشرده از تمامی گزینه‌ها ارائه می‌دهد. برای اطلاعات تفصیلی‌تر، هر دستور از یک گزینه -help پشتیبانی می‌کند. گزینه --help نیز پذیرفته می‌شود.
خلاصه‌ای فشرده از نسخه برنامه openssl ارائه می‌دهد. برای اطلاعات تفصیلی‌تر به openssl-version(1) مراجعه کنید. گزینه --version نیز پذیرفته می‌شود.

اگر گزینه‌ای آرگومانی دریافت کند، «نوع» آرگومان نیز نمایش داده می‌شود.
--
فهرست گزینه‌ها را پایان می‌دهد. این مورد بیشتر زمانی مفید است که پارامترهای نام فایل با علامت منفی شروع شوند:
openssl verify [flags...] -- -cert1.pem...

به صفحه راهنمای openssl-format-options(1) مراجعه کنید.

به صفحه راهنمای openssl-passphrase-options(1) مراجعه کنید.

پیش از OpenSSL 1.1.1، برای برنامه‌ها مرسوم بود که اطلاعات مربوط به وضعیت مولد اعداد تصادفی را در فایلی ذخیره کنند که در هنگام راه‌اندازی بارگذاری و در زمان خروج بازنویسی می‌شد. در سیستم‌عامل‌های مدرن، این کار عموماً دیگر ضروری نیست زیرا OpenSSL خود را از یک منبع آنتروپی مورد اعتماد ارائه‌شده توسط سیستم‌عامل مقداردهی اولیه (Seed) می‌کند. این فلگ‌ها همچنان برای پلتفرم‌ها یا شرایط خاصی که ممکن است به آن‌ها نیاز داشته باشند پشتیبانی می‌شوند.

به طور کلی استفاده چندباره از یک فایل سید خطا محسوب می‌شود و هر بار استفاده از -rand باید همراه با -writerand باشد.

یک یا چند فایل حاوی داده‌های تصادفی مورد استفاده برای مقداردهی اولیه (Seed) مولد اعداد تصادفی. چندین فایل را می‌توان با جداسازی توسط نویسه وابسته به سیستم‌عامل مشخص کرد. جداکننده برای MS-Windows نویسه ";"، برای OpenVMS نویسه "," و برای سایر سیستم‌ها ":" است. روش دیگر برای تعیین چندین فایل، تکرار این فلگ با نام‌های فایل متفاوت است.
داده‌های سید را هنگام خروج در file مشخص‌شده می‌نویسد. این فایل می‌تواند در اجرای بعدی دستور مورد استفاده قرار گیرد.

به صفحه راهنمای openssl-verification-options(1) مراجعه کنید.

به صفحه راهنمای openssl-namedisplay-options(1) مراجعه کنید.

چندین دستور از SSL، TLS یا DTLS استفاده می‌کنند. به‌طور پیش‌فرض، دستورات از TLS استفاده می‌نمایند و کلاینت‌ها پایین‌ترین و بالاترین نسخه پروتکل پشتیبانی‌شده خود را پیشنهاد می‌دهند، و سرورها بالاترین نسخه‌ای را که کلاینت پیشنهاد داده و توسط سرور نیز پشتیبانی می‌شود انتخاب می‌کنند.

از گزینه‌های زیر می‌توان برای محدود کردن نسخه‌های پروتکل مورد استفاده و همچنین تعیین استفاده از TCP (برای SSL و TLS) یا UDP (برای DTLS) استفاده کرد. توجه داشته باشید که بسته به نحوه کامپایل OpenSSL، ممکن است تمام پروتکل‌ها و فلگ‌ها در دسترس نباشند.

این گزینه‌ها استفاده از پروتکل‌های مشخص‌شده SSL یا TLS را اجباری یا غیرفعال می‌کنند. هنگامی که یک نسخه خاص از TLS الزامی شود، فقط همان نسخه پیشنهاد یا پذیرفته خواهد شد. تنها می‌توان یک پروتکل مشخص را تعیین کرد و نمی‌توان آن را با هیچ‌یک از گزینه‌های no_ ترکیب نمود. گزینه‌های no_* با دستورات s_time و ciphers کار نمی‌کنند، اما با دستورات s_client و s_server کار می‌کنند.
این گزینه‌ها تعیین می‌کنند که به جای TLS از DTLS استفاده شود. با گزینه -dtls، کلاینت‌ها برای هر نسخه پروتکل DTLS پشتیبانی‌شده مذاکره خواهند کرد. به ترتیب از گزینه‌های -dtls1 یا -dtls1_2 برای پشتیبانی صرف از DTLS1.0 یا DTLS1.2 استفاده کنید.

موتور مشخص‌شده با id را بارگذاری کرده و از تمام متدهای پیاده‌سازی‌شده توسط آن (الگوریتم‌ها، ذخیره‌سازی کلید و غیره) استفاده می‌کند، مگر آنکه در مستندات ویژه آن دستور طور دیگری تعیین شده باشد یا طبق بخش «Engine Configuration» در config(5) پیکربندی شده باشد.

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

یک حالت خاص، موتور "loader_attic" است که صرفاً برای مقاصد آزمایش داخلی OpenSSL در نظر گرفته شده و از بارگذاری کلیدها، پارامترها، گواهی‌ها و CRLها از فایل‌ها پشتیبانی می‌کند. هنگام استفاده از این موتور، فایل‌های حاوی این اعتبارنامه‌ها از طریق این موتور خوانده می‌شوند. استفاده از طرحواره "file:" اختیاری است؛ نام یک فایل ساده (مسیر) کفایت می‌کند.

گزینه‌های تعیین‌کننده کلیدها، مانند -key و موارد مشابه، می‌توانند از طرحواره عمومی URI بارگذاری کلید موتور OpenSSL یعنی "org.openssl.engine:" برای بازیابی کلیدهای خصوصی و عمومی استفاده کنند. ساختار نحو URI در شکل ساده‌شده به شرح زیر است:

org.openssl.engine:{engineid}:{keyid}

که در آن "{engineid}" شناسه/نام موتور، و "{keyid}" شناسه کلیدی است که توسط آن موتور قابل قبول باشد. برای نمونه، هنگام استفاده از موتوری که با یک پیاده‌سازی PKCS#11 در تعامل است، URI عمومی کلید چیزی شبیه به این خواهد بود (این مثالی است برای موتور PKCS#11 که بخشی از OpenSC است):

-key org.openssl.engine:pkcs11:label_some-private-key

به‌عنوان امکان سوم، برای موتورها و ارائه‌دهندگانی که OSSL_STORE_LOADER(3) مختص به خود را پیاده‌سازی کرده‌اند، استفاده از "org.openssl.engine:" نباید لازم باشد. برای یک پیاده‌سازی PKCS#11 که چنین بارگذارنده‌ای را پیاده‌سازی کرده باشد، استفاده مستقیم از URI مربوط به PKCS#11 همان‌طور که در RFC 7512 تعریف شده باید امکان‌پذیر باشد:

-key pkcs11:object=some-private-key;pin-value=1234

ارائه‌دهنده (Provider) مشخص‌شده با name را بارگذاری و مقداردهی اولیه می‌کند. مقدار name می‌تواند مسیری به ماژول ارائه‌دهنده نیز باشد. در این صورت، نام ارائه‌دهنده همان مسیر تعیین‌شده خواهد بود و نه فقط نام ماژول آن. تفسیر مسیرهای نسبی وابسته به پلتفرم است. مسیر پیکربندی‌شده «MODULESDIR»، متغیر محیطی OPENSSL_MODULES یا مسیر مشخص‌شده توسط -provider-path به ابتدای مسیرهای نسبی اضافه می‌شود. برای توضیحات دقیق‌تر به provider(7) مراجعه کنید.
مسیر جستجو را برای یافتن ارائه‌دهنده‌ها مشخص می‌کند. به طور معادل، متغیر محیطی OPENSSL_MODULES نیز می‌تواند تنظیم شود.
تنظیم پارامتر پیکربندی key به مقدار value در ارائه‌دهنده name (اختیاری)؛ اگر name مشخص نشود، این تنظیم بر تمام ارائه‌دهنده‌های بارگذاری‌شده اعمال خواهد شد. این گزینه را می‌توان چندین بار برای تعیین چندین پارامتر تکرار کرد. گزینه‌هایی که ارائه‌دهنده‌های غیرپیش‌فرض را برای بارگذاری تعیین می‌کنند، اگر قرار است این تنظیمات بر آن‌ها اعمال شود، باید پیش از این گزینه بیایند. پارامترهایی که تنها بر مقداردهی اولیه ارائه‌دهنده اثر می‌گذارند در حال حاضر باید در فایل پیکربندی تنظیم شوند؛ تنها پارامترهایی که بعداً در صورت نیاز مورد پرس‌وجو قرار می‌گیرند با تنظیم از طریق این رابط مؤثر واقع می‌شوند. تنها از پارامترهایی با مقادیر رشته‌ای UTF-8 پشتیبانی می‌شود. برای هرگونه پارامتر پشتیبانی‌شده به مستندات ارائه‌دهنده خاص و الگوریتم‌های مرتبط با آن مراجعه کنید.
بند پرس‌وجوی ویژگی (property query clause) را برای استفاده هنگام دریافت الگوریتم‌ها از ارائه‌دهنده‌های بارگذاری‌شده مشخص می‌کند. برای توضیحات تفصیلی‌تر به property(7) مراجعه کنید.

کتابخانه‌های OpenSSL می‌توانند برخی از پارامترهای پیکربندی را از محیط دریافت کنند.

برای اطلاعات درباره تمامی متغیرهای محیطی مورد استفاده توسط کتابخانه‌های OpenSSL، مانند OPENSSL_CONF، OPENSSL_MODULES و OPENSSL_TRACE، به openssl-env(7) مراجعه کنید.

برای اطلاعات درباره استفاده از متغیرهای محیطی در پیکربندی، به بخش «ENVIRONMENT» در config(5) مراجعه کنید.

برای اطلاعات درباره دستورات مشخص، به openssl-engine(1)، openssl-rehash(1) و tsget(1) مراجعه کنید.

برای اطلاعات درباره پرس‌وجو یا تعیین فلگ‌های معماری پردازنده (CPU)، به OPENSSL_armcap(3)، OPENSSL_ia32cap(3)، OPENSSL_ppccap(3)، OPENSSL_s390xcap(3) و OPENSSL_riscvcap(3) مراجعه کنید.

openssl-asn1parse(1), openssl-ca(1), openssl-ciphers(1), openssl-cms(1), openssl-crl(1), openssl-crl2pkcs7(1), openssl-dgst(1), openssl-dhparam(1), openssl-dsa(1), openssl-dsaparam(1), openssl-ec(1), openssl-ecparam(1), openssl-enc(1), openssl-engine(1), openssl-errstr(1), openssl-gendsa(1), openssl-genpkey(1), openssl-genrsa(1), openssl-kdf(1), openssl-list(1), openssl-mac(1), openssl-nseq(1), openssl-ocsp(1), openssl-passwd(1), openssl-pkcs12(1), openssl-pkcs7(1), openssl-pkcs8(1), openssl-pkey(1), openssl-pkeyparam(1), openssl-pkeyutl(1), openssl-prime(1), openssl-rand(1), openssl-rehash(1), openssl-req(1), openssl-rsa(1), openssl-rsautl(1), openssl-s_client(1), openssl-s_server(1), openssl-s_time(1), openssl-sess_id(1), openssl-smime(1), openssl-speed(1), openssl-spkac(1), openssl-srp(1), openssl-storeutl(1), openssl-ts(1), openssl-verify(1), openssl-version(1), openssl-x509(1), config(5), crypto(7), openssl-env(7). ssl(7), x509v3_config(5)

گزینه‌های list -XXX-algorithms در OpenSSL 1.0.0 اضافه شدند؛ برای نکاتی درباره در دسترس بودن سایر دستورات، به صفحات راهنمای اختصاصی آن‌ها مراجعه کنید.

گزینه -issuer_checks از نگارش OpenSSL 1.1.0 منسوخ شده و بدون هیچ پیامی نادیده گرفته می‌شود.

گزینه‌های -xcertform و -xkeyform از زمان OpenSSL 3.0 منسوخ و کهنه شده‌اند و هیچ اثری ندارند.

حالت تعاملی که می‌شد با اجرای "openssl" بدون هیچ آرگومان دیگری اجرا شود، در OpenSSL 3.0 حذف شد و اجرای این برنامه بدون آرگومان اکنون معادل با "openssl help" است.

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

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

2026-08-25 3.6.4