OPENSSL-S_SERVER(1ssl) OpenSSL OPENSSL-S_SERVER(1ssl)

openssl-s_server - برنامه سرور SSL/TLS

openssl s_server [-help] [-port +int] [-accept val] [-unix val] [-4] [-6] [-unlink] [-context val] [-verify int] [-Verify int] [-cert infile] [-cert2 infile] [-certform DER|PEM|P12] [-cert_chain infile] [-build_chain] [-serverinfo val] [-key filename|uri] [-key2 filename|uri] [-keyform DER|PEM|P12|ENGINE] [-pass val] [-dcert infile] [-dcertform DER|PEM|P12] [-dcert_chain infile] [-dkey filename|uri] [-dkeyform DER|PEM|P12|ENGINE] [-dpass val] [-nbio_test] [-crlf] [-debug] [-msg] [-msgfile outfile] [-state] [-nocert] [-quiet] [-no_resume_ephemeral] [-www] [-WWW] [-http_server_binmode] [-no_ca_names] [-ignore_unexpected_eof] [-servername] [-servername_fatal] [-tlsextdebug] [-HTTP] [-id_prefix val] [-keymatexport val] [-keymatexportlen +int] [-CRL infile] [-CRLform DER|PEM] [-crl_download] [-chainCAfile infile] [-chainCApath dir] [-chainCAstore uri] [-verifyCAfile infile] [-verifyCApath dir] [-verifyCAstore uri] [-no_cache] [-ext_cache] [-verify_return_error] [-verify_quiet] [-ign_eof] [-no_ign_eof] [-no_ems] [-status] [-status_all] [-status_verbose] [-status_timeout int] [-proxy [http[s]://][userinfo@]host[:port][/path][?query][#fragment]] [-no_proxy addresses] [-status_url val] [-status_file infile] [-ssl_config val] [-trace] [-security_debug] [-security_debug_verbose] [-brief] [-rev] [-async] [-max_send_frag +int] [-split_send_frag +int] [-max_pipelines +int] [-naccept +int] [-read_buf +int] [-no_tx_cert_comp] [-no_rx_cert_comp] [-dhparam infile] [-nbio] [-psk_identity val] [-psk_hint val] [-psk val] [-psk_session file] [-srpvfile infile] [-srpuserseed val] [-timeout] [-mtu +int] [-listen] [-sctp] [-sctp_label_bug] [-use_srtp val] [-no_dhe] [-nextprotoneg val] [-alpn val] [-ktls] [-sendfile] [-zerocopy_sendfile] [-keylogfile outfile] [-recv_max_early_data int] [-max_early_data int] [-early_data] [-stateless] [-anti_replay] [-no_anti_replay] [-num_tickets] [-tfo] [-cert_comp] [-nameopt option] [-no_ssl3] [-no_tls1] [-no_tls1_1] [-no_tls1_2] [-no_tls1_3] [-ssl3] [-tls1] [-tls1_1] [-tls1_2] [-tls1_3] [-dtls] [-dtls1] [-dtls1_2] [-allow_proxy_certs] [-attime timestamp] [-no_check_time] [-check_ss_sig] [-crl_check] [-crl_check_all] [-explicit_policy] [-extended_crl] [-ignore_critical] [-inhibit_any] [-inhibit_map] [-partial_chain] [-policy arg] [-policy_check] [-policy_print] [-purpose purpose] [-suiteB_128] [-suiteB_128_only] [-suiteB_192] [-trusted_first] [-no_alt_chains] [-use_deltas] [-auth_level num] [-verify_depth num] [-verify_email email] [-verify_hostname hostname] [-verify_ip ip] [-verify_name name] [-x509_strict] [-issuer_checks] [-bugs] [-no_comp] [-comp] [-no_ticket] [-serverpref] [-client_renegotiation] [-legacy_renegotiation] [-no_renegotiation] [-no_resumption_on_reneg] [-legacy_server_connect] [-no_legacy_server_connect] [-no_etm] [-allow_no_dhe_kex] [-prefer_no_dhe_kex] [-prioritize_chacha] [-strict] [-sigalgs algs] [-client_sigalgs algs] [-groups groups] [-curves curves] [-named_curve curve] [-cipher ciphers] [-ciphersuites 1.3ciphers] [-min_protocol minprot] [-max_protocol maxprot] [-record_padding padding] [-debug_broken_protocol] [-no_middlebox] [-xkey infile] [-xcert file] [-xchain file] [-xchain_build file] [-xcertform DER|PEM]> [-xkeyform DER|PEM]> [-CAfile file] [-no-CAfile] [-CApath dir] [-no-CApath] [-CAstore uri] [-no-CAstore] [-rand files] [-writerand file] [-engine id] [-provider name] [-provider-path path] [-provparam [name:]key=value] [-propquery propq] [-enable_server_rpk] [-enable_client_rpk]

این دستور یک سرور همگانی SSL/TLS را پیاده‌سازی می‌کند که با استفاده از SSL/TLS به اتصالات روی یک درگاه مشخص گوش می‌دهد.

علاوه بر گزینه‌های زیر، این دستور از گزینه‌های عمومی و مخصوص سرور که در بخش "دستورات خط فرمان پشتیبانی‌شده" در SSL_CONF_cmd(3) مستند شده‌اند نیز پشتیبانی می‌کند.

چاپ یک پیام راهنمای نحوه استفاده.
درگاه TCP برای گوش دادن به اتصالات. در صورت مشخص نشدن، از 4433 استفاده می‌شود.
میزبان و درگاه TCP اختیاری برای گوش دادن به اتصالات. در صورت مشخص نشدن، از *:4433 استفاده می‌شود.
سوکت دامنه یونیکس برای پذیرش اتصالات.
-4
فقط استفاده از IPv4.
-6
فقط استفاده از IPv6.
برای گزینه -unix، ابتدا هر سوکت موجود را حذف (unlink) می‌کند.
شناسه زمینه (context id) اس‌اس‌ال را تنظیم می‌کند. می‌توان هر مقدار رشته‌ای به آن اختصاص داد. اگر این گزینه مشخص نشود، یک مقدار پیش‌فرض استفاده خواهد شد.
عمق اعتبارسنجی مورد استفاده. این مقدار حداکثر طول زنجیره گواهی کلاینت را مشخص کرده و باعث می‌شود سرور از کلاینت درخواست گواهی کند. با گزینه -verify گواهی درخواست می‌شود اما کلاینت ملزم به ارسال آن نیست؛ با گزینه -Verify کلاینت باید حتماً گواهی ارائه دهد وگرنه خطایی رخ می‌دهد.

اگر مجموعه رمز نتواند گواهی کلاینت درخواست کند (برای مثال یک مجموعه رمز ناشناس یا PSK)، این گزینه هیچ تأثیری ندارد.

به‌طور پیش‌فرض، اعتبارسنجی هر گواهی ارائه‌شده کلاینت و زنجیره آن بر اساس هدف کلاینت (D)TLS ("sslclient") انجام می‌شود. برای جزئیات بیشتر به بخش "پسوندهای گواهی" در openssl-verification-options(1) مراجعه کنید.

گواهی مورد استفاده؛ اغلب مجموعه‌های رمز سرور نیازمند استفاده از یک گواهی هستند و برخی به گواهی با نوع کلید عمومی خاصی نیاز دارند: برای مثال مجموعه‌های رمز DSS نیازمند گواهی حاوی کلید DSS (DSA) هستند. در صورت مشخص نشدن، از نام فایل server.pem استفاده خواهد شد.
فایل گواهی مورد استفاده برای servername؛ پیش‌فرض "server2.pem" است.
قالب فایل گواهی سرور؛ به‌طور پیش‌فرض نامشخص است. برای جزئیات بیشتر به openssl-format-options(1) مراجعه کنید.
یک فایل یا شناسه یکتای منبع (URI) از گواهی‌های غیرقابل‌اعتماد برای استفاده هنگام تلاش جهت ساخت زنجیره گواهی مرتبط با گواهی مشخص‌شده از طریق گزینه -cert. این گواهی‌های غیرقابل‌اعتماد به کلاینت‌ها ارسال شده و برای تولید درخواست‌های وضعیت گواهی (معروف به OCSP stapling) استفاده می‌شوند. ورودی می‌تواند در قالب PEM، DER یا PKCS#12 باشد.
مشخص می‌کند که آیا برنامه باید زنجیره گواهی سرور را جهت ارائه به کلاینت بسازد یا خیر.
فایلی حاوی یک یا چند بلوک از داده‌های PEM. هر بلوک PEM باید یک افزونه TLS ServerHello را کدگذاری کند (۲ بایت نوع، ۲ بایت طول، به همراه «طول» بایت از داده‌های افزونه). اگر کلاینت یک افزونه خالی TLS ClientHello منطبق با این نوع ارسال کند، افزونه متناظر ServerHello بازگردانده خواهد شد.
کلید خصوصی مورد استفاده. در صورت مشخص نشدن، از فایل گواهی استفاده خواهد شد.
فایل کلید خصوصی مورد استفاده برای servername در صورتی که از طریق -cert2 مشخص نشده باشد.
قالب کلید؛ به‌طور پیش‌فرض نامشخص است. برای جزئیات بیشتر به openssl-format-options(1) مراجعه کنید.
منبع گذرواژه کلید خصوصی و فایل گواهی. برای اطلاعات بیشتر درباره قالب val، به openssl-passphrase-options(1) مراجعه کنید.
تعیین یک گواهی و کلید خصوصی اضافی؛ این گزینه‌ها همانند گزینه‌های -cert و -key عمل می‌کنند، به جز اینکه در صورت مشخص نشدن، هیچ مقدار پیش‌فرضی وجود ندارد (از هیچ گواهی و کلید اضافی استفاده نمی‌شود). همان‌طور که در بالا ذکر شد، برخی از مجموعه‌های رمز نیازمند گواهی حاوی کلیدی از یک نوع خاص هستند. برخی از مجموعه‌های رمز به گواهی حاوی کلید RSA و برخی به کلید DSS (DSA) نیاز دارند. با استفاده از گواهی‌ها و کلیدهای RSA و DSS، یک سرور می‌تواند با استفاده از گواهی مناسب، از کلاینت‌هایی که فقط از مجموعه‌های رمز RSA یا DSS پشتیبانی می‌کنند، پشتیبانی کند.
یک فایل یا شناسه یکتای منبع (URI) از گواهی‌های غیرقابل‌اعتماد برای استفاده هنگام تلاش جهت ساخت زنجیره گواهی سرور، زمانی که گواهی مشخص‌شده از طریق گزینه -dcert در حال استفاده است. ورودی می‌تواند در قالب PEM، DER یا PKCS#12 باشد.
قالب فایل گواهی اضافی؛ به‌طور پیش‌فرض نامشخص است. برای جزئیات بیشتر به openssl-format-options(1) مراجعه کنید.
قالب کلید خصوصی اضافی؛ به‌طور پیش‌فرض نامشخص است. برای جزئیات بیشتر به openssl-format-options(1) مراجعه کنید.
عبارت عبور برای کلید خصوصی و گواهی اضافی. برای اطلاعات بیشتر درباره قالب val، به openssl-passphrase-options(1) مراجعه کنید.
ورودی/خروجی مسدودنشدنی (غیرمسدودکننده) را آزمایش می‌کند.
این گزینه کاراکتر تعویض خط (line feed) دریافتی از ترمینال را به CR+LF تبدیل می‌کند.
اطلاعات اشکال‌زدایی گسترده از جمله تخلیه هگزادسیمال (hex dump) تمام ترافیک را چاپ می‌کند.
خروجی فریم‌ورک امنیتی SSL/TLS را چاپ می‌کند.
خروجی بیشتری از فریم‌ورک امنیتی SSL/TLS را چاپ می‌کند.
تمام پیام‌های پروتکل را همراه با تخلیه هگز (hex dump) نمایش می‌دهد.
فایلی برای ارسال خروجی -msg یا -trace به آن؛ در حالت پیش‌فرض خروجی استاندارد است.
وضعیت‌های نشست SSL را چاپ می‌کند.
فایل CRL مورد استفاده.
فرمت فایل CRL؛ در حالت پیش‌فرض تعیین‌نشده است. برای جزئیات بیشتر به openssl-format-options(1) مراجعه کنید.
فهرست‌های ابطال گواهی (CRL) را از نقاط توزیع ارائه‌شده در افزونه‌های CDP گواهی‌ها دانلود می‌کند.
یک فایل با فرمت PEM حاوی گواهی‌های معتبر CA (ریشه و/یا میانی) که برای اعتبارسنجی زنجیره گواهی کلاینت استفاده می‌شود.
یک دایرکتوری حاوی گواهی‌های معتبر برای استفاده در اعتبارسنجی گواهی‌های کلاینت. این دایرکتوری باید در «فرمت هش» (hash format) باشد؛ برای اطلاعات بیشتر به openssl-verify(1) مراجعه کنید.
شناسه یکتای منبع (URI) یک مخزن حاوی گواهی‌های معتبر برای استفاده در اعتبارسنجی گواهی‌های کلاینت.

هنگامی که هر یک از گزینه‌های -verifyCAfile، -verifyCApath یا -verifyCAstore مشخص شوند، در یک مخزن اعتبارسنجی جداگانه (از طریق SSL_CTX_set1_verify_cert_store(3)) بارگذاری شده و به جای مخزن ساخته‌شده از -CAfile، -CApath و -CAstore برای اعتبارسنجی گواهی کلاینت استفاده می‌شوند. توجه داشته باشید که -CAfile تنها منبع نام‌های مراجع صدور گواهی (CA) مجاز و صادرکننده‌ای است که در طول مصافحه در پیام Certificate Request برای کلاینت ارسال می‌شوند؛ گزینه‌های -CApath، -CAstore و گزینه‌های -verifyCA* در این فهرست نقشی ندارند.

یک فایل با فرمت PEM حاوی گواهی‌های معتبر برای استفاده هنگام تلاش برای ساخت زنجیره گواهی سرور.
یک دایرکتوری حاوی گواهی‌های معتبر برای استفاده در ساخت زنجیره گواهی سرور که به کلاینت ارائه می‌شود. این دایرکتوری باید در «فرمت هش» (hash format) باشد؛ برای اطلاعات بیشتر به openssl-verify(1) مراجعه کنید.
شناسه یکتای منبع (URI) یک مخزن حاوی گواهی‌های معتبر برای استفاده در ساخت زنجیره گواهی سرور که به کلاینت ارائه می‌شود. این URI ممکن است یک گواهی تکی یا مجموعه‌ای از آنها را نشان دهد. با URIهایی در طرح‌واره "file:"، این گزینه بسته به اینکه URI نشان‌دهنده یک دایرکتوری یا یک فایل تکی باشد، مانند -chainCAfile یا -chainCApath عمل می‌کند. برای اطلاعات بیشتر درباره طرح‌واره "file:" به ossl_store-file(7) مراجعه کنید.
اگر این گزینه تنظیم شود، هیچ گواهی‌ای استفاده نمی‌شود. این کار مجموعه الگوریتم‌های رمزنگاری در دسترس را به موارد ناشناس (در حال حاضر فقط DH ناشناس) محدود می‌کند.
از چاپ اطلاعات نشست و گواهی جلوگیری می‌کند.
در صورت استفاده از (EC)DH زودگذر (ephemeral)، کش‌کردن و بلیت‌ها را غیرفعال می‌کند.
تخلیه هگزادسیمال (hex dump) هرگونه افزونه TLS دریافت‌شده از سرور را چاپ می‌کند.
هنگام اتصال کلاینت، یک پیام وضعیت برای آن ارسال می‌کند. این پیام شامل اطلاعاتی درباره رمزهای مورداستفاده و پارامترهای گوناگون نشست است. خروجی در قالب HTML است، بنابراین این گزینه می‌تواند با یک مرورگر وب استفاده شود. نشانی ویژه "/renegcert" اعتبارسنجی گواهی کلاینت را فعال می‌کند، و "/reneg" به سرور می‌گوید که درخواست مذاکره مجدد (renegotiation) بدهد.
یک وب‌سرور ساده را شبیه‌سازی می‌کند. صفحات به صورت وابسته به دایرکتوری جاری حل می‌شوند؛ به عنوان مثال اگر آدرس "https://myhost/page.html" درخواست شود، فایل ./page.html ارسال خواهد شد. اگر فلگ -HTTP استفاده شود، فایل‌ها مستقیماً ارسال می‌شوند و باید حاوی تمام هدرهای پاسخ HTTP (شامل خط پاسخ وضعیت) باشند. اگر گزینه -WWW استفاده شود، هدرهای پاسخ توسط سرور تولید می‌شوند و پسوند فایل برای تعیین هدر Content-Type بررسی می‌شود. پسوندهای "html"، "htm" و "php" به عنوان "text/html" و سایر موارد به عنوان "text/plain" در نظر گرفته می‌شوند. علاوه بر این، نشانی ویژه "/stats" اطلاعات وضعیت را مانند گزینه -www برمی‌گرداند.
هنگام عمل کردن به عنوان وب‌سرور (با استفاده از گزینه -WWW یا -HTTP)، فایل‌های درخواستی از سوی کلاینت را در حالت باینری (دودویی) باز می‌کند.
افزونه CA Names در TLS را غیرفعال می‌کند. ممکن است بخواهید به دلایل امنیتی یا به منظور سازگاری با برخی پیاده‌سازی‌های TLS ویندوز که در صورت بزرگ‌تر بودن این افزونه از ۱۰۲۴ بایت کرش می‌کنند، آن را غیرفعال کنید.
برخی از پیاده‌سازی‌های TLS هنگام خاموش کردن اتصال، هشدار اجباری close_notify را ارسال نمی‌کنند. اگر برنامه سعی کند منتظر هشدار close_notify بماند اما طرف مقابل اتصال را بدون ارسال آن ببندد، خطا تولید می‌شود. هنگامی که این گزینه فعال باشد، طرف مقابل نیازی به ارسال هشدار close_notify ندارد و با یک اتصال بسته‌شده طوری رفتار می‌شود که گویی هشدار close_notify دریافت شده است. برای اطلاعات بیشتر درباره بستن یک اتصال، به SSL_shutdown(3) مراجعه کنید.
نام سرور (Servername) برای افزونه TLS از نوع HostName.
در صورت عدم تطابق نام سرور، یک هشدار مهلک (fatal alert) ارسال می‌کند (پیش‌فرض: هشدار اخطار).
شناسه‌های نشست SSL/TLS را با پیشوند val تولید می‌کند. این گزینه عمدتاً برای آزمایش کدهای SSL/TLS (مانند پروکسی‌ها) کاربرد دارد که قصد دارند با چندین سرور کار کنند، در شرایطی که ممکن است هر یک از آنها بازه منحصربه‌فردی از شناسه‌های نشست را تولید نمایند (مثلاً با یک پیشوند خاص).
صادر کردن مواد کلیدسازی با استفاده از برچسب.
صادر کردن تعداد بایت‌های مشخص‌شده از مواد کلیدسازی؛ پیش‌فرض ۲۰ است.
غیرفعال کردن حافظه موقت (کش) نشست.
غیرفعال کردن کش داخلی، و راه‌اندازی و استفاده از کش خارجی.
خطاهای اعتبارسنجی معمولاً به منظور اشکال‌زدایی تنها یک پیام چاپ کرده و اجازه می‌دهند اتصال ادامه یابد. اگر از این گزینه استفاده شود، خطاهای اعتبارسنجی موجب بستن اتصال می‌شوند.
عدم نمایش خروجی اعتبارسنجی به جز خطاهای اعتبارسنجی.
نادیده گرفتن EOF ورودی (پیش‌فرض: هنگامی که -quiet فعال باشد).
نادیده نگرفتن EOF ورودی.
غیرفعال کردن مذاکره راز اصلی گسترش‌یافته (Extended Master Secret).
پشتیبانی از درخواست وضعیت گواهی (معروف به منگنه کردن OCSP یا OCSP stapling) را فعال می‌کند: در صورت درخواست کلاینت، یک پاسخ OCSP برای گواهی برگ (سرور) ارائه می‌شود.
مشابه گزینه قبل، اما برای TLS v1.3 و فراتر از آن، در صورت درخواست کلاینت، پاسخ‌های وضعیت برای تمام گواهی‌های موجود در زنجیره (به جز لنگر اعتماد یا trust anchor) ارائه می‌شود.
پشتیبانی از درخواست وضعیت گواهی (معروف به OCSP stapling) را فعال کرده و خروجی مفصلی از پاسخ OCSP ارائه می‌دهد. از گزینه -cert_chain برای مشخص کردن گواهی امضاکننده گواهی سرور که برای درخواست‌های وضعیت گواهی مورد نیاز است، استفاده کنید.
مهلت زمانی (timeout) برای پاسخ OCSP را به int ثانیه تنظیم می‌کند.
سرور پروکسی HTTP(S) مورد استفاده برای دسترسی به سرور OCSP، مگر اینکه -no_proxy اعمال شود؛ به توضیحات زیر مراجعه کنید. اگر رشته میزبان یک آدرس IPv6 باشد، باید درون "[" و "]" قرار گیرد. درگاه (پورت) پروکسی در صورت استفاده از طرح "https" به طور پیش‌فرض ۴۴۳ و در غیر این صورت ۸۰ است؛ به جز این موارد، پیشوند اختیاری "http://" یا "https://" نادیده گرفته می‌شود، همچنین هرگونه بخش‌های اطلاعات کاربر (userinfo)، مسیر (path)، پرس‌وجو (query) و قطعه (fragment) نادیده گرفته می‌شوند. در صورت تنظیم بودن، مقدار پیش‌فرض از متغیر محیطی "http_proxy" گرفته می‌شود، در غیر این صورت اگر از TLS استفاده نشود از "HTTP_PROXY"، وگرنه از "https_proxy" در صورت تنظیم، یا "HTTPS_PROXY" استفاده می‌شود.
فهرستی از نشانی‌های IP یا نام‌های DNS سرورهایی که نباید از پروکسی HTTP(S) برای آن‌ها استفاده شود، که با کاما یا فاصله‌های خالی از هم جدا شده‌اند (در مورد دوم کل آرگومان باید درون "..." قرار گیرد). مقدار پیش‌فرض در صورت تنظیم بودن از متغیر محیطی "no_proxy" و در غیر این صورت از "NO_PROXY" گرفته می‌شود.
یک نشانی وب (URL) پاسخ‌دهنده رزرو (fallback) را تنظیم می‌کند تا در صورت عدم وجود نشانی پاسخ‌دهنده در گواهی سرور استفاده شود. بدون این گزینه، اگر گواهی سرور شامل نشانی پاسخ‌دهنده نباشد، خطایی بازگردانده می‌شود. بخش‌های اختیاری userinfo و fragment در نشانی اینترنتی نادیده گرفته می‌شوند. هر بخش پرس‌وجوی (query) داده‌شده به عنوان بخشی از مسیر (path) رسیدگی می‌شود.
تمام نشانی‌های پاسخ‌دهنده OCSP از گواهی را لغو کرده و همیشه پاسخ OCSP ذخیره‌شده در فایل را ارائه می‌دهد. این فایل باید در قالب DER باشد. این گزینه می‌تواند چندین بار برای مشخص کردن پاسخ‌های OCSP برای تمام گواهی‌های موجود در زنجیره گواهی سرور استفاده شود.
پیکربندی SSL_CTX با استفاده از مقدار پیکربندی داده‌شده.
نمایش خروجی ردگیری (trace) مفصل از پیام‌های پروتکل.
ارائه خلاصه‌ای مختصر از پارامترهای اتصال به جای خروجی مفصل و معمول.
یک سرور بازتابی (echo) ساده که متن دریافت‌شده را به صورت معکوس بازمی‌فرستد. همچنین گزینه -brief را تنظیم می‌کند. نمی‌تواند همراه با -early_data استفاده شود.
فعال کردن حالت ناهمگام (asynchronous). عملیات رمزنگاری به صورت ناهمگام انجام خواهند شد. این گزینه تنها زمانی تأثیر خواهد داشت که از طریق گزینه -engine از موتوری با قابلیت ناهمگام نیز استفاده شده باشد. برای اهداف آزمایشی، می‌توان از موتور ناهمگام ساختگی (dasync) استفاده کرد (در صورت دردسترس بودن).
حداکثر اندازه قطعه داده (fragment) برای ارسال. برای اطلاعات بیشتر به SSL_CTX_set_max_send_fragment(3) مراجعه کنید.
اندازه مورد استفاده برای تقسیم داده‌ها برای خط‌لوله‌های (پایپ‌لاین‌های) رمزگذاری. اگر در یک مرحله داده‌های بیشتری نسبت به این مقدار نوشته شود، به چندین خط‌لوله (پایپ‌لاین) تقسیم می‌شود، حداکثر تا تعداد خط‌لوله‌های تعیین‌شده توسط max_pipelines. این گزینه تنها در صورتی تأثیر دارد که مجموعه رمزنگاری مناسبی مذاکره شده باشد، موتوری که از خط‌لوله پشتیبانی می‌کند بارگذاری شده باشد، و max_pipelines بزرگ‌تر از ۱ باشد. برای اطلاعات بیشتر به SSL_CTX_set_split_send_fragment(3) مراجعه کنید.
حداکثر تعداد خط‌لوله‌های (پایپ‌لاین‌های) رمزگذاری/رمزگشایی مورد استفاده. این گزینه تنها زمانی تأثیر دارد که موتوری با قابلیت پشتیبانی از خط‌لوله بارگذاری شده باشد (مانند موتور dasync) و مجموعه رمزنگاری مناسبی مذاکره شده باشد. مقدار پیش‌فرض ۱ است. برای اطلاعات بیشتر به SSL_CTX_set_max_pipelines(3) مراجعه کنید.
سرور پس از دریافت تعداد مشخص‌شده‌ای از اتصالات خارج می‌شود؛ پیش‌فرض نامحدود است.
اندازه پیش‌فرض بافر خواندن مورد استفاده برای اتصالات. این گزینه تنها در صورتی تأثیر خواهد داشت که اندازه بافر بزرگ‌تر از اندازه‌ای باشد که در غیر این صورت استفاده می‌شد و خط‌لوله (پایپ‌لاین) در حال استفاده باشد (برای اطلاعات بیشتر به SSL_CTX_set_default_read_buffer_len(3) مراجعه کنید).
پشتیبانی از ارسال گواهی‌های فشرده‌سازی‌شده در TLSv1.3 را غیرفعال می‌کند.
پشتیبانی از دریافت گواهی‌های فشرده‌سازی‌شده در TLSv1.3 را غیرفعال می‌کند.
غیرفعال کردن مذاکره برای فشرده‌سازی TLS. فشرده‌سازی TLS توصیه نمی‌شود و از زمان OpenSSL 1.1.0 به طور پیش‌فرض غیرفعال است.
کنترل تعداد بلیت‌هایی (tickets) که پس از یک دست‌تکانی کامل در TLSv1.3 برای کلاینت ارسال می‌شود. تعداد پیش‌فرض بلیت‌ها ۲ است. این گزینه بر تعداد بلیت‌های ارسال‌شده پس از یک دست‌تکانی ازسرگیری تأثیری ندارد.
فایل پارامترهای DH مورد استفاده. مجموعه‌های رمزنگاری زودگذر DH (موسوم به Ephemeral DH) کلیدها را با استفاده از مجموعه‌ای از پارامترهای DH تولید می‌کنند. در صورت عدم تعیین، تلاشی برای بارگذاری پارامترها از فایل گواهی سرور انجام می‌شود. اگر این اقدام ناموفق باشد، از یک مجموعه پارامترهای ایستا که در کد این دستور گنجانده شده استفاده خواهد شد.
ورودی/خروجی (I/O) غیرمسدودکننده را فعال می‌کند.
فعال کردن مهلت‌های زمانی.
تنظیم MTU لایه پیوند (link-layer).
هنگام استفاده از یک مجموعه رمزنگاری PSK، انتظار دارد که کلاینت شناسه هویت PSK مقدار val را ارسال کند و در صورت عدم ارسال هشدار می‌دهد. به طور پیش‌فرض، شناسه PSK مورد انتظار رشته "Client_identity" است.
استفاده از راهنمای شناسه هویت PSK مقدار val هنگام استفاده از یک مجموعه رمزنگاری PSK.
استفاده از کلید PSK مقدار val هنگام استفاده از یک مجموعه رمزنگاری PSK. کلید به صورت یک عدد هگزادسیمال بدون پیشوند 0x مشخص می‌شود، برای مثال -psk 1a2b3c4d. این گزینه باید به منظور استفاده از یک رمزنگار PSK ارائه شود.
استفاده از داده‌های SSL_SESSION با کدگذاری pem که در file ذخیره شده است به عنوان مبنای یک PSK. توجه داشته باشید که این گزینه تنها در صورتی کار می‌کند که TLSv1.3 مذاکره شده باشد.
فایل اعتبارسنج برای SRP. این گزینه منسوخ شده است.
یک رشته بذر (seed) برای سالت (salt) پیش‌فرض کاربر. این گزینه منسوخ شده است.
این گزینه فقط می‌تواند در ارتباط با یکی از گزینه‌های DTLS در بالا استفاده شود. با این گزینه، این دستور برای اتصالات ورودی روی یک پورت UDP به گوش ایستاده (شنود) می‌کند. هر ClientHello دریافتی بررسی می‌شود تا مشخص گردد آیا حاوی یک کوکی است یا خیر. به هر موردی که بدون کوکی باشد، با یک HelloVerifyRequest پاسخ داده خواهد شد. اگر یک ClientHello همراه با کوکی دریافت شود، این دستور به آن همتا متصل شده و دست‌تکانی (هندشیک) را تکمیل خواهد کرد.
استفاده از پروتکل انتقال SCTP به جای UDP در DTLS. باید همراه با -dtls، -dtls1 یا -dtls1_2 به کار رود. این گزینه تنها در صورتی در دسترس است که در OpenSSL پشتیبانی از SCTP فعال شده باشد.
استفاده از رفتار نادرست پیاده‌سازی‌های قدیمی‌تر OpenSSL هنگام محاسبه اسرار مشترک جفت‌نقطه پایانی (endpoint-pair shared secrets) برای DTLS/SCTP. این کار امکان برقراری ارتباط با پیاده‌سازی‌های معیوب قدیمی‌تر را فراهم می‌کند، اما سازگاری‌پذیری با پیاده‌سازی‌های درست را از بین می‌برد. باید همراه با -sctp به کار رود. این گزینه تنها زمانی در دسترس است که پشتیبانی از SCTP در OpenSSL فعال باشد.
ارائه مدیریت کلید SRTP به همراه فهرستی از پروفایل‌ها که با دونقطه (:) از هم جدا شده‌اند.
اگر این گزینه تنظیم شود، هیچ پارامتر DH بارگذاری نخواهد شد که در عمل مجموعه‌های رمزنگاری موقت DH (ephemeral DH) را غیرفعال می‌کند.
این فلگ‌ها به ترتیب افزونه Application-Layer Protocol Negotiation (ALPN) یا Next Protocol Negotiation (NPN) را فعال می‌کنند. ALPN استاندارد IETF بوده و جایگزین NPN است. فهرست val فهرستی جداشده با کاما از نام‌های پروتکل‌های پشتیبانی‌شده است. این فهرست باید ابتدا شامل مطلوب‌ترین پروتکل‌ها باشد. نام‌های پروتکل رشته‌های اسکی قابل چاپ هستند، برای نمونه "http/1.1" یا "spdy/3". در صورت استفاده از -tls1_3، فلگ -nextprotoneg نمی‌تواند مشخص شود.
فعال‌سازی Kernel TLS برای ارسال و دریافت. این گزینه در OpenSSL 3.2.0 معرفی شد. از نسخه OpenSSL 3.2.0، قابلیت Kernel TLS به‌طور پیش‌فرض غیرفعال است.
اگر این گزینه تنظیم شود و KTLS فعال باشد، به جای BIO_write() از SSL_sendfile() برای ارسال پاسخ HTTP درخواستی کلاینت استفاده خواهد شد. این گزینه فقط زمانی معتبر است که -ktls همراه با -WWW یا -HTTP مشخص شده باشد.
اگر این گزینه تنظیم شود، SSL_sendfile() از حالت انتقال بدون رونوشت (zerocopy TX mode) استفاده می‌کند که هنگام استفاده با تخلیه بار سخت‌افزاری (hardware offload) KTLS کارایی را ارتقا می‌دهد. توجه داشته باشید که اگر فایل در حال ارسال تغییر کند، ممکن است رکوردهای TLS نامعتبر منتقل شوند. این گزینه به -sendfile وابسته است؛ هنگامی که به تنهایی استفاده شود، -sendfile به‌طور ضمنی در نظر گرفته شده و یک هشدار نمایش داده می‌شود. توجه داشته باشید که sendfile در KTLS روی FreeBSD همواره در حالت zerocopy اجرا می‌شود.
اسرار TLS را به فایل لاگ کلید (keylog) مشخص‌شده پیوست می‌کند تا برنامه‌های خارجی (مانند Wireshark) بتوانند اتصالات TLS را رمزگشایی نمایند.
تغییر حداکثر بایت‌های پیش‌فرض داده‌های اولیه (early data) که برای نشست‌های جدید و هر داده اولیه ورودی (هنگام استفاده همراه با فلگ -early_data) مشخص می‌شوند. مقدار پیش‌فرض تقریباً 16k است. این آرگومان باید یک عدد صحیح بزرگ‌تر یا مساوی با ۰ باشد.
تعیین حد سخت‌گیرانه روی حداکثر تعداد بایت‌های داده‌های اولیه که پذیرفته خواهند شد.
پذیرش داده‌های اولیه در صورت امکان. نمی‌تواند همراه با -www، -WWW، -HTTP یا -rev استفاده شود.
کوکی‌های TLSv1.3 را الزامی می‌کند.
به ترتیب محافظت در برابر بازپخش (Replay) را روشن یا خاموش می‌کند. محافظت در برابر بازپخش (Replay) به‌طور پیش‌فرض روشن است مگر اینکه توسط یک فایل پیکربندی بازنویسی شود. هنگامی که روشن است، OpenSSL به‌طور خودکار تشخیص می‌دهد که آیا یک بلیت نشست (session ticket) بیش از یک بار استفاده شده است، TLSv1.3 مذاکره شده و داده‌های اولیه روی سرور فعال است یا خیر. در صورتی که بلیت نشست برای بار دوم یا دفعات بعدی استفاده شود، یک دست‌تکانی (هندشیک) کامل تحمیل می‌شود. هر داده اولیه‌ای که ارسال شده باشد رد خواهد شد.

توجه داشته باشید که سرور یک حافظه نهان (کَش) داخلی از بلیت‌های نشست را مدیریت می‌کند. اگر کلاینت اتصال را بدون ارسال هشدار close_notify ببندد، بلیت نشست متناظر حذف شده و یک دست‌تکانی (هندشیک) کامل تحمیل می‌گردد.

فعال‌سازی پذیرش اتصالات TCP Fast Open (RFC7413).
گواهی‌هایی (RFC8879) را که در طول دست‌تکانی (هندشیک) ارسال خواهند شد، از قبل فشرده می‌کند.
مشخص می‌کند که نام‌های موضوع (subject) یا صادرکننده (issuer) چگونه نمایش داده شوند. برای جزئیات بیشتر به openssl-namedisplay-options(1) مراجعه کنید.
به بخش «گزینه‌های نسخه TLS» (TLS Version Options) در openssl(1) مراجعه کنید.
این گزینه‌ها استفاده از DTLS به جای TLS را مشخص می‌کنند. به بخش «گزینه‌های نسخه TLS» (TLS Version Options) در openssl(1) مراجعه کنید.
برای جزئیات بیشتر به بخش «SUPPORTED COMMAND LINE COMMANDS» در SSL_CONF_cmd(3) مراجعه کنید.
تنظیم گزینه‌های گسترده اعتبارسنجی گواهی. برای جزئیات بیشتر به بخش «گزینه‌های اعتبارسنجی گسترده» (Extended Verification Options) در openssl-verification-options(1) مراجعه کنید.
برای جزئیات بیشتر به بخش «گزینه‌های گواهی مورد اعتماد» (Trusted Certificate Options) در openssl-verification-options(1) مراجعه کنید.
برای جزئیات بیشتر به بخش «گزینه‌های وضعیت تصادفی» (Random State Options) در openssl(1) مراجعه کنید.
به بخش «گزینه‌های موتور» (Engine Options) در openssl(1) مراجعه کنید. این گزینه منسوخ شده است.
به بخش «گزینه‌های ارائه‌دهنده» (Provider Options) در openssl(1)، provider(7) و property(7) مراجعه کنید.
تنظیم گزینه‌های گوناگون اعتبارسنجی زنجیره گواهی. برای جزئیات بیشتر به بخش «گزینه‌های اعتبارسنجی» (Verification Options) در openssl-verification-options(1) مراجعه کنید.

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

فعال‌سازی پشتیبانی از ارسال کلید عمومی خام (RPK) (RFC7250) به کلاینت. در صورت درخواست کلاینت و به شرط پیکربندی یک جفت کلید و گواهی عمومی مناسب، یک کلید عمومی خام (RPK) توسط سرور ارسال خواهد شد. کلاینت‌هایی که از کلید عمومی خام (RPK) پشتیبانی نمی‌کنند یا ترجیح می‌دهند از گواهی‌های X.509 استفاده نمایند، همچنان می‌توانند طبق معمول دریافت گواهی‌های X.509 را انتخاب کنند.

کلیدهای عمومی خام (RPK) از گواهی/کلید خصوصی پیکربندی‌شده استخراج می‌شوند.

فعال‌سازی پشتیبانی از دریافت کلید عمومی خام (RPK) (RFC7250) از کلاینت. استفاده از گواهی‌های X.509 توسط کلاینت اختیاری می‌شود، و کلاینت‌هایی که از کلید عمومی خام (RPK) پشتیبانی می‌کنند می‌توانند استفاده از آن‌ها را انتخاب نمایند. کلاینت‌هایی که از کلید عمومی خام (RPK) پشتیبانی نمی‌کنند یا ترجیح می‌دهند از گواهی‌های X.509 استفاده کنند، همچنان می‌توانند طبق معمول ارسال گواهی‌های X.509 را انتخاب نمایند.

کلیدهای عمومی خام (RPK) از گواهی/کلید خصوصی پیکربندی‌شده استخراج می‌شوند.

اگر درخواست اتصالی با یک کلاینت SSL برقرار شود و از هیچ‌یک از گزینه‌های -www یا -WWW استفاده نشده باشد، در این صورت معمولاً هر داده‌ای که از کلاینت دریافت شود نمایش داده شده و فشردن هر کلیدی به کلاینت ارسال خواهد شد.

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

پایان دادن به اتصال فعلی SSL، اما همچنان پذیرش اتصالات جدید.
پایان دادن به اتصال فعلی SSL و خروج.
مذاکره مجدد نشست SSL (فقط در TLSv1.2 و پایین‌تر).
مذاکره مجدد نشست SSL و درخواست گواهی کلاینت (فقط در TLSv1.2 و پایین‌تر).
ارسال مقداری متن ساده روی اتصال TCP زیرین؛ این کار باید باعث قطع اتصال کلاینت به دلیل نقض پروتکل شود.
چاپ برخی اطلاعات مربوط به وضعیت کش نشست.
ارسال یک پیام به‌روزرسانی کلید به کلاینت (فقط در TLSv1.3).
ارسال یک پیام به‌روزرسانی کلید به کلاینت و درخواست متقابل آن از کلاینت (فقط در TLSv1.3).
ارسال یک درخواست گواهی به کلاینت (فقط در TLSv1.3).

این دستور می‌تواند برای اشکال‌زدایی کلاینت‌های SSL استفاده شود. برای پذیرش اتصالات از یک مرورگر وب، می‌توان به عنوان مثال از دستور:

openssl s_server -accept 443 -www

استفاده کرد.

اگرچه مشخص کردن یک فهرست خالی از CAها هنگام درخواست گواهی کلاینت، از نظر فنی نقض پروتکل است، اما برخی کلاینت‌های SSL این موضوع را به این معنی تفسیر می‌کنند که هر مرجع صدور گواهی (CA) قابل قبول است. این ویژگی برای مقاصد اشکال‌زدایی مفید است.

پارامترهای نشست را می‌توان با استفاده از دستور openssl-sess_id(1) چاپ کرد.

به دلیل اینکه این برنامه گزینه‌های بسیار زیادی دارد و همچنین به دلیل قدیمی بودن برخی از تکنیک‌های به‌کاررفته در آن، سورس کد C این دستور برای خواندن نسبتاً دشوار است و الگویی برای چگونگی انجام درست کارها محسوب نمی‌شود. یک برنامه سرور SSL معمولی بسیار ساده‌تر خواهد بود.

خروجی رمزهای مشترک نادرست است: این خروجی صرفاً فهرستی از رمزهایی را نشان می‌دهد که OpenSSL می‌شناسد و کلاینت از آن‌ها پشتیبانی می‌کند.

باید راهکاری برای این دستور وجود داشته باشد تا بتواند جزئیات هر مجموعه رمزیِ ناشناخته‌ای را که کلاینت اعلام می‌کند پشتیبانی می‌کند، چاپ نماید.

openssl(1), openssl-sess_id(1), openssl-s_client(1), openssl-ciphers(1), SSL_CONF_cmd(3), SSL_CTX_set_max_send_fragment(3), SSL_CTX_set_split_send_fragment(3), SSL_CTX_set_max_pipelines(3), ossl_store-file(7)

گزینه -no_alt_chains در OpenSSL 1.1.0 اضافه شد.

گزینه‌های -allow-no-dhe-kex و -prioritize_chacha در OpenSSL 1.1.1 اضافه شدند.

گزینه‌های -srpvfile، -srpuserseed و -engine در OpenSSL 3.0 منسوخ شدند.

گزینه‌های -enable_client_rpk، -enable_server_rpk، -no_rx_cert_comp، -no_tx_cert_comp و -tfo در OpenSSL 3.2 اضافه شدند.

گزینه -status_all در OpenSSL 3.6 اضافه شد.

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

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

2026-08-25 3.6.4