OPENSSL(1ssl) OpenSSL OPENSSL(1ssl)

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

openssl command [ options ... ] [ parameters ... ]

openssl no-XXX [ options ]

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 تنوع گسترده‌ای از دستورها (command در بخش "SYNOPSIS" بالا) را ارائه می‌دهد. هر دستور می‌تواند گزینه‌ها و پارامترهای آرگومان متعددی داشته باشد که در بالا با options و parameters نشان داده شده‌اند.

مستندات دقیق و موارد کاربرد برای اکثر زیردستورهای استاندارد در دسترس است (مانند 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 (سینتکس پیام‌های رمزنگاری).
مدیریت فهرست ابطال گواهی (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.
رمزگذاری، رمزگشایی و کدگذاری.
اطلاعات و دستکاری موتور (ماژول قابل بارگذاری).
تبدیل شماره خطا به رشته متنی خطا.
نصب پیکربندی FIPS.
تولید کلید خصوصی DSA از روی پارامترها. توسط openssl-genpkey(1) و openssl-pkey(1) جایگزین شده است.
تولید کلید خصوصی یا پارامترها.
تولید کلید خصوصی RSA. توسط openssl-genpkey(1) جایگزین شده است.
نمایش اطلاعات درباره گزینه‌های یک دستور.
نمایش اطلاعات گوناگون تعبیه‌شده در کتابخانه‌های OpenSSL.
توابع اشتقاق کلید (KDF).
فهرست کردن الگوریتم‌ها و قابلیت‌ها.
محاسبه کد اصالت‌سنجی پیام (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 جفت شود.

یک یا چند فایل حاوی داده‌های تصادفی برای بذردهی به تولیدکننده اعداد تصادفی. می‌توان چندین فایل را با نویسه جداکننده وابسته به سیستم‌عامل تعیین کرد. این جداکننده برای 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 کار می‌کنند.
این گزینه‌ها استفاده از DTLS را به جای TLS تعیین می‌کنند. با گزینه -dtls، کلاینت‌ها هر نسخه پشتیبانی‌شده از پروتکل DTLS را مذاکره خواهند کرد. برای پشتیبانی اختصاصی از DTLS1.0 یا DTLS1.2، به ترتیب از گزینه‌های -dtls1 یا -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

ارائه‌دهنده شناسایی‌شده با name را بارگذاری و مقداردهی اولیه می‌کند. مقدار name می‌تواند مسیری به ماژول ارائه‌دهنده نیز باشد. در آن صورت، نام ارائه‌دهنده مسیر مشخص‌شده خواهد بود و نه صرفاً نام ماژول ارائه‌دهنده. تفسیر مسیرهای نسبی وابسته به پلتفرم است. مسیر پیکربندی‌شده "MODULESDIR"، متغیر محیطی OPENSSL_MODULES، یا مسیر مشخص‌شده توسط -provider-path به ابتدای مسیرهای نسبی افزوده می‌شود. برای توضیحات دقیق‌تر به provider(7) مراجعه کنید.
مسیر جستجویی را که باید برای یافتن ارائه‌دهنده‌ها استفاده شود، مشخص می‌کند. به همین ترتیب، متغیر محیطی OPENSSL_MODULES نیز می‌تواند تنظیم شود.
پارامتر پیکربندی key را به مقدار val در ارائه‌دهنده name تنظیم می‌کند (اختیاری)؛ اگر name مشخص نشود، تنظیم بر روی تمامی ارائه‌دهنده‌های بارگذاری‌شده اعمال خواهد شد. این گزینه را می‌توان چندین بار برای تنظیم چند پارامتر مشخص کرد. گزینه‌هایی که ارائه‌دهنده‌های غیرپیش‌فرض را برای بارگذاری تعیین می‌کنند باید پیش از این گزینه بیایند، چنانچه هدف اعمال تنظیمات بر روی ارائه‌دهنده‌های در حال بارگذاری باشد. پارامترهایی که تنها بر مقداردهی اولیه ارائه‌دهنده تأثیر می‌گذارند، فعلاً باید در فایل پیکربندی تنظیم شوند؛ تنها پارامترهایی که بعداً در صورت نیاز استعلام می‌شوند هنگام تنظیم از طریق این رابط مؤثر خواهند بود. تنها پارامترهایی با مقدار رشته UTF8 پشتیبانی می‌شوند. برای هرگونه پارامتر پشتیبانی‌شده به مستندات ارائه‌دهنده خاص و الگوریتم‌های مرتبط با آن مراجعه کنید.
بند پرس‌وجوی ویژگی (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