OPENSSL-S_CLIENT(1ssl) OpenSSL OPENSSL-S_CLIENT(1ssl) نام (NAME) openssl-s_client - ابزار کلاینت عمومی SSL/TLS خلاصه دستور (SYNOPSIS) openssl s_client [-help] [-ssl_config section] [-connect host:port] [-host hostname] [-port port] [-bind host:port] [-proxy host:port] [-proxy_user userid] [-proxy_pass arg] [-unix path] [-4] [-6] [-quic] [-servername name] [-noservername] [-verify depth] [-verify_return_error] [-verify_quiet] [-verifyCAfile filename] [-verifyCApath dir] [-verifyCAstore uri] [-cert filename] [-certform DER|PEM|P12] [-cert_chain filename] [-build_chain] [-CRL filename] [-CRLform DER|PEM] [-crl_download] [-key filename|uri] [-keyform DER|PEM|P12|ENGINE] [-pass arg] [-chainCAfile filename] [-chainCApath directory] [-chainCAstore uri] [-requestCAfile filename] [-dane_tlsa_domain domain] [-dane_tlsa_rrdata rrdata] [-dane_ee_no_namechecks] [-reconnect] [-showcerts] [-prexit] [-no-interactive] [-debug] [-trace] [-nocommands] [-adv] [-security_debug] [-security_debug_verbose] [-msg] [-timeout] [-mtu size] [-no_ems] [-keymatexport label] [-keymatexportlen len] [-msgfile filename] [-nbio_test] [-state] [-nbio] [-crlf] [-ign_eof] [-no_ign_eof] [-psk_identity identity] [-psk key] [-psk_session file] [-quiet] [-sctp] [-sctp_label_bug] [-fallback_scsv] [-async] [-maxfraglen len] [-max_send_frag] [-split_send_frag] [-max_pipelines] [-read_buf] [-ignore_unexpected_eof] [-no_tx_cert_comp] [-no_rx_cert_comp] [-brief] [-starttls protocol] [-xmpphost hostname] [-name hostname] [-tlsextdebug] [-sess_out filename] [-sess_in filename] [-serverinfo types] [-status] [-ocsp_check_leaf] [-ocsp_check_all] [-alpn protocols] [-nextprotoneg protocols] [-ct] [-noct] [-ctlogfile] [-keylogfile file] [-early_data file] [-enable_pha] [-use_srtp value] [-srpuser value] [-srppass value] [-srp_lateuser] [-srp_moregroups] [-srp_strength number] [-ktls] [-tfo] [-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] [-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] [-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] [-rand files] [-writerand file] [-provider name] [-provider-path path] [-provparam [name:]key=value] [-propquery propq] [-engine id] [-ssl_client_engine id] [-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] [-enable_server_rpk] [-enable_client_rpk] [host:port] توضیحات (DESCRIPTION) این دستور یک کلاینت عمومی SSL/TLS را پیاده‌سازی می‌کند که با استفاده از SSL/TLS به یک میزبان راه دور متصل می‌شود. این ابزار، یک ابزار تشخیصی و عیب‌یابی بسیار مفید برای سرورهای SSL است. گزینه‌ها (OPTIONS) علاوه بر گزینه‌های زیر، این دستور از گزینه‌های عمومی و مخصوص کلاینت که در بخش "دستورات خط فرمان پشتیبانی‌شده" صفحه راهنمای SSL_CONF_cmd(3) مستند شده‌اند نیز پشتیبانی می‌کند. -help چاپ یک پیام راهنمای نحوه استفاده. -ssl_config section استفاده از بخش مشخص‌شده در فایل پیکربندی برای پیکربندی شیء SSL_CTX. -connect host:port این گزینه میزبان و پورت اختیاری را برای برقراری اتصال مشخص می‌کند. می‌توان به جای این گزینه، از آرگومان مکانی اختیاری مقصد برای تعیین میزبان و پورت استفاده کرد. اگر نه این گزینه و نه آرگومان مکانی مقصد مشخص نشده باشند، تلاش می‌شود به میزبان محلی (localhost) روی پورت ۴۴۳۳ متصل شود. اگر رشته میزبان یک نشانی IPv6 باشد، باید در "[" و "]" قرار گیرد. -host hostname میزبان برای اتصال؛ به جای آن از -connect استفاده کنید. -port port اتصال به پورت مشخص‌شده؛ به جای آن از -connect استفاده کنید. -bind host:port این گزینه نشانی میزبان و/یا پورت را برای مقیدسازی (bind) به عنوان مبدأ اتصال مشخص می‌کند. برای سوکت‌های دامنه یونیکس، پورت نادیده گرفته شده و از میزبان به عنوان نشانی سوکت مبدأ استفاده می‌شود. اگر رشته میزبان یک نشانی IPv6 باشد، باید در "[" و "]" قرار گیرد. -proxy host:port هنگامی که همراه با فلگ -connect استفاده شود، برنامه از میزبان و پورت مشخص‌شده با این فلگ استفاده کرده و یک دستور HTTP CONNECT برای اتصال به سرور مورد نظر ارسال می‌کند. اگر رشته میزبان یک نشانی IPv6 باشد، باید در "[" و "]" قرار گیرد. -proxy_user userid هنگامی که همراه با فلگ -proxy استفاده شود، برنامه تلاش خواهد کرد با استفاده از احراز هویت پایه‌ای (base64) با پروکسی مشخص‌شده احراز هویت کند. توجه: احراز هویت پایه‌ای ناامن است؛ اطلاعات اعتباری قبل از برقراری هرگونه نشست TLS/SSL در کدگذاری base64 که به سادگی قابل برگشت است به پروکسی ارسال می‌شود. بنابراین، این اطلاعات اعتباری به راحتی توسط هر کسی که بتواند ترافیک شبکه را شنود یا ردیابی کند قابل بازیابی است. با احتیاط استفاده کنید. -proxy_pass arg منبع گذرواژه پروکسی، همراه با فلگ -proxy_user استفاده می‌شود. برای اطلاعات بیشتر درباره قالب arg به openssl-passphrase-options(1) مراجعه کنید. -unix path اتصال از طریق سوکت دامنه یونیکس مشخص‌شده. -4 فقط استفاده از IPv4. -6 فقط استفاده از IPv6. -quic اتصال با استفاده از پروتکل QUIC. در صورت تعیین این گزینه، گزینه -alpn نیز باید ارائه شود. -servername name تنظیم افزونه TLS SNI (نشانگر نام سرور) در پیام ClientHello با مقدار داده‌شده. اگر -servername ارائه نشود، افزونه TLS SNI در صورت تطابق نام داده‌شده به -connect با قالب نام DNS، با آن مقدار پر می‌شود. اگر -connect نیز ارائه نشده باشد، مقدار SNI برابر با "localhost" تنظیم می‌شود. این رفتار از زمان OpenSSL 1.1.1 پیش‌فرض است. اگرچه SNI معمولاً باید یک نام DNS باشد و نه یک نشانی IP، در صورت ارائه -servername همان نام ارسال خواهد شد، صرف‌نظر از اینکه یک نام DNS باشد یا خیر. این گزینه نمی‌تواند همراه با -noservername استفاده شود. -noservername از ارسال افزونه SNI (نشانگر نام سرور) در پیام ClientHello جلوگیری می‌کند. نمی‌تواند همراه با گزینه‌های -servername یا -dane_tlsa_domain استفاده شود. -cert filename گواهی کلاینت برای استفاده، در صورتی که توسط سرور درخواست شده باشد. پیش‌فرض عدم استفاده از گواهی است. زنجیره گواهی کلاینت را می‌توان با استفاده از -cert_chain مشخص کرد. -certform DER|PEM|P12 قالب فایل گواهی کلاینت برای استفاده؛ به طور پیش‌فرض نامشخص است. برای جزئیات به openssl-format-options(1) مراجعه کنید. -cert_chain یک فایل یا شناسه یکتای منبع (URI) از گواهی‌های نامعتمد برای استفاده هنگام تلاش جهت ساخت زنجیره گواهی مرتبط با گواهی مشخص‌شده از طریق گزینه -cert. ورودی می‌تواند در قالب PEM ،DER یا PKCS#12 باشد. -build_chain مشخص می‌کند که آیا برنامه باید زنجیره گواهی کلاینت را برای ارائه به سرور بسازد یا خیر. -CRL filename فایل CRL برای استفاده جهت بررسی گواهی سرور. -CRLform DER|PEM قالب فایل CRL؛ به طور پیش‌فرض نامشخص است. برای جزئیات به openssl-format-options(1) مراجعه کنید. -crl_download بارگیری CRL از نقاط توزیع مشخص‌شده در گواهی. توجه داشته باشید که اگر گزینه -crl_check ارائه نشود، این گزینه نادیده گرفته می‌شود. همچنین حداکثر اندازه CRL توسط تابع X509_CRL_load_http(3) محدود شده است. -key filename|uri کلید خصوصی کلاینت برای استفاده. در صورت عدم تعیین، از فایل گواهی برای خواندن کلید نیز استفاده خواهد شد. -keyform DER|PEM|P12|ENGINE قالب کلید؛ به طور پیش‌فرض نامشخص است. برای جزئیات به openssl-format-options(1) مراجعه کنید. -pass arg منبع گذرواژه کلید خصوصی و فایل گواهی. برای اطلاعات بیشتر درباره قالب arg به openssl-passphrase-options(1) مراجعه کنید. -verify depth عمق اعتبارسنجی مورد استفاده. این گزینه حداکثر طول زنجیره گواهی سرور را مشخص کرده و اعتبارسنجی گواهی سرور را فعال می‌کند. مگر اینکه گزینه -verify_return_error داده شده باشد، عملیات اعتبارسنجی پس از بروز خطا ادامه می‌یابد تا بتوان تمام مشکلات مربوط به زنجیره گواهی را مشاهده کرد. به عنوان یک اثر جانبی، اتصال هرگز به دلیل شکست در اعتبارسنجی گواهی سرور ناموفق نخواهد شد. به طور پیش‌فرض، اعتبارسنجی گواهی‌های سرور و زنجیره آن‌ها با توجه به هدف سرور (D)TLS ("sslserver") انجام می‌شود. برای جزئیات به "افزونه‌های گواهی" در openssl-verification-options(1) مراجعه کنید. -verify_return_error اعتبارسنجی گواهی سرور را همانند -verify فعال می‌کند، اما به جای ادامه دادن، خطاهای اعتبارسنجی را بازمی‌گرداند. این امر معمولاً باعث لغو دست‌تکانی با یک خطای مهلک می‌شود. -verify_quiet محدود کردن خروجی اعتبارسنجی تنها به خطاها. -verifyCAfile filename یک فایل در قالب PEM حاوی گواهی‌های معتمد جهت استفاده برای اعتبارسنجی گواهی سرور. -verifyCApath dir پوشه‌ای حاوی گواهی‌های معتمد جهت استفاده برای اعتبارسنجی گواهی سرور. این پوشه باید در "قالب هش" باشد، برای اطلاعات بیشتر به openssl-verify(1) مراجعه کنید. -verifyCAstore uri شناسه یکتای منبع (URI) یک مخزن حاوی گواهی‌های معتمد جهت استفاده برای اعتبارسنجی گواهی سرور. هنگامی که هر یک از گزینه‌های -verifyCAfile، -verifyCApath یا -verifyCAstore مشخص شوند، در یک مخزن اعتبارسنجی مجزا بارگذاری شده (از طریق SSL_CTX_set1_verify_cert_store(3)) و به جای مخزن ساخته‌شده از -CAfile، -CApath و -CAstore برای اعتبارسنجی گواهی سرور به کار می‌روند. -chainCAfile file یک فایل در قالب PEM حاوی گواهی‌های معتمد جهت استفاده در زمان تلاش برای ساخت زنجیره گواهی کلاینت. -chainCApath directory پوشه‌ای حاوی گواهی‌های معتمد برای ساخت زنجیره گواهی کلاینت ارائه‌شده به سرور. این پوشه باید در "قالب هش" باشد، برای اطلاعات بیشتر به openssl-verify(1) مراجعه کنید. -chainCAstore uri شناسه یکتای منبع (URI) یک مخزن حاوی گواهی‌های معتمد برای استفاده در زمان تلاش جهت ساخت زنجیره گواهی کلاینت. این URI می‌تواند نشان‌دهنده یک گواهی تکی یا مجموعه‌ای از گواهی‌ها باشد. در مورد URIهای دارای طرح‌واره "file:"، بسته به اینکه URI به یک پوشه یا یک فایل تکی اشاره داشته باشد، این گزینه مانند -chainCAfile یا -chainCApath عمل می‌کند. برای اطلاعات بیشتر درباره طرح‌واره "file:" به ossl_store-file(7) مراجعه کنید. -requestCAfile file فایلی حاوی فهرستی از گواهی‌ها که نام‌های موضوعی (subject names) آن‌ها در افزونه certificate_authorities به سرور ارسال خواهد شد. فقط در TLS 1.3 پشتیبانی می‌شود. -dane_tlsa_domain domain احراز هویت RFC6698/RFC7671 DANE TLSA را فعال کرده و دامنه پایه TLSA را مشخص می‌کند که تبدیل به راهنمای پیش‌فرض SNI و شناسه مرجع اصلی برای بررسی نام میزبان می‌شود. این گزینه باید همراه با حداقل یک مورد از گزینه -dane_tlsa_rrdata در زیر استفاده شود. هنگامی که احراز هویت DANE موفقیت‌آمیز باشد، خروجی تشخیصی شامل کمترین عمق (نزدیک‌ترین به 0) خواهد بود که در آن یک رکورد TLSA گواهی زنجیره را احراز هویت کرده است. هنگامی که آن رکورد TLSA یک کلید عمومی لنگر اعتماد (trust anchor) "2 1 0" باشد که بالاترین گواهی زنجیره را امضا کرده است (به جای مطابقت با آن)، نتیجه به صورت "TA public key verified" گزارش می‌شود. در غیر این صورت، رکورد TLSA یا با "matched TA certificate" در یک عمق مثبت مطابقت دارد یا با "matched EE certificate" در عمق 0. -dane_tlsa_rrdata rrdata یک یا چند بار برای تعیین فیلدهای RRDATA در مجموعه رکوردهای DANE TLSA مرتبط با سرویس هدف استفاده می‌شود. مقدار rrdata در "قالب نمایشی" مشخص می‌شود، یعنی چهار فیلد جداشده با فاصله که کاربرد، انتخاب‌گر، نوع تطابق و داده‌های مرتبط را مشخص می‌کنند؛ که آخرین فیلد به صورت هگزادسیمال کدگذاری می‌شود. فاصله‌های خالی اختیاری در فیلد داده‌های مرتبط نادیده گرفته می‌شوند. به عنوان مثال: $ openssl s_client -brief -starttls smtp \ -connect smtp.example.com:25 \ -dane_tlsa_domain smtp.example.com \ -dane_tlsa_rrdata "2 1 1 B111DD8A1C2091A89BD4FD60C57F0716CCE50FEEFF8137CDBEE0326E 02CF362B" \ -dane_tlsa_rrdata "2 1 1 60B87575447DCBA2A36B7D11AC09FB24A9DB406FEE12D2CC90180517 616E8A18" ... Verification: OK Verified peername: smtp.example.com DANE TLSA 2 1 1 ...ee12d2cc90180517616e8a18 matched TA certificate at depth 1 ... -dane_ee_no_namechecks این گزینه بررسی نام سرور را هنگام احراز هویت از طریق رکوردهای TLSA در DANE-EE(3) غیرفعال می‌کند. برای برخی برنامه‌ها، به ویژه مرورگرهای وب، غیرفعال کردن بررسی نام به دلیل حملات "اشتراک کلید ناشناخته" (unknown key share) امن نیست؛ در این حمله یک سرور مخرب می‌تواند کلاینت را متقاعد کند که اتصال به سرور قربانی، در واقع یک اتصال امن به سرور مخرب است. سرور مخرب سپس ممکن است بتواند محدودیت‌های اسکریپت‌نویسی متقاطع (cross-origin) را نقض کند. بنابراین، بر خلاف متن RFC7671، بررسی نام به طور پیش‌فرض برای رکوردهای TLSA در DANE-EE(3) فعال است و می‌توان آن را در برنامه‌هایی که انجام این کار امن است غیرفعال کرد. به ویژه، کلاینت‌های SMTP و XMPP باید این گزینه را تنظیم کنند زیرا رکوردهای SRV و MX از قبل امکان هدایت اتصالات کلاینت به هر سرور دلخواهی را برای دامنه راه دور فراهم می‌کنند و در هر صورت کلاینت‌های SMTP و XMPP اسکریپت‌های بارگیری‌شده از سرورهای راه دور را اجرا نمی‌کنند. -reconnect اتصال مجدد ۵ بار به همان سرور با استفاده از همان شناسه نشست (session ID)؛ این گزینه می‌تواند به عنوان آزمایشی برای بررسی عملکرد صحیح کش‌سازی نشست به کار رود. -showcerts فهرست گواهی‌های سرور را همان‌طور که توسط سرور ارسال شده نمایش می‌دهد: این فهرست فقط شامل گواهی‌هایی است که سرور ارسال کرده است (به همان ترتیبی که سرور فرستاده است). این فهرست یک زنجیره تاییدشده نیست. -prexit چاپ اطلاعات نشست در هنگام خروج برنامه. این گزینه همیشه تلاش می‌کند اطلاعات را حتی در صورت ناموفق بودن اتصال چاپ کند. در حالت عادی، اطلاعات تنها در صورت موفقیت‌آمیز بودن اتصال چاپ می‌شود. این گزینه از این جهت مفید است که رمز مورد استفاده ممکن است مجدداً مذاکره شود یا ممکن است اتصال به دلیل نیاز به گواهی کلاینت یا درخواست آن پس از تلاش برای دسترسی به یک URL خاص با شکست مواجه شود. توجه: خروجی تولیدشده توسط این گزینه همیشه دقیق نیست زیرا ممکن است اتصال هرگز برقرار نشده باشد. -no-interactive از این فلگ می‌توان برای اجرای کلاینت در یک حالت غیرتعاملی استفاده کرد. -state چاپ وضعیت‌های نشست SSL. -debug چاپ اطلاعات اشکال‌زدایی گسترده شامل دامپ هگزادسیمال تمامی ترافیک. -nocommands عدم استفاده از حروف دستورات تعاملی. -adv استفاده از حالت دستورات پیشرفته. -security_debug فعال‌سازی پیام‌های اشکال‌زدایی امنیتی. -security_debug_verbose ارائه خروجی اشکال‌زدایی امنیتی با جزئیات بیشتر. -msg نمایش پیام‌های پروتکل. -timeout فعال‌سازی مهلت زمانی ارسال/دریافت در اتصالات DTLS. -mtu size تنظیم MTU لایه پیوند داده به اندازه مشخص‌شده. -no_ems غیرفعال‌سازی مذاکره راز اصلی گسترش‌یافته (Extended master secret). -keymatexport label صادر کردن مواد کلیدسازی با استفاده از برچسب مشخص‌شده. -keymatexportlen len صادر کردن تعداد بایت مشخص‌شده از مواد کلیدسازی؛ پیش‌فرض ۲۰ است. نمایش تمام پیام‌های پروتکل همراه با دامپ هگزادسیمال. -trace نمایش خروجی ردگیری پرجزئیات پیام‌های پروتکل. -msgfile filename فایلی برای ارسال خروجی -msg یا -trace به آن؛ پیش‌فرض خروجی استاندارد است. -nbio_test آزمایش I/O غیرمسدودکننده. -nbio فعال‌سازی I/O غیرمسدودکننده. -crlf این گزینه کاراکتر خط جدید از ترمینال را به CR+LF تبدیل می‌کند که برای برخی سرورها الزامی است. -ign_eof جلوگیری از قطع اتصال هنگام رسیدن به انتهای فایل (EOF) در ورودی. این گزینه به طور ضمنی -nocommands را نیز فعال می‌کند. -quiet جلوگیری از چاپ اطلاعات نشست و گواهی. این گزینه به طور ضمنی گزینه‌های -ign_eof و -nocommands را نیز فعال می‌کند. -no_ign_eof قطع اتصال هنگام رسیدن به انتهای فایل در ورودی. می‌تواند برای لغو اثر ضمنی -ign_eof پس از -quiet استفاده شود. -psk_identity identity استفاده از شناسه PSK با مقدار identity هنگام استفاده از یک مجموعه رمز PSK. مقدار پیش‌فرض "Client_identity" (بدون نقل قول) است. -psk key استفاده از کلید PSK با مقدار key هنگام استفاده از مجموعه رمز PSK. کلید به صورت یک عدد هگزادسیمال بدون پیشوند 0x ارائه می‌شود، به عنوان مثال -psk 1a2b3c4d. برای استفاده از یک رمز PSK، ارائه این گزینه الزامی است. -psk_session file استفاده از داده‌های SSL_SESSION با کدگذاری PEM ذخیره‌شده در file به عنوان پایه یک PSK. توجه داشته باشید که این ویژگی فقط در صورت مذاکره TLSv1.3 عمل خواهد کرد. -sctp استفاده از پروتکل انتقال SCTP به جای UDP در DTLS. باید همراه با گزینه‌های -dtls، -dtls1 یا -dtls1_2 استفاده شود. این گزینه تنها در صورتی در دسترس است که پشتیبانی از SCTP در OpenSSL فعال شده باشد. -sctp_label_bug استفاده از رفتار نادرست پیاده‌سازی‌های قدیمی‌تر OpenSSL هنگام محاسبه اسرار مشترک جفت‌نقطه پایانی برای DTLS/SCTP. این گزینه امکان برقراری ارتباط با پیاده‌سازی‌های قدیمی دارای اشکال را فراهم می‌کند، اما سازگاری با پیاده‌سازی‌های صحیح را برهم می‌زند. باید همراه با -sctp استفاده شود. این گزینه فقط در صورتی در دسترس است که پشتیبانی از SCTP در OpenSSL فعال شده باشد. -fallback_scsv ارسال TLS_FALLBACK_SCSV در پیام ClientHello. -async فعال‌سازی حالت ناهمگام. عملیات رمزنگاری به صورت ناهمگام انجام خواهد شد. این حالت تنها زمانی اثرگذار خواهد بود که یک موتور با قابلیت ناهمگام از طریق گزینه -engine نیز استفاده شده باشد. برای اهداف آزمایشی، می‌توان از موتور آزمایشی ناهمگام (dasync) در صورت وجود استفاده کرد. -maxfraglen len فعال‌سازی مذاکره حداکثر طول قطعه؛ مقادیر مجاز عبارتند از 512، 1024، 2048 و 4096. -max_send_frag int حداکثر اندازه قطعه داده برای ارسال. برای اطلاعات بیشتر به SSL_CTX_set_max_send_fragment(3) مراجعه کنید. -split_send_frag int اندازه مورد استفاده برای تقسیم داده‌ها در خطوط لوله رمزگذاری. اگر داده‌های نوشته‌شده در یک مرحله بیش از این مقدار باشد، به چندین خط لوله، تا سقف حداکثر تعداد خطوط لوله تعریف‌شده توسط max_pipelines تقسیم می‌شود. این گزینه تنها در صورتی موثر است که یک مجموعه رمز مناسب مذاکره شده باشد، موتوری با پشتیبانی از خط لوله بارگذاری شده باشد و مقدار max_pipelines بزرگ‌تر از ۱ باشد. برای اطلاعات بیشتر به SSL_CTX_set_split_send_fragment(3) مراجعه کنید. -max_pipelines int حداکثر تعداد خطوط لوله رمزگذاری/رمزگشایی مورد استفاده. این گزینه تنها در صورتی مؤثر خواهد بود که موتوری با قابلیت پشتیبانی از خط لوله (مانند موتور dasync) بارگذاری شده و یک مجموعه رمز مناسب مذاکره شده باشد. مقدار پیش‌فرض ۱ است. برای اطلاعات بیشتر به SSL_CTX_set_max_pipelines(3) مراجعه کنید. -read_buf int اندازه پیش‌فرض بافر خواندن برای استفاده در اتصالات. این گزینه تنها در صورتی موثر خواهد بود که اندازه بافر بزرگ‌تر از اندازه‌ای باشد که در غیر این صورت استفاده می‌شد و خط لوله در حال استفاده باشد (برای اطلاعات بیشتر به SSL_CTX_set_default_read_buffer_len(3) مراجعه کنید). -ignore_unexpected_eof برخی از پیاده‌سازی‌های TLS هنگام خاموش‌سازی و قطع اتصال، هشدار اجباری close_notify را ارسال نمی‌کنند. اگر برنامه تلاش کند منتظر هشدار close_notify بماند اما طرف مقابل اتصال را بدون ارسال آن ببندد، خطا رخ می‌دهد. با فعال بودن این گزینه، طرف مقابل نیازی به ارسال هشدار close_notify ندارد و با یک اتصال بسته‌شده به گونه‌ای رفتار می‌شود که گویی هشدار close_notify دریافت شده است. برای اطلاعات بیشتر درباره خاتمه دادن به یک اتصال، به SSL_shutdown(3) مراجعه کنید. -no_tx_cert_comp پشتیبانی از ارسال گواهی‌های فشرده‌شده TLSv1.3 را غیرفعال می‌کند. -no_rx_cert_comp پشتیبانی از دریافت گواهی‌های فشرده‌شده TLSv1.3 را غیرفعال می‌کند. -brief ارائه یک خلاصه کوتاه از پارامترهای اتصال به جای خروجی پرجزئیات معمول. -starttls protocol ارسال پیام(های) اختصاصی پروتکل جهت تغییر ارتباط به TLS. protocol یک کلیدواژه برای پروتکل مورد نظر است. در حال حاضر، کلیدواژه‌های پشتیبانی‌شده عبارتند از "smtp"، "pop3"، "imap"، "ftp"، "xmpp"، "xmpp-server"، "irc"، "postgres"، "mysql"، "lmtp"، "nntp"، "sieve" و "ldap". -xmpphost hostname این گزینه، هنگامی که همراه با "-starttls xmpp" یا "-starttls xmpp-server" استفاده شود، میزبان را برای صفت "to" در عنصر استریم مشخص می‌کند. اگر این گزینه مشخص نشود، از میزبانی که با "-connect" تعیین شده است استفاده خواهد شد. این گزینه نام مستعاری برای گزینه -name جهت پروتکل‌های "xmpp" و "xmpp-server" است. -name hostname از این گزینه برای مشخص کردن اطلاعات نام میزبان برای پروتکل‌های مختلف مورد استفاده همراه با گزینه -starttls استفاده می‌شود. در حال حاضر تنها پروتکل‌های "xmpp"، "xmpp-server"، "smtp" و "lmtp" می‌توانند از این گزینه -name بهره ببرند. اگر این گزینه همراه با "-starttls xmpp" یا "-starttls xmpp-server" استفاده شود، میزبان را برای صفت "to" در عنصر استریم مشخص می‌کند. اگر این گزینه مشخص نشود، از میزبان مشخص‌شده با "-connect" استفاده خواهد شد. اگر این گزینه همراه با "-starttls lmtp" یا "-starttls smtp" به کار رود، به ترتیب نام مورد استفاده در پیام "LMTP LHLO" یا "SMTP EHLO" را مشخص می‌کند. در صورت عدم تعیین، از "mail.example.com" استفاده خواهد شد. -tlsextdebug چاپ یک دامپ هگزادسیمال از تمام افزونه‌های TLS دریافت‌شده از سرور. -sess_out filename خروجی دادن نشست SSL به filename. -sess_in filename بارگذاری نشست SSL از filename. کلاینت تلاش خواهد کرد اتصال را از این نشست از سر گیرد. -serverinfo types فهرستی از انواع افزونه‌های TLS جداشده با کاما (اعدادی بین ۰ تا ۶۵۵۳۵). هر نوع به عنوان یک افزونه خالی TLS در ClientHello ارسال خواهد شد. پاسخ سرور (در صورت وجود) کدگذاری شده و به عنوان یک فایل PEM نمایش داده می‌شود. -status ارسال درخواست وضعیت گواهی به سرور (OCSP stapling). پاسخ سرور (در صورت وجود) چاپ می‌شود. -ocsp_check_leaf الزام به انجام بررسی وضعیت گواهی سرور (نهاد نهایی)، که در آن هرگونه پاسخ OCSP ارائه‌شده در دست‌تکانی TLS (توسط اصطلاحاً "OCSP stapling") ابتدا امتحان می‌شود. اگر پاسخ معتبر و قطعی OCSP یافت نشود، در صورت فعال بودن بررسی مبتنی بر CRL به عنوان پشتیبان امتحان می‌شود، در غیر این صورت بررسی وضعیت با شکست مواجه می‌گردد. این گزینه مستلزم -status است. -ocsp_check_all مشابه گزینه قبل، اما الزام به انجام بررسی وضعیت گواهی برای زنجیره صادرکننده گواهی سرور نیز دارد (یعنی گواهی‌های میانی CA، به استثنای لنگر اعتماد). این گزینه مستلزم گزینه‌های -status و -ocsp_check_leaf است. -alpn protocols, -nextprotoneg protocols این فلگ‌ها به ترتیب افزونه‌های مذاکره پروتکل لایه کاربرد (ALPN) یا مذاکره پروتکل بعدی (NPN) را فعال می‌کنند. ALPN استاندارد IETF بوده و جایگزین NPN شده است. فهرست protocols فهرستی از نام‌های پروتکل جداشده با کاما است که کلاینت باید پشتیبانی از آن‌ها را اعلام کند. این فهرست باید ابتدا حاوی مطلوب‌ترین پروتکل‌ها باشد. نام‌های پروتکل رشته‌های اسکی قابل چاپ هستند، به عنوان مثال "http/1.1" یا "spdy/3". اگر از -tls1_3 استفاده شود، فلگ -nextprotoneg نمی‌تواند مشخص شود. -ct, -noct از یکی از این دو گزینه برای کنترل فعال بودن شفافیت گواهی (CT) با (-ct) یا غیرفعال بودن آن با (-noct) استفاده کنید. اگر CT فعال باشد، برچسب‌های زمانی گواهی امضاشده (SCTها) از سرور درخواست شده و در پایان دست‌تکانی گزارش می‌شوند. فعال‌سازی CT همچنین OCSP stapling را فعال می‌کند، زیرا این یکی از روش‌های تحویل ممکن برای SCTها است. -ctlogfile فایلی حاوی فهرستی از لاگ‌های شناخته‌شده شفافیت گواهی (Certificate Transparency). برای اطلاع از قالب مورد انتظار فایل به SSL_CTX_set_ctlog_list_file(3) مراجعه کنید. -keylogfile file اسرار TLS را به انتهای فایل لاگ کلید مشخص‌شده اضافه می‌کند تا برنامه‌های خارجی (مانند Wireshark) بتوانند اتصالات TLS را رمزگشایی کنند. -early_data file محتوای فایل مشخص‌شده را خوانده و تلاش می‌کند آن را به عنوان داده اولیه (early data) به سرور ارسال کند. این ویژگی تنها در نشست‌های ادامه‌یافته‌ای کار می‌کند که از داده اولیه پشتیبانی کنند و سرور داده اولیه را بپذیرد. -enable_pha فقط برای TLSv1.3، افزونه احراز هویت پس از دست‌تکانی (Post-Handshake Authentication) را ارسال می‌کند. این عمل صرف‌نظر از اینکه گواهی از طریق -cert ارائه شده باشد یا خیر اتفاق می‌افتد. -use_srtp value پیشنهاد مدیریت کلید SRTP، که در آن value یک فهرست از پروفایل‌های جداشده با دونقطه است. -srpuser value تنظیم نام کاربری SRP به مقدار مشخص‌شده. این گزینه منسوخ شده است. -srppass value تنظیم گذرواژه SRP به مقدار مشخص‌شده. این گزینه منسوخ شده است. -srp_lateuser نام کاربری SRP برای دومین پیام ClientHello. این گزینه منسوخ شده است. -srp_moregroups This option is deprecated. تحمل مقادیری غیر از مقادیر شناخته‌شده g و N. این گزینه منسوخ شده است. -srp_strength number تنظیم حداقل طول قابل قبول (به بیت) برای N. این گزینه منسوخ شده است. -ktls فعال‌سازی Kernel TLS برای ارسال و دریافت. این گزینه در OpenSSL 3.2.0 معرفی شد. از زمان OpenSSL 3.2.0، قابلیت Kernel TLS به طور پیش‌فرض غیرفعال است. -tfo فعال‌سازی برقراری اتصالات از طریق TCP fast open (RFC7413). -no_ssl3, -no_tls1, -no_tls1_1, -no_tls1_2, -no_tls1_3, -ssl3, -tls1, -tls1_1, -tls1_2, -tls1_3 به "گزینه‌های نسخه TLS" در openssl(1) مراجعه کنید. -dtls, -dtls1, -dtls1_2 این گزینه‌ها استفاده از DTLS را به جای TLS مشخص می‌کنند. به "گزینه‌های نسخه TLS" در openssl(1) مراجعه کنید. -nameopt option مشخص می‌کند که نام‌های موضوع یا صادرکننده چگونه نمایش داده شوند. برای جزئیات به openssl-namedisplay-options(1) مراجعه کنید. -xkey infile, -xcert file, -xchain file, -xchain_build file, -xcertform DER|PEM, -xkeyform DER|PEM تنظیم گزینه‌های پیشرفته اعتبارسنجی گواهی. برای جزئیات به "گزینه‌های اعتبارسنجی پیشرفته" در openssl-verification-options(1) مراجعه کنید. -CAfile file, -no-CAfile, -CApath dir, -no-CApath, -CAstore uri, -no-CAstore برای جزئیات به "گزینه‌های گواهی معتمد" در openssl-verification-options(1) مراجعه کنید. -bugs, -comp, -no_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 برای جزئیات به "دستورات خط فرمان پشتیبانی‌شده" در SSL_CONF_cmd(3) مراجعه کنید. -rand files, -writerand file برای جزئیات به "گزینه‌های وضعیت تصادفی" در openssl(1) مراجعه کنید. -provider name -provider-path path -provparam [name:]key=value -propquery propq به "گزینه‌های ارائه‌دهنده" در openssl(1)، provider(7) و property(7) مراجعه کنید. -engine id به "گزینه‌های موتور" در openssl(1) مراجعه کنید. این گزینه منسوخ شده است. -ssl_client_engine id مشخص کردن موتوری که برای عملیات گواهی کلاینت استفاده می‌شود. -allow_proxy_certs, -attime, -no_check_time, -check_ss_sig, -crl_check, -crl_check_all, -explicit_policy, -extended_crl, -ignore_critical, -inhibit_any, -inhibit_map, -no_alt_chains, -partial_chain, -policy, -policy_check, -policy_print, -purpose, -suiteB_128, -suiteB_128_only, -suiteB_192, -trusted_first, -use_deltas, -auth_level, -verify_depth, -verify_email, -verify_hostname, -verify_ip, -verify_name, -x509_strict -issuer_checks تنظیم گزینه‌های گوناگون اعتبارسنجی زنجیره گواهی. برای جزئیات به "گزینه‌های اعتبارسنجی" در openssl-verification-options(1) مراجعه کنید. خطاهای اعتبارسنجی به منظور اشکال‌زدایی نمایش داده می‌شوند، اما اجرای دستور ادامه خواهد یافت مگر اینکه از گزینه -verify_return_error استفاده شده باشد. -enable_server_rpk فعال‌سازی پشتیبانی از دریافت کلیدهای عمومی خام (RFC7250) از سرور. استفاده از گواهی‌های X.509 توسط سرور اختیاری می‌شود و سرورهایی که از کلیدهای عمومی خام پشتیبانی می‌کنند می‌توانند آن‌ها را به کار گیرند. سرورهایی که از کلیدهای عمومی خام پشتیبانی نمی‌کنند یا استفاده از گواهی‌های X.509 را ترجیح می‌دهند، همچنان می‌توانند طبق معمول گواهی‌های X.509 ارسال کنند. -enable_client_rpk فعال‌سازی پشتیبانی از ارسال کلیدهای عمومی خام (RFC7250) به سرور. در صورت درخواست سرور و به شرط پیکربندی یک جفت کلید و گواهی عمومی مناسب، یک کلید عمومی خام توسط کلاینت ارسال خواهد شد. با این وجود، برخی از سرورها ممکن است هیچ اعتبارسنجی کلاینتی را درخواست نکنند، یا ممکن است یک گواهی را تقاضا کنند. host:port به جای ارائه -connect، میزبان هدف و پورت اختیاری را می‌توان به عنوان یک آرگومان مکانی واحد پس از تمام گزینه‌ها ارائه کرد. اگر نه این آرگومان و نه -connect ارائه نشوند، برنامه به تلاش برای اتصال به localhost روی پورت 4433 بازمی‌گردد. اگر رشته میزبان یک نشانی IPv6 باشد، باید در "[" و "]" قرار گیرد. دستورات هنگام اتصال (پایه) (CONNECTED COMMANDS (BASIC)) اگر اتصالی با یک سرور SSL/TLS برقرار شود، هر داده‌ای که از سرور دریافت گردد نمایش داده می‌شود و هر کلیدی که فشرده شود به سرور فرستاده خواهد شد. در صورت رسیدن به انتهای فایل (EOF)، اتصال بسته خواهد شد. هنگامی که به صورت تعاملی استفاده شود (به این معنی که نه -quiet و نه -ign_eof داده نشده باشند)، و هیچ‌یک از گزینه‌های -adv یا -nocommands نیز ارائه نشده باشند، حالت دستورات "پایه" (Basic) فعال می‌شود. در این حالت برخی دستورات شناسایی می‌شوند که عملیات خاصی را انجام می‌دهند. این دستورات یک حرف هستند که باید در ابتدای یک سطر قرار گیرند. تمامی داده‌های بعدی پس از حرف ابتدایی در آن سطر نادیده گرفته می‌شوند. دستورات در زیر فهرست شده‌اند: Q پایان دادن به اتصال جاری SSL و خروج. R مذاکره مجدد نشست SSL (فقط در TLSv1.2 و نسخه‌های پایین‌تر). C تلاش برای اتصال مجدد به سرور با استفاده از دست‌تکانی ازسرگیری (resumption handshake). k ارسال یک پیام به‌روزرسانی کلید به سرور (فقط در TLSv1.3). K ارسال یک پیام به‌روزرسانی کلید به سرور و درخواست پیام متقابل از سرور (فقط در TLSv1.3). دستورات هنگام اتصال (پیشرفته) (CONNECTED COMMANDS (ADVANCED)) اگر گزینه -adv مشخص شده باشد، حالت دستورات "پیشرفته" (advanced) فعال می‌شود. مانند حالت پایه، اگر اتصالی با یک سرور SSL/TLS برقرار شود، هر داده‌ای که از سرور دریافت گردد نمایش داده می‌شود و هر کلیدی که فشرده شود به سرور فرستاده خواهد شد. در صورت رسیدن به انتهای فایل (EOF)، اتصال بسته خواهد شد. دستورات ویژه را می‌توان با محصور کردن آن‌ها در آکاردئون وارد کرد، مانند "{help}" یا "{quit}". این دستورات می‌توانند در هر کجای متن واردشده در s_client قرار گیرند، اما به سرور ارسال نمی‌شوند. برخی دستورات می‌توانند با پایان دادن به نام دستور با ":" و سپس ارائه آرگومان، یک آرگومان دریافت کنند، مانند "{keyup:req}". برخی دستورات تنها زمانی در دسترس هستند که نسخه‌های پروتکل خاصی مذاکره شده باشند. اگر یک خط جدید در انتهای سطری که در s_client وارد می‌شود وجود داشته باشد، این خط جدید نیز به سرور ارسال می‌شود. اگر یک دستور به تنهایی در یک سطر و بدون متن دیگری در همان سطر ظاهر شود، خط جدید حذف شده و به سرور فرستاده نمی‌شود. دستورات زیر شناخته‌شده هستند: help چاپ متن راهنمای خلاصه درباره دستورات موجود. quit بستن اتصال به طرف مقابل (peer). reconnect اتصال مجدد به طرف مقابل و تلاش برای دست‌تکانی ازسرگیری. keyup ارسال پیام به‌روزرسانی کلید (Key Update). فقط در TLSv1.3. این دستور یک آرگومان اختیاری می‌پذیرد. اگر آرگومان "req" ارائه شود، از طرف مقابل نیز درخواست می‌شود کلیدهای خود را به‌روزرسانی کند. در غیر این صورت، اگر "noreq" ارائه شود، از طرف مقابل درخواستی برای به‌روزرسانی کلیدهایش نخواهد شد. پیش‌فرض "req" است. reneg آغاز یک مذاکره مجدد با سرور. فقط در (D)TLSv1.2 یا نسخه‌های پایین‌تر. fin اعلام FIN در استریم جاری. فقط در QUIC. به محض ارسال FIN، هرگونه متن بعدی که برای این استریم وارد شود نادیده گرفته خواهد شد. نکات (NOTES) این دستور می‌تواند برای اشکال‌زدایی سرورهای SSL استفاده شود. برای اتصال به یک سرور HTTP با SSL معمولاً از دستور زیر استفاده می‌شود: openssl s_client -connect servername:443 (پروتکل https از پورت ۴۴۳ استفاده می‌کند). اگر اتصال موفقیت‌آمیز باشد، می‌توان یک دستور HTTP مانند "GET /" را برای دریافت صفحه وب ارسال کرد. اگر دست‌تکانی با شکست مواجه شود، دلایل احتمالی گوناگونی وجود دارد؛ اگر مشکل واضحی مانند عدم وجود گواهی کلاینت نباشد، می‌توان گزینه‌های -bugs، -ssl3، -tls1، -no_ssl3 یا -no_tls1 را امتحان کرد شاید سرور دارای اشکال باشد. به ویژه، شما باید پیش از ارسال گزارش باگ به لیست ایمیل OpenSSL، این گزینه‌ها را بیازمایید. یک مشکل رایج هنگام تلاش برای به کار انداختن گواهی‌های کلاینت این است که کلاینت وب شکایت می‌کند که هیچ گواهی ندارد یا یک لیست خالی برای انتخاب ارائه می‌دهد. این موضوع معمولاً به این دلیل است که سرور هنگام درخواست گواهی، مرجع صدور گواهی کلاینت را در "فهرست CA قابل قبول" خود ارسال نمی‌کند. با استفاده از این دستور می‌توان لیست CA را مشاهده و بررسی کرد. با این حال، برخی از سرورها احراز هویت کلاینت را تنها پس از درخواست یک URL مشخص مطالبه می‌کنند. برای به دست آوردن لیست در این حالت، لازم است از گزینه -prexit استفاده کرده و یک درخواست HTTP برای صفحه مناسب ارسال کنید. اگر گواهی‌ای با استفاده از گزینه -cert در خط فرمان مشخص شود، استفاده نخواهد شد مگر اینکه سرور مشخصاً درخواست گواهی کلاینت کند. بنابراین، صرفاً قرار دادن یک گواهی کلاینت در خط فرمان هیچ تضمینی برای عملکرد گواهی نیست. در صورت وجود مشکل در اعتبارسنجی گواهی سرور، می‌توان از گزینه -showcerts برای نمایش تمام گواهی‌های ارسال‌شده توسط سرور استفاده کرد. این دستور یک ابزار آزمایشی است و به گونه‌ای طراحی شده که پس از هرگونه خطای اعتبارسنجی گواهی، به دست‌تکانی ادامه دهد. در نتیجه، هر زنجیره گواهی (معتمد یا غیرمعتمد) ارسال‌شده توسط طرف مقابل را می‌پذیرد. برنامه‌های غیرآزمایشی نباید این کار را انجام دهند زیرا آن‌ها را در برابر حمله مرد میانی (MITM) آسیب‌پذیر می‌کند. این رفتار را می‌توان با گزینه -verify_return_error تغییر داد: در این صورت خطاهای اعتبارسنجی بازگردانده شده و دست‌تکانی لغو می‌شود. گزینه -bind ممکن است زمانی مفید باشد که سرور یا یک دیوار آتش نیازمند آن باشد که اتصالات از نشانی و/یا پورت خاصی برقرار شوند. نکته‌ای درباره استفاده غیرتعاملی (Note on Non-Interactive Use) هنگامی که s_client در یک محیط غیرتعاملی (مانند یک وظیفه cron یا اسکریپتی بدون stdin معتبر) اجرا می‌شود، ممکن است اتصال را زودتر از موعد ببندد، به ویژه در TLS 1.3. برای جلوگیری از این اتفاق، می‌توانید از فلگ -ign_eof استفاده کنید که باعث می‌شود s_client حتی پس از رسیدن به انتهای فایل (EOF) از ورودی stdin به کار خود ادامه دهد. به عنوان مثال: openssl s_client -connect :443 -tls1_3 -sess_out /path/to/tls_session_params_file -ign_eof :25 :25 -starttls smtp -brief -ign_eof به همین ترتیب، برای اتصالات HTTP/1.1 گنجاندن هدر `Connection: close` تضمین می‌کند که سرور پس از پاسخ دادن، اتصال را ببندد: printf 'GET / HTTP/1.1\r\nHost: \r\nConnection: close\r\n\r\n' | openssl s_client -connect :443 -brief این رویکردها به مدیریت منظم و مناسب بسته شدن اتصال کمک کرده و از معلق ماندن ناشی از انتظار سرور برای قطع ارتباط از سوی کلاینت جلوگیری می‌کنند. اشکالات (BUGS) به این دلیل که این برنامه گزینه‌های بسیار زیادی دارد و همچنین برخی از تکنیک‌های به‌کاررفته تا حدی قدیمی هستند، کد منبع C این دستور خوانایی دشواری دارد و الگوی مناسبی برای نحوه انجام کارها نیست. یک برنامه کلاینت معمولی SSL بسیار ساده‌تر خواهد بود. گزینه -prexit تا حدودی یک ترفند غیراصولی (hack) است. در واقع باید هر زمان که یک نشست مجدداً مذاکره می‌شود اطلاعات گزارش شود. همچنین ببینید (SEE ALSO) openssl(1), openssl-sess_id(1), openssl-s_server(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) تاریخچه (HISTORY) گزینه -no_alt_chains در OpenSSL 1.1.0 افزوده شد. گزینه -name در OpenSSL 1.1.1 افزوده شد. گزینه -certform در OpenSSL 3.0.0 منسوخ شده و هیچ تاثیری ندارد. گزینه -engine در OpenSSL 3.0 منسوخ شد. گزینه‌های -enable_client_rpk، -enable_server_rpk، -no_rx_cert_comp، -no_tx_cert_comp و -tfo در OpenSSL 3.2 افزوده شدند. گزینه‌های <-ocsp_check_leaf> و -ocsp_check_all در OpenSSL 3.6 افزوده شدند. حق نشر (COPYRIGHT) حق نشر ۲۰۰۰-۲۰۲۶ متعلق به نویسندگان پروژه OpenSSL است. کلیه حقوق محفوظ است. تحت مجوز آپاچی نسخه ۲.۰ ("مجوز") ارائه شده است. شما نمی‌توانید از این پرونده استفاده کنید مگر در انطباق با مجوز. می‌توانید نسخه‌ای از مجوز را در پرونده LICENSE در توزیع منبع یا در به دست آورید. 3.6.4 2026-08-25 OPENSSL-S_CLIENT(1ssl)