." Automatically generated by Pandoc 3.10 ." .TH "STUNNEL" "8" "2026.07.31" "stunnel 5.80" "stunnel TLS Proxy" .SH "نام (NAME)" stunnel \- پروکسی بارگذاری TLS و متعادل‌کننده بار .SH "خلاصه دستور (SYNOPSIS)" .IP \(bu 2 \f[B]Unix:\f[R] \f[B]stunnel\f[R] [\f[CR]FILE\f[R]] | \f[CR]\-fd N\f[R] | \f[CR]\-help\f[R] | \f[CR]\-version\f[R] | \f[CR]\-sockets\f[R] | \f[CR]\-options\f[R] .IP \(bu 2 \f[B]WIN32:\f[R] \f[B]stunnel\f[R] [ [ \f[CR]\-install\f[R] | \f[CR]\-uninstall\f[R] | \f[CR]\-start\f[R] | \f[CR]\-stop\f[R] | \f[CR]\-reload\f[R] | \f[CR]\-reopen\f[R] | \f[CR]\-exit\f[R] ] [\f[CR]\-quiet\f[R]] [\f[CR]FILE\f[R]] ] | \f[CR]\-help\f[R] | \f[CR]\-version\f[R] | \f[CR]\-sockets\f[R] | \f[CR]\-options\f[R] .SH "توضیحات (DESCRIPTION)" برنامه \f[B]stunnel\f[R] به گونه‌ای طراحی شده است که به عنوان یک پوشش (wrapper) رمزنگاری \f[I]TLS\f[R] میان کلاینت‌های دوردست و سرورهای محلی (قابل اجرا توسط \f[I]inetd\f[R]) یا سرورهای راه دور عمل کند. ایده اصلی این است که در صورت داشتن دیمن‌های بدون پشتیبانی از TLS روی سیستم خود، می‌توانید به سادگی آنها را به شکلی تنظیم کنید که از طریق کانال‌های امن \f[I]TLS\f[R] با کلاینت‌ها ارتباط برقرار نمایند. .PP از \f[B]stunnel\f[R] می‌توان برای افزودن قابلیت \f[I]TLS\f[R] به دیمن‌های متداول \f[I]Inetd\f[R] مانند سرورهای POP\-2، POP\-3 و IMAP، به دیمن‌های مستقل مانند NNTP، SMTP و HTTP، و نیز در تونل‌سازی PPP روی سوکت‌های شبکه بدون نیاز به تغییر در کد منبع استفاده کرد. .PP این محصول شامل نرم‌افزار رمزنگاری نوشته‌شده توسط Eric Young است (eay\(atcryptsoft.com) .SH "گزینه‌ها (OPTIONS)" .IP \(bu 2 \f[B]FILE\f[R] .RS 2 .PP استفاده از فایل پیکربندی مشخص‌شده .RE .IP \(bu 2 \f[B]\-fd N\f[R] (فقط یونیکس) .RS 2 .PP خواندن فایل پیکربندی از توصیف‌گر فایل (file descriptor) مشخص‌شده .RE .IP \(bu 2 \f[B]\-help\f[R] .RS 2 .PP چاپ منوی راهنمای \f[B]stunnel\f[R] .RE .IP \(bu 2 \f[B]\-version\f[R] .RS 2 .PP چاپ نسخه \f[B]stunnel\f[R] و پیش‌فرض‌های زمان کامپایل .RE .IP \(bu 2 \f[B]\-sockets\f[R] .RS 2 .PP چاپ گزینه‌های پیش‌فرض سوکت .RE .IP \(bu 2 \f[B]\-options\f[R] .RS 2 .PP چاپ گزینه‌های پشتیبانی‌شده‌ی TLS .RE .IP \(bu 2 \f[B]\-install\f[R] (فقط ویندوز NT و جدیدتر) .RS 2 .PP نصب سرویس NT .RE .IP \(bu 2 \f[B]\-uninstall\f[R] (فقط ویندوز NT و جدیدتر) .RS 2 .PP حذف سرویس NT .RE .IP \(bu 2 \f[B]\-start\f[R] (فقط ویندوز NT و جدیدتر) .RS 2 .PP راه‌اندازی سرویس NT .RE .IP \(bu 2 \f[B]\-stop\f[R] (فقط ویندوز NT و جدیدتر) .RS 2 .PP توقف سرویس NT .RE .IP \(bu 2 \f[B]\-reload\f[R] (فقط ویندوز NT و جدیدتر) .RS 2 .PP بارگذاری مجدد فایل پیکربندی سرویس NT در حال اجرا .RE .IP \(bu 2 \f[B]\-reopen\f[R] (فقط ویندوز NT و جدیدتر) .RS 2 .PP بازگشایی مجدد فایل گزارش سرویس NT در حال اجرا .RE .IP \(bu 2 \f[B]\-exit\f[R] (فقط Win32) .RS 2 .PP خروج از نسخه در حال اجرای stunnel .RE .IP \(bu 2 \f[B]\-quiet\f[R] (فقط Win32) .RS 2 .PP عدم نمایش هرگونه کادر پیام (message box) .RE .SH "فایل پیکربندی (CONFIGURATION FILE)" هر خط از فایل پیکربندی می‌تواند یکی از موارد زیر باشد: .IP \(bu 2 یک خط خالی (نادیده گرفته می‌شود). .IP \(bu 2 یک کامنت که با `;' آغاز می‌شود (نادیده گرفته می‌شود). .IP \(bu 2 یک جفت `option_name = option_value'. .IP \(bu 2 عبارت `[service_name]' که آغازگر تعریف یک سرویس است. .PP پارامتر آدرس یک گزینه می‌تواند یکی از موارد زیر باشد: .IP \(bu 2 یک شماره پورت. .IP \(bu 2 یک جفت آدرس IP (IPv4، IPv6 یا نام دامنه) و شماره پورت جداشده با دو‌نقطه. .IP \(bu 2 مسیر یک سوکت یونیکس (فقط یونیکس). .SS "گزینه‌های عمومی (GLOBAL OPTIONS)" .IP \(bu 2 \f[B]chroot\f[R] = DIRECTORY (فقط یونیکس) .RS 2 .PP دایرکتوری برای chroot کردن پردازه \f[B]stunnel\f[R] .PP گزینه \f[B]chroot\f[R] پردازه \f[B]stunnel\f[R] را درون یک محیط ایزوله (chroot jail) نگه می‌دارد. گزینه‌های \f[I]CApath\f[R]، \f[I]CRLpath\f[R]، \f[I]pid\f[R] و \f[I]exec\f[R] درون این محیط قرار می‌گیرند و مسیرهای آنها باید نسبت به دایرکتوری مشخص‌شده با \f[B]chroot\f[R] باشند. .PP چندین تابع سیستم‌عامل نیز به قرار گرفتن فایل‌هایشان در محیط ایزوله chroot نیاز دارند، به عنوان مثال: .IP \(bu 2 حل‌کننده با تأخیر نام‌ها (Delayed resolver) معمولاً به /etc/nsswitch.conf و /etc/resolv.conf نیاز دارد. .IP \(bu 2 زمان محلی در فایل‌های گزارش به /etc/timezone نیاز دارد. .IP \(bu 2 برخی عملکردهای دیگر ممکن است به دستگاه‌ها نیاز داشته باشند، مانند /dev/zero یا /dev/null. .RE .IP \(bu 2 \f[B]compression\f[R] = deflate | zlib | zstd | brotli .RS 2 .PP انتخاب الگوریتم فشرده‌سازی داده‌ها .PP پیش‌فرض: بدون فشرده‌سازی (no compression) .PP فشرده‌سازی داده‌ها فقط برای TLS 1.2 و قبل از آن در دسترس است. در صورت کامپایل با \f[B]OpenSSL 1.1.0\f[R] و جدیدتر، نیازمند کاهش \f[B]securityLevel\f[R] به 1 است. .PP الگوریتم‌های zlib، zstd و brotli در پیکربندی پیش‌فرض OpenSSL غیرفعال هستند. .PP الگوریتم‌های zstd و brotli در \f[B]OpenSSL 3.2\f[R] اضافه شدند. .PP فشرده‌سازی داده‌ها در برنامه‌هایی که به مهاجم اجازه تزریق متن آشکار انتخابی (chosen plaintext) را می‌دهند، یک ریسک امنیتی به شمار می‌رود. .PP روش Deflate روش استاندارد فشرده‌سازی است که در RFC 1951 توصیف شده است. .PP \f[B]هشدار\f[R]: فشرده‌سازی TLS می‌تواند حملات بازیابی متن آشکار (مانند CRIME) را در شرایطی که داده‌های تحت کنترل مهاجم به همراه اطلاعات محرمانه فشرده می‌شوند، امکان‌پذیر سازد. .RE .IP \(bu 2 \f[B]debug\f[R] = [FACILITY.]LEVEL .RS 2 .PP سطح گزارش‌گیری و اشکال‌زدایی .PP مقدار سطح یکی از نام‌ها یا شماره‌های سطوح syslog است: emerg (0)، alert (1)، crit (2)، err (3)، warning (4)، notice (5)، info (6) یا debug (7). تمامی گزارش‌های سطح مشخص‌شده و کلیه سطوح با مقدار عددی کمتر از آن نمایش داده خواهند شد. .PP سطح \f[I]debug = debug\f[R] (یا معادل آن ) پرجزئیات‌ترین خروجی گزارش را تولید می‌کند. این سطح گزارش‌گیری صرفاً برای فهم توسعه‌دهندگان stunnel طراحی شده است و نه کاربران عادی. لطفاً تنها زمانی از سطح debug استفاده کنید که توسط یک توسعه‌دهنده stunnel درخواست شده باشد، یا زمانی که قصد دارید سردرگم شوید. .PP سطح پیش‌فرض گزارش‌گیری notice (5) است. .PP از تسهیلات (facility) بخش `daemon' در syslog استفاده خواهد شد مگر اینکه نام تسهیلاتی تعیین گردد. (تسهیلات در Win32 پشتیبانی نمی‌شوند.) .PP بزرگی و کوچکی حروف برای هر دو مقدار تسهیلات و سطوح نادیده گرفته می‌شود. .RE .IP \(bu 2 \f[B]EGD\f[R] = EGD_PATH (فقط یونیکس) .RS 2 .PP مسیر سوکت دیمن جمع‌آوری آنتروپی (Entropy Gathering Daemon) .PP سوکت Entropy Gathering Daemon برای تغذیه تولیدکننده اعداد تصادفی \f[B]OpenSSL\f[R] استفاده می‌شود. .RE .IP \(bu 2 \f[B]engine\f[R] = auto | ENGINE_ID .RS 2 .PP انتخاب موتور رمزنگاری سخت‌افزاری یا نرم‌افزاری .PP پیش‌فرض: رمزنگاری صرفاً نرم‌افزاری .PP برای مشاهده پیکربندی engine جهت استفاده از گواهی و کلید خصوصی متناظر از یک دستگاه رمزنگاری، بخش مثال‌ها را ببینید. .RE .IP \(bu 2 \f[B]engineCtrl\f[R] = COMMAND[:PARAMETER] .RS 2 .PP کنترل موتور سخت‌افزاری .RE .IP \(bu 2 \f[B]engineDefault\f[R] = TASK_LIST .RS 2 .PP تنظیم وظایف OpenSSL واگذارشده به موتور جاری .PP این پارامتر یک فهرست جداشده با کاما از وظایفی را که باید به موتور جاری واگذار شوند مشخص می‌کند. .PP در صورت پشتیبانی موتور، وظایف زیر ممکن است در دسترس باشند: ALL، RSA، DSA، ECDH، ECDSA، DH، RAND، CIPHERS، DIGESTS، PKEY، PKEY_CRYPTO، PKEY_ASN1. .RE .IP \(bu 2 \f[B]fips\f[R] = yes | no .RS 2 .PP فعال یا غیرفعال کردن حالت FIPS 140\-2. .PP این گزینه به شما امکان می‌دهد در صورتی که \f[B]stunnel\f[R] با پشتیبانی از FIPS 140\-2 کامپایل شده باشد، از ورود به حالت FIPS صرف‌نظر کنید. .PP پیش‌فرض: no (از نسخه 5.00) .RE .IP \(bu 2 \f[B]foreground\f[R] = yes | quiet | no (فقط یونیکس) .RS 2 .PP حالت پیش‌زمینه .PP ماندن در پیش‌زمینه (انشعاب یا fork نکند). .PP با پارامتر \f[I]yes\f[R] علاوه بر مقصدهای مشخص‌شده با \f[I]syslog\f[R] و \f[I]output\f[R]، لاگ‌ها را در stderr نیز ثبت می‌کند. .PP پیش‌فرض: background در حالت دیمن .RE .IP \(bu 2 \f[B]iconActive\f[R] = ICON_FILE (فقط واسط گرافیکی) .RS 2 .PP آیکون واسط گرافیکی برای نمایش در هنگام وجود اتصالات برقرارشده .PP در پلتفرم ویندوز این پارامتر باید یک فایل .ico حاوی یک تصویر ۱۶ در ۱۶ پیکسل باشد. .RE .IP \(bu 2 \f[B]iconError\f[R] = ICON_FILE (فقط واسط گرافیکی) .RS 2 .PP آیکون واسط گرافیکی برای نمایش در زمانی که هیچ پیکربندی معتبری بارگذاری نشده باشد .PP در پلتفرم ویندوز این پارامتر باید یک فایل .ico حاوی یک تصویر ۱۶ در ۱۶ پیکسل باشد. .RE .IP \(bu 2 \f[B]iconIdle\f[R] = ICON_FILE (فقط واسط گرافیکی) .RS 2 .PP آیکون واسط گرافیکی برای نمایش در زمانی که هیچ اتصال برقرارشده‌ای وجود ندارد .PP در پلتفرم ویندوز این پارامتر باید یک فایل .ico حاوی یک تصویر ۱۶ در ۱۶ پیکسل باشد. .RE .IP \(bu 2 \f[B]log\f[R] = append | overwrite .RS 2 .PP نحوه مدیریت فایل گزارش .PP این گزینه به شما اجازه می‌دهد تعیین کنید که آیا فایل گزارش (مشخص‌شده با گزینه \f[I]output\f[R]) هنگام باز شدن یا بازگشایی مجدد، افزوده (append) شود یا رونویسی (overwrite) گردد. .PP پیش‌فرض: append .RE .IP \(bu 2 \f[B]output\f[R] = FILE .RS 2 .PP افزودن پیام‌های گزارش به یک فایل .PP از دستگاه /dev/stdout می‌توان برای ارسال پیام‌های لاگ به خروجی استاندارد استفاده کرد (برای مثال جهت ثبت آنها با ابزار splogger مربوط به daemontools). .RE .IP \(bu 2 \f[B]pid\f[R] = FILE (فقط یونیکس) .RS 2 .PP محل فایل شناسه پردازه (pid) .PP اگر آرگومان خالی باشد، هیچ فایل pid ساخته نخواهد شد. .PP مسیر \f[I]pid\f[R] در صورت تعیین، نسبت به دایرکتوری \f[I]chroot\f[R] سنجیده می‌شود. .RE .IP \(bu 2 \f[B]provider\f[R] = PROVIDER_ID .RS 2 .PP شناسه ارائه‌دهنده (provider) مورد استفاده را مشخص می‌کند. PROVIDER_ID یک شناسه یکتا است که به یک ارائه‌دهنده خدمات رمزنگاری خاص اشاره دارد. .PP این گزینه نیازمند OpenSSL 3.0 یا جدیدتر است. .RE .IP \(bu 2 \f[B]providerParameter\f[R] = PROVIDER_ID:PARAMETER=VALUE .RS 2 .PP یک پارامتر خاص را برای ارائه‌دهنده داده‌شده تنظیم می‌کند. PROVIDER_ID ارائه‌دهنده را مشخص کرده، PARAMETER نام پارامتر و VALUE مقدار آن است. این گزینه امکان سفارشی‌سازی پیکربندی ارائه‌دهنده خدمات رمزنگاری انتخاب‌شده را فراهم می‌کند. .PP این گزینه نیازمند OpenSSL 3.5 یا جدیدتر است. .RE .IP \(bu 2 \f[B]RNDbytes\f[R] = BYTES .RS 2 .PP تعداد بایت‌های خوانده‌شده از فایل‌های سید تصادفی .RE .IP \(bu 2 \f[B]RNDfile\f[R] = FILE .RS 2 .PP مسیر فایل حاوی داده‌های سید تصادفی .PP کتابخانه OpenSSL ابتدا از داده‌های این فایل برای دانه‌بندی (seed) تولیدکننده اعداد تصادفی استفاده خواهد کرد. .RE .IP \(bu 2 \f[B]RNDoverwrite\f[R] = yes | no .RS 2 .PP رونویسی فایل‌های سید تصادفی با داده‌های تصادفی جدید .PP پیش‌فرض: yes .RE .IP \(bu 2 \f[B]service\f[R] = SERVICE (فقط یونیکس) .RS 2 .PP نام سرویس stunnel .PP نام سرویس مشخص‌شده برای syslog و به عنوان نام سرویس در حالت \f[I]inetd\f[R] برای TCP Wrappers استفاده می‌شود. اگرچه این گزینه از نظر فنی در بخش‌های سرویس نیز قابل تعیین است، اما تنها در گزینه‌های عمومی سودمند است. .PP پیش‌فرض: stunnel .RE .IP \(bu 2 \f[B]setEnv\f[R] = VAR_NAME=VALUE .RS 2 .PP تغییر یا افزودن یک متغیر محیطی برای پردازه‌های فرزند. اگر VAR_NAME از قبل وجود داشته باشد، مقدار آن به‌روز خواهد شد؛ در غیر این صورت، یک متغیر جدید ایجاد می‌شود. این تغییر فقط بر پردازه‌های فرزند ایجادشده اعمال می‌شود و بر محیط فعلی تأثیری ندارد. .RE .IP \(bu 2 \f[B]syslog\f[R] = yes | no (فقط یونیکس) .RS 2 .PP فعال‌سازی ثبت گزارش از طریق syslog .PP پیش‌فرض: yes .RE .IP \(bu 2 \f[B]taskbar\f[R] = yes | no (فقط WIN32) .RS 2 .PP فعال‌سازی آیکون نوار وظیفه (taskbar) .PP پیش‌فرض: yes .RE .SS "گزینه‌های سطح سرویس (SERVICE\-LEVEL OPTIONS)" هر بخش پیکربندی با نام یک سرویس درون براکت‌های قلاب‌شکل آغاز می‌شود. نام سرویس برای کنترل دسترسی libwrap (همان TCP Wrappers) استفاده می‌شود و به شما امکان می‌دهد سرویس‌های \f[B]stunnel\f[R] را در فایل‌های گزارش خود تشخیص دهید. .PP توجه داشته باشید که اگر می‌خواهید \f[B]stunnel\f[R] را در حالت \f[I]inetd\f[R] اجرا کنید (که در آن یک سوکت شبکه توسط سروری مانند \f[I]inetd\f[R]، \f[I]xinetd\f[R] یا \f[I]tcpserver\f[R] در اختیار آن قرار می‌گیرد)، باید بخش \f[I]حالت INETD (INETD MODE)\f[R] را در ادامه مطالعه نمایید. .IP \(bu 2 \f[B]accept\f[R] = [HOST:]PORT .RS 2 .PP پذیرش اتصالات روی نشانی مشخص‌شده .PP اگر هیچ میزبانی مشخص نشود، به طور پیش‌فرض روی تمامی نشانی‌های IPv4 میزبان محلی گوش می‌دهد. .PP برای گوش دادن روی تمامی نشانی‌های IPv6 از دستور زیر استفاده کنید: .IP .EX accept = :::PORT .EE .RE .IP \(bu 2 \f[B]CAengine\f[R] = ENGINE\-SPECIFIC_CA_CERTIFICATE_IDENTIFIER .RS 2 .PP بارگذاری یک گواهی CA معتبر از یک موتور رمزنگاری (engine) .PP گواهی‌های CA بارگذاری‌شده به همراه گزینه‌های \f[I]verifyChain\f[R] و \f[I]verifyPeer\f[R] استفاده خواهند شد. .PP استفاده از چندین گزینه \f[I]CAengine\f[R] در یک بخش سرویس منفرد مجاز است. .PP موتورهای پشتیبانی‌شده فعلی: pkcs11، cng. .RE .IP \(bu 2 \f[B]CApath\f[R] = CA_DIRECTORY .RS 2 .PP بارگذاری گواهی‌های معتبر CA از یک دایرکتوری .PP گواهی‌های CA بارگذاری‌شده به همراه گزینه‌های \f[I]verifyChain\f[R] و \f[I]verifyPeer\f[R] استفاده خواهند شد. توجه داشته باشید که گواهی‌های موجود در این پوشه باید با فرمت XXXXXXXX.0 نام‌گذاری شوند که در آن XXXXXXXX مقدار هش از موضوع (subject) کدگذاری‌شده DER گواهی است. .PP از این پارامتر می‌توان برای ارائه گواهی CA ریشه مورد نیاز جهت اعتبارسنجی منگنه کردن OCSP (OCSP stapling) در حالت سرور نیز استفاده کرد. .PP الگوریتم هش در \f[B]OpenSSL 1.0.0\f[R] تغییر یافته است. هنگام ارتقا از \f[B]OpenSSL 0.x.x\f[R] به \f[B]OpenSSL 1.x.x\f[R] یا جدیدتر، اجرای دستور c_rehash روی این دایرکتوری الزامی است. .PP مسیر \f[I]CApath\f[R] در صورت تعیین، نسبت به دایرکتوری \f[I]chroot\f[R] محاسبه می‌شود. .RE .IP \(bu 2 \f[B]CAfile\f[R] = CA_FILE .RS 2 .PP بارگذاری گواهی‌های معتبر CA از یک فایل .PP گواهی‌های CA بارگذاری‌شده به همراه گزینه‌های \f[I]verifyChain\f[R] و \f[I]verifyPeer\f[R] استفاده خواهند شد. .PP از این پارامتر می‌توان برای ارائه گواهی CA ریشه مورد نیاز جهت اعتبارسنجی منگنه کردن OCSP در حالت سرور نیز استفاده کرد. .RE .IP \(bu 2 \f[B]CAstore\f[R] = URI_CA .RS 2 .PP بارگذاری گواهی‌های معتبر CA از منبعی که با یک URI مشخص شده است .PP این گزینه امکان بارگذاری گواهی‌های CA را از منابع خارجی پشتیبانی‌شده توسط چارچوب \f[I]OSSL_STORE\f[R]، مانند ماژول PKCS#11 (مثلاً توکن سخت‌افزاری)، مخزن گواهی سیستم، یا یک منبع راه دور فراهم می‌سازد. .PP این گزینه را می‌توان به صورت مستقل از \f[I]CAfile\f[R] و \f[I]CAdir\f[R] به کار برد، و به طور مشابه گواهی‌های مورد استفاده \f[I]verifyChain\f[R] یا \f[I]verifyPeer\f[R] و نیز اعتبارسنجی منگنه کردن OCSP در حالت سرور را فراهم می‌کند. .PP این گزینه نیازمند OpenSSL 3.0 یا جدیدتر است. .RE .IP \(bu 2 \f[B]cert\f[R] = CERT_FILE | URI .RS 2 .PP نام فایل زنجیره گواهی (certificate chain) .PP این پارامتر فایلی را مشخص می‌کند که حاوی گواهی‌های مورد استفاده \f[B]stunnel\f[R] برای احراز هویت خود در برابر کلاینت یا سرور راه دور است. این فایل باید شامل کل زنجیره گواهی باشد که از گواهی واقعی سرور/کلاینت آغاز شده و به گواهی خودامضاشده‌ی CA ریشه ختم می‌شود. این فایل باید با فرمت PEM یا P12 باشد. .PP وجود زنجیره گواهی در حالت سرور الزامی و در حالت کلاینت اختیاری است. .PP گزینه \f[B]cert\f[R] را می‌توان چندین بار تعیین کرد. اولین گواهی ارائه‌شده به عنوان گواهی سرور یا کلاینت استفاده می‌شود، در حالی که گواهی‌های بعدی به عنوان عناصر میانی زنجیره در نظر گرفته می‌شوند. این قابلیت نیازمند OpenSSL نسخه 1.0.2 یا جدیدتر است. .PP در صورت فعال بودن یک موتور یا ارائه‌دهنده سخت‌افزاری، از این پارامتر به عنوان شناسه گواهی (PKCS#11 URI) نیز استفاده می‌شود. .PP نکته: استفاده از provider نیازمند OpenSSL 3.0 یا جدیدتر است .RE .IP \(bu 2 \f[B]checkEmail\f[R] = EMAIL .RS 2 .PP اعتبارسنجی نشانی ایمیل در موضوع گواهی طرف مقابل (موجودیت انتهایی یا برگ) .PP در صورتی که بررسی موضوع گواهی تعیین نشده باشد، یا نشانی ایمیل گواهی طرف مقابل با هر یک از نشانی‌های مشخص‌شده با \f[I]checkEmail\f[R] مطابقت داشته باشد، گواهی‌ها پذیرفته می‌شوند. .PP تعیین چندین گزینه \f[I]checkEmail\f[R] در یک بخش سرویس مجاز است. .PP این گزینه نیازمند OpenSSL 1.0.2 یا جدیدتر است. .RE .IP \(bu 2 \f[B]checkHost\f[R] = HOST .RS 2 .PP اعتبارسنجی نام میزبان در موضوع گواهی طرف مقابل (موجودیت انتهایی یا برگ) .PP در صورتی که بررسی موضوع گواهی تعیین نشده باشد، یا نام میزبان گواهی طرف مقابل با هر یک از نام‌های میزبان مشخص‌شده با \f[I]checkHost\f[R] مطابقت داشته باشد، گواهی‌ها پذیرفته می‌شوند. .PP تعیین چندین گزینه \f[I]checkHost\f[R] در یک بخش سرویس مجاز است. .PP این گزینه نیازمند OpenSSL 1.0.2 یا جدیدتر است. .RE .IP \(bu 2 \f[B]checkIP\f[R] = IP .RS 2 .PP اعتبارسنجی نشانی IP در موضوع گواهی طرف مقابل (موجودیت انتهایی یا برگ) .PP در صورتی که بررسی موضوع گواهی تعیین نشده باشد، یا نشانی IP گواهی طرف مقابل با هر یک از نشانی‌های IP مشخص‌شده با \f[I]checkIP\f[R] مطابقت داشته باشد، گواهی‌ها پذیرفته می‌شوند. .PP تعیین چندین گزینه \f[I]checkIP\f[R] در یک بخش سرویس مجاز است. .PP این گزینه نیازمند OpenSSL 1.0.2 یا جدیدتر است. .RE .IP \(bu 2 \f[B]ciphers\f[R] = CIPHER_LIST .RS 2 .PP انتخاب رمزهای مجاز TLS (نسخه TLSv1.2 و قبل از آن) .PP این گزینه تأثیری بر مجموعه‌رمزهای (ciphersuites) نسخه TLSv1.3 ندارد. .PP فهرستی جداشده با دو‌نقطه از رمزهای مجاز در اتصال TLS، به عنوان مثال DES\-CBC3\-SHA:IDEA\-CBC\-MD5. .RE .IP \(bu 2 \f[B]ciphersuites\f[R] = CIPHERSUITES_LIST .RS 2 .PP انتخاب مجموعه‌رمزهای مجاز TLSv1.3 .PP فهرستی جداشده با دو‌نقطه از نام مجموعه‌رمزهای TLSv1.3 به ترتیب اولویت. .PP گزینه \f[I]ciphersuites\f[R] در صورت کامپایل با \f[B]OpenSSL 3.0\f[R] یا جدیدتر، رمزهای ناشناخته را نادیده می‌گیرد. .PP این گزینه نیازمند OpenSSL 1.1.1 یا جدیدتر است. .PP پیش‌فرض: TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256 .RE .IP \(bu 2 \f[B]client\f[R] = yes | no .RS 2 .PP حالت کلاینت (سرویس راه دور از TLS استفاده می‌کند) .PP پیش‌فرض: no (حالت سرور) .RE .IP \(bu 2 \f[B]config\f[R] = COMMAND[:PARAMETER] .RS 2 .PP دستور پیکربندی \f[B]OpenSSL\f[R] .PP دستور پیکربندی \f[B]OpenSSL\f[R] با پارامتر مشخص‌شده اجرا می‌شود. این امر اجازه می‌دهد هر دستور پیکربندی از درون فایل پیکربندی stunnel فراخوانی شود. دستورات پشتیبانی‌شده در صفحه راهنمای \f[I]SSL_CONF_cmd(3ssl)\f[R] شرح داده شده‌اند. .PP می‌توان از چندین خط \f[I]config\f[R] برای تعیین چندین دستور پیکربندی استفاده کرد. .PP به جای فعال کردن \f[I]config = Curves:list_curves\f[R]، از گزینه \f[I]curves\f[R] برای پشتیبانی از منحنی‌های بیضوی استفاده کنید. .PP این گزینه نیازمند OpenSSL 1.0.2 یا جدیدتر است. .RE .IP \(bu 2 \f[B]connect\f[R] = [HOST:]PORT .RS 2 .PP اتصال به یک نشانی راه دور .PP اگر هیچ میزبانی مشخص نشود، میزبان به طور پیش‌فرض localhost خواهد بود. .PP تعیین چندین گزینه \f[I]connect\f[R] در یک بخش سرویس مجاز است. اگر میزبان به چندین نشانی حل شود و/یا چندین گزینه \f[I]connect\f[R] تعیین شده باشد، نشانی راه دور با استفاده از الگوریتم نوبت‌گردشی (round\-robin) انتخاب می‌شود. .RE .IP \(bu 2 \f[B]CRLpath\f[R] = DIRECTORY .RS 2 .PP دایرکتوری فهرست‌های ابطال گواهی (CRL) .PP این پوشه‌ای است که \f[B]stunnel\f[R] هنگام استفاده از گزینه‌های \f[I]verifyChain\f[R] و \f[I]verifyPeer\f[R] و با \f[I]CRLcheckChain\f[R] برای بررسی کامل زنجیره CRL، در آن به دنبال CRLها می‌گردد. توجه داشته باشید که CRLهای موجود در این پوشه باید با فرمت XXXXXXXX.r0 نام‌گذاری شوند که XXXXXXXX مقدار هش از CRL است. .PP الگوریتم هش در \f[B]OpenSSL 1.0.0\f[R] تغییر کرده است. هنگام ارتقا از \f[B]OpenSSL 0.x.x\f[R] به \f[B]OpenSSL 1.x.x\f[R] اجرای c_rehash روی این دایرکتوری ضروری است. .PP مسیر \f[I]CRLpath\f[R] در صورت تعیین، نسبت به دایرکتوری \f[I]chroot\f[R] سنجیده می‌شود. .RE .IP \(bu 2 \f[B]CRLfile\f[R] = CRL_FILE .RS 2 .PP فایل فهرست‌های ابطال گواهی (CRL) .PP این فایل شامل چندین CRL است که به همراه گزینه‌های \f[I]verifyChain\f[R] و \f[I]verifyPeer\f[R]، و با \f[I]CRLcheckChain\f[R] برای بررسی کامل زنجیره CRL استفاده می‌شود. .RE .IP \(bu 2 \f[B]CRLcheckChain\f[R] = yes | no .RS 2 .PP بررسی CRLها برای کل زنجیره گواهی طرف مقابل .PP این گزینه نیازمند \f[I]verifyChain = yes\f[R] و یکی از دو گزینه \f[I]CRLfile\f[R] یا \f[I]CRLpath\f[R] است. .PP به طور پیش‌فرض، بررسی CRL تنها برای گواهی انتهایی (برگ) طرف مقابل انجام می‌شود. با تنظیم \f[I]CRLcheckChain = yes\f[R]، بررسی CRL علاوه بر آن برای تمامی گواهی‌های موجود در زنجیره صادرکننده تأییدشده نیز صورت می‌پذیرد. حالت زنجیره کامل (Full-chain) در صورت مفقود بودن، منقضی شدن یا نامعتبر بودن CRL صادرکننده، ارتباط را قطع می‌کند (fail closed). .PP برای زنجیره‌ای مانند Root CA \-> Intermediate CA \-> Leaf، یک CRL ارائه‌شده توسط میانی برای گواهی برگ، و یک CRL ارائه‌شده توسط ریشه برای گواهی میانی مورد نیاز است. .PP پیش‌فرض: no .RE .IP \(bu 2 \f[B]curves\f[R] = list .RS 2 .PP منحنی‌های ECDH جداشده با `:' .PP نکته: این گزینه تنها برای سوکت‌های حالت سرور پشتیبانی می‌شود. .PP برای نسخه‌های OpenSSL قدیمی‌تر از 1.1.1 تنها نام یک منحنی مجاز است. .PP برای دریافت فهرست منحنی‌های پشتیبانی‌شده از دستور زیر استفاده کنید: .IP .EX openssl ecparam \-list_curves .EE .PP پیش‌فرض: .IP .EX X25519:P\-256:X448:P\-521:P\-384 (OpenSSL 1.1.1 یا جدیدتر) prime256v1 (OpenSSL قدیمی‌تر از 1.1.1) .EE .RE .IP \(bu 2 \f[B]logId\f[R] = TYPE .RS 2 .PP نوع شناسه اتصال .PP این شناسه به شما امکان می‌دهد ورودی‌های گزارش تولیدشده برای هر یک از اتصالات را از یکدیگر تشخیص دهید. .PP انواع پشتیبانی‌شده فعلی: .IP \(bu 2 \f[I]sequential\f[R] .RS 2 .PP شناسه عددی ترتیبی تنها درون یک نمونه منفرد از \f[B]stunnel\f[R] یکتا است، اما بسیار فشرده است. این نوع برای تحلیل دستی لاگ‌ها بسیار مناسب است. .RE .IP \(bu 2 \f[I]unique\f[R] .RS 2 .PP این شناسه حرفی-عددی به صورت سراسری یکتا است، اما از شماره ترتیبی طولانی‌تر است. این نوع برای تحلیل خودکار لاگ‌ها بیشترین کاربرد را دارد. .RE .IP \(bu 2 \f[I]thread\f[R] .RS 2 .PP شناسه ریسه (thread) سیستم‌عامل نه یکتا است (حتی درون یک نمونه منفرد \f[B]stunnel\f[R]) و نه کوتاه. این گزینه برای اشکال‌زدایی مشکلات نرم‌افزاری یا خطاهای پیکربندی بیشترین فایده را دارد. .RE .IP \(bu 2 \f[I]process\f[R] .RS 2 .PP شناسه پردازه (PID) سیستم‌عامل ممکن است در حالت inetd مفید باشد. .RE .PP پیش‌فرض: sequential .RE .IP \(bu 2 \f[B]debug\f[R] = LEVEL .RS 2 .PP سطح گزارش‌گیری و اشکال‌زدایی .PP سطح یکی از نام‌ها یا شماره‌های سطوح syslog است: emerg (0)، alert (1)، crit (2)، err (3)، warning (4)، notice (5)، info (6) یا debug (7). تمامی گزارش‌های سطح مشخص‌شده و کلیه سطوح با مقدار عددی کمتر از آن نمایش داده خواهند شد. پیش‌فرض برابر notice (5) است. .PP اگرچه سطح \f[I]debug = debug\f[R] یا \f[I]debug = 7\f[R] پرجزئیات‌ترین خروجی را تولید می‌کند، اما تنها برای استفاده توسعه‌دهندگان stunnel در نظر گرفته شده است. لطفاً فقط در صورتی از این مقدار استفاده کنید که توسعه‌دهنده باشید، یا قصد داشته باشید گزارش‌های خود را برای پشتیبانی فنی ما ارسال نمایید. در غیر این صورت، لاگ‌های تولیدشده قطعاً گیج‌کننده خواهند بود. .RE .IP \(bu 2 \f[B]delay\f[R] = yes | no .RS 2 .PP به تأخیر انداختن جستجوی DNS برای گزینه \f[I]connect\f[R] .PP این گزینه برای DNS پویا (Dynamic DNS)، یا زمانی که DNS هنگام راه‌اندازی \f[B]stunnel\f[R] در دسترس نیست (VPN کاربران سیار، پیکربندی‌های dial\-up) بسیار سودمند است. .PP حالت جستجوگر با تأخیر (Delayed resolver) به طور خودکار زمانی فعال می‌شود که stunnel هنگام راه‌اندازی در حل نام هر یک از مقصدهای \f[I]connect\f[R] برای یک سرویس با شکست روبرو شود. .PP حالت جستجوگر با تأخیر باعث اعمال اجباری \f[I]failover = prio\f[R] می‌شود. .PP پیش‌فرض: no .RE .IP \(bu 2 \f[B]engineId\f[R] = ENGINE_ID .RS 2 .PP انتخاب شناسه موتور برای این سرویس .RE .IP \(bu 2 \f[B]engineNum\f[R] = ENGINE_NUMBER .RS 2 .PP انتخاب شماره موتور برای این سرویس .PP شماره‌گذاری موتورها از 1 آغاز می‌شود. .RE .IP \(bu 2 \f[B]exec\f[R] = EXECUTABLE_PATH .RS 2 .PP اجرای یک برنامه محلی از نوع inetd .PP مسیر \f[I]exec\f[R] در صورت تعیین، نسبت به دایرکتوری \f[I]chroot\f[R] سنجیده می‌شود. .PP متغیرهای محیطی زیر روی پلتفرم‌های یونیکس تنظیم می‌شوند: REMOTE_HOST، REMOTE_PORT، SSL_CLIENT_DN، SSL_CLIENT_I_DN. .RE .IP \(bu 2 \f[B]execArgs\f[R] = $0 $1 $2 ... .RS 2 .PP آرگومان‌های \f[I]exec\f[R] شامل نام برنامه ($0) .PP کوتیشن‌گذاری در حال حاضر پشتیبانی نمی‌شود. آرگومان‌ها با مقدار دلخواهی از فاصله خالی از یکدیگر تفکیک می‌شوند. .RE .IP \(bu 2 \f[B]failover\f[R] = rr | prio .RS 2 .PP راهبرد بازگشت از خرابی (Failover) برای چندین مقصد \(dqconnect\(dq. .IP \(bu 2 \f[I]rr\f[R] .RS 2 .PP نوبت‌گردشی (round robin) \- توزیع بار عادلانه .RE .IP \(bu 2 \f[I]prio\f[R] .RS 2 .PP اولویت \- استفاده از ترتیبی که در فایل پیکربندی مشخص شده است .RE .PP پیش‌فرض: prio .RE .IP \(bu 2 \f[B]ident\f[R] = USERNAME .RS 2 .PP استفاده از بررسی نام کاربری IDENT (RFC 1413) .RE .IP \(bu 2 \f[B]include\f[R] = DIRECTORY .RS 2 .PP شامل کردن تمامی بخش‌های فایل پیکربندی موجود در DIRECTORY .PP فایل‌ها به ترتیب صعودی الفبایی نام‌هایشان وارد می‌شوند. قاعده نام‌گذاری پیشنهادی برای فایل‌ها به این صورت است: .PP برای گزینه‌های عمومی: .IP .EX 00\-global.conf .EE .PP برای گزینه‌های محلی سطح سرویس: .IP .EX 01\-service.conf 02\-service.conf .EE .RE .IP \(bu 2 \f[B]key\f[R] = KEY_FILE | URI .RS 2 .PP کلید خصوصی برای گواهی مشخص‌شده با گزینه \f[I]cert\f[R] .PP برای احراز هویت مالک گواهی به یک کلید خصوصی نیاز است. از آنجا که این فایل باید محرمانه باقی بماند، فقط باید توسط مالکش قابل خواندن باشد. روی سیستم‌های یونیکس می‌توانید از دستور زیر استفاده کنید: .IP .EX chmod 600 keyfile .EE .PP در صورت فعال بودن یک موتور رمزنگاری یا ارائه‌دهنده سخت‌افزاری، از این پارامتر به عنوان شناسه کلید خصوصی (PKCS#11 URI) نیز استفاده می‌شود. .PP نکته: ارائه‌دهنده (provider) نیازمند OpenSSL 3.0 یا جدیدتر است .PP پیش‌فرض: مقدار گزینه \f[I]cert\f[R] .RE .IP \(bu 2 \f[B]libwrap\f[R] = yes | no .RS 2 .PP فعال یا غیرفعال کردن استفاده از /etc/hosts.allow و /etc/hosts.deny. .PP پیش‌فرض: no (از نسخه 5.00) .RE .IP \(bu 2 \f[B]local\f[R] = HOST .RS 2 .PP به طور پیش‌فرض، نشانی IP رابط خروجی به عنوان مبدأ برای اتصالات راه دور استفاده می‌شود. از این گزینه برای مقیدسازی (bind) یک نشانی IP محلی ایستا به جای آن استفاده کنید. .RE .IP \(bu 2 \f[B]OCSP\f[R] = URL .RS 2 .PP انتخاب پاسخ‌دهنده OCSP برای اعتبارسنجی گواهی طرف مقابل (موجودیت انتهایی یا برگ) .RE .IP \(bu 2 \f[B]OCSPaia\f[R] = yes | no .RS 2 .PP اعتبارسنجی گواهی‌ها با پاسخ‌دهندگان OCSP مندرج در AIA آنها .PP این گزینه به \f[I]stunnel\f[R] امکان می‌دهد گواهی‌ها را با فهرستی از نشانی‌های اینترنتی پاسخ‌دهنده OCSP که از افزونه AIA (دسترسی به اطلاعات مرجع یا Authority Information Access) آنها استخراج شده است، اعتبارسنجی کند. .RE .IP \(bu 2 \f[B]OCSPflag\f[R] = OCSP_FLAG .RS 2 .PP مشخص کردن پرچم پاسخ‌دهنده OCSP .PP می‌توان از چندین \f[I]OCSPflag\f[R] برای تعیین چندین پرچم استفاده کرد. .PP پرچم‌های پشتیبانی‌شده در حال حاضر: NOCERTS، NOINTERN، NOSIGS، NOCHAIN، NOVERIFY، NOEXPLICIT، NOCASIGN، NODELEGATED، NOCHECKS، TRUSTOTHER، RESPID_KEY، NOTIME .RE .IP \(bu 2 \f[B]OCSPnonce\f[R] = yes | no .RS 2 .PP ارسال و اعتبارسنجی افزونه nonce مربوط به OCSP .PP این گزینه از پروتکل OCSP در برابر حملات بازپخش (replay attacks) محافظت می‌کند. به دلیل بار پردازشی محاسباتی آن، افزونه nonce معمولاً فقط در پاسخ‌دهنده‌های داخلی (مانند شبکه‌های سازمانی) پشتیبانی می‌شود، و نه در پاسخ‌دهنده‌های عمومی OCSP. .RE .IP \(bu 2 \f[B]OCSPrequire\f[R] = yes | no .RS 2 .PP الزام به دریافت یک پاسخ قاطع از سوی OCSP .PP غیرفعال کردن این گزینه اجازه برقراری ارتباط را می‌دهد حتی اگر هیچ پاسخ قاطعی از طریق منگنه‌سازی (stapling) و درخواست مستقیم به پاسخ‌دهنده OCSP دریافت نشده باشد. .PP پیش‌فرض: yes .RE .IP \(bu 2 \f[B]options\f[R] = SSL_OPTIONS .RS 2 .PP گزینه‌های کتابخانه \f[B]OpenSSL\f[R] .PP پارامتر، نام گزینه \f[B]OpenSSL\f[R] است همان‌گونه که در راهنمای \f[I]SSL_CTX_set_options(3ssl)\f[R] توصیف شده است، اما بدون پیشوند \f[I]SSL_OP_\f[R]. دستور \f[I]stunnel \-options\f[R] گزینه‌هایی را که در ترکیب کنونی \f[I]stunnel\f[R] و کتابخانه \f[I]OpenSSL\f[R] مورد استفاده برای ساخت آن مجاز هستند فهرست می‌کند. .PP می‌توان از چندین خط \f[I]options\f[R] برای مشخص کردن چندین گزینه استفاده کرد. نام گزینه می‌تواند با یک خط تیره (\(dq\-\(dq) پیشوند شود تا آن گزینه غیرفعال گردد. .PP برای مثال، برای سازگاری با پیاده‌سازی ناقص TLS در Eudora، می‌توان از گزینه زیر استفاده کرد: .IP .EX options = DONT_INSERT_EMPTY_FRAGMENTS .EE .PP پیش‌فرض: .IP .EX options = NO_SSLv2 options = NO_SSLv3 .EE .PP در صورت کامپایل با \f[B]OpenSSL 1.1.0\f[R] یا جدیدتر، به جای غیرفعال کردن نگارش‌های خاصی از پروتکل TLS، از گزینه \f[I]sslVersionMax\f[R] یا \f[I]sslVersionMin\f[R] استفاده کنید. .RE .IP \(bu 2 \f[B]protocol\f[R] = PROTO .RS 2 .PP پروتکل لایه کاربرد برای مذاکره TLS .PP این گزینه مذاکره اولیه و وابسته به پروتکل رمزنگاری TLS را فعال می‌کند. گزینه \f[I]protocol\f[R] نباید همراه با رمزنگاری TLS روی یک پورت جداگانه استفاده شود. .PP پروتکل‌های پشتیبانی‌شده در حال حاضر: .IP \(bu 2 \f[I]cifs\f[R] .RS 2 .PP افزونه اختصاصی (بدون مستندات رسمی) از پروتکل CIFS که در Samba پیاده‌سازی شده بود. پشتیبانی از این افزونه در Samba 3.0.0 متوقف گردید. .RE .IP \(bu 2 \f[I]capwin\f[R] .RS 2 .PP \c .UR https://www.capwin.org .UE \c \ پشتیبانی از برنامه .RE .IP \(bu 2 \f[I]capwinctrl\f[R] .RS 2 .PP \c .UR https://www.capwin.org .UE \c \ پشتیبانی از برنامه .PP این پروتکل تنها در حالت کلاینت پشتیبانی می‌شود. .RE .IP \(bu 2 \f[I]connect\f[R] .RS 2 .PP بر پایه بخش 5.2 از RFC 2817 \- \f[I]ارتقا به TLS درون HTTP/1.1\f[R] \- \f[I]درخواست یک تونل با CONNECT\f[R] .PP این پروتکل تنها در حالت کلاینت پشتیبانی می‌شود. .RE .IP \(bu 2 \f[I]imap\f[R] .RS 2 .PP بر پایه RFC 2595 \- \f[I]استفاده از TLS با IMAP، POP3 و ACAP\f[R] .RE .IP \(bu 2 \f[I]ldap\f[R] .RS 2 .PP بر پایه RFC 2830 \- \f[I]پروتکل سبک‌وزن دسترسی به دایرکتوری (نگارش 3): افزونه امنیت لایه انتقال\f[R] .RE .IP \(bu 2 \f[I]nntp\f[R] .RS 2 .PP بر پایه RFC 4642 \- \f[I]استفاده از امنیت لایه انتقال (TLS) با پروتکل انتقال اخبار شبکه (NNTP)\f[R] .PP این پروتکل تنها در حالت کلاینت پشتیبانی می‌شود. .RE .IP \(bu 2 \f[I]pgsql\f[R] .RS 2 .PP بر پایه \c .UR https://www.postgresql.org/docs/8.3/static/protocol-flow.html#AEN73982 .UE \c .RE .IP \(bu 2 \f[I]pop3\f[R] .RS 2 .PP بر پایه RFC 2449 \- \f[I]سازوکار افزونه‌های POP3\f[R] .RE .IP \(bu 2 \f[I]proxy\f[R] .RS 2 .PP ارسال نشانی IP اصلی کلاینت با پروتکل HAProxy PROXY نگارش 1 \c .UR https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt .UE \c .RE .IP \(bu 2 \f[I]smtp\f[R] .RS 2 .PP بر پایه RFC 2487 \- \f[I]افزونه سرویس SMTP برای SMTP امن بر بستر TLS\f[R] .RE .IP \(bu 2 \f[I]socks\f[R] .RS 2 .PP نگارش‌های 4، 4a و 5 از SOCKS پشتیبانی می‌شوند. خود پروتکل SOCKS درون لایه رمزنگاری TLS کپسوله‌سازی می‌شود تا از نشانی مقصد نهایی محافظت شود. .PP \c .UR https://www.openssh.com/txt/socks4.protocol .UE \c .PP \c .UR https://www.openssh.com/txt/socks4a.protocol .UE \c .PP دستور BIND در پروتکل SOCKS پشتیبانی نمی‌شود. پارامتر USERID نادیده گرفته می‌شود. .PP برای نمونه فایل‌های پیکربندی VPN مبتنی بر رمزنگاری SOCKS به بخش مثال‌ها مراجعه کنید. .RE .RE .IP \(bu 2 \f[B]protocolAuthentication\f[R] = AUTHENTICATION .RS 2 .PP نوع احراز هویت برای مذاکرات پروتکل .PP در حال حاضر این گزینه فقط در پروتکل‌های سمت کلاینت `connect' و `smtp' پشتیبانی می‌شود. .PP انواع احراز هویت پشتیبانی‌شده برای پروتکل `connect' عبارتند از `basic' یا `ntlm'. نوع احراز هویت پیش‌فرض `connect' برابر `basic' است. .PP انواع احراز هویت پشتیبانی‌شده برای پروتکل `smtp' عبارتند از `plain' یا `login'. نوع احراز هویت پیش‌فرض `smtp' برابر `plain' است. .RE .IP \(bu 2 \f[B]protocolDomain\f[R] = DOMAIN .RS 2 .PP دامنه برای مذاکرات پروتکل .PP در حال حاضر این گزینه فقط در پروتکل سمت کلاینت `connect' پشتیبانی می‌شود. .RE .IP \(bu 2 \f[B]protocolHeader\f[R] = HEADER .RS 2 .PP سرآیند (header) برای مذاکرات پروتکل .PP در حال حاضر این گزینه فقط در پروتکل سمت کلاینت `connect' پشتیبانی می‌شود. .RE .IP \(bu 2 \f[B]protocolHost\f[R] = ADDRESS .RS 2 .PP نشانی میزبان برای مذاکرات پروتکل .PP برای مذاکرات پروتکل `connect'، گزینه \f[I]protocolHost\f[R] مقدار HOST:PORT سرور نهایی TLS را که پروکسی باید به آن متصل شود مشخص می‌نماید. سرور پروکسی که مستقیماً توسط \f[B]stunnel\f[R] به آن متصل می‌شود باید با گزینه \f[I]connect\f[R] مشخص گردد. .PP برای مذاکرات پروتکل `smtp'، گزینه \f[I]protocolHost\f[R] مقدار کلاینت SMTP HELO/EHLO را کنترل می‌کند. .RE .IP \(bu 2 \f[B]protocolPassword\f[R] = PASSWORD .RS 2 .PP گذرواژه برای مذاکرات پروتکل .PP در حال حاضر این گزینه فقط در پروتکل‌های سمت کلاینت `connect' و `smtp' پشتیبانی می‌شود. .RE .IP \(bu 2 \f[B]protocolUsername\f[R] = USERNAME .RS 2 .PP نام کاربری برای مذاکرات پروتکل .PP در حال حاضر این گزینه فقط در پروتکل‌های سمت کلاینت `connect' و `smtp' پشتیبانی می‌شود. .RE .IP \(bu 2 \f[B]PSKidentity\f[R] = IDENTITY .RS 2 .PP شناسه PSK برای کلاینت PSK .PP از \f[I]PSKidentity\f[R] می‌توان در کلاینت‌های \f[B]stunnel\f[R] برای انتخاب شناسه PSK مورد استفاده جهت احراز هویت بهره برد. این گزینه در بخش‌های سرور نادیده گرفته می‌شود. .PP پیش‌فرض: اولین شناسه مشخص‌شده در فایل \f[I]PSKsecrets\f[R]. .RE .IP \(bu 2 \f[B]PSKsecrets\f[R] = FILE .RS 2 .PP فایل حاوی شناسه‌های PSK و کلیدهای متناظر آنها .PP هر خط از فایل در قالب زیر است: .IP .EX IDENTITY:KEY .EE .PP کلیدهای هگزادسیمال به صورت خودکار به فرمت دودویی تبدیل می‌شوند. طول کلیدها باید حداقل 16 بایت باشد که مستلزم حداقل 32 نویسه هگزادسیمال است. این فایل نباید برای عموم کاربران قابل خواندن یا نوشتن باشد. .RE .IP \(bu 2 \f[B]pty\f[R] = yes | no (فقط یونیکس) .RS 2 .PP تخصیص یک شبه‌ترمینال (pseudoterminal) برای گزینه `exec' .RE .IP \(bu 2 \f[B]redirect\f[R] = [HOST:]PORT .RS 2 .PP تغییر مسیر اتصالات کلاینت TLS در صورت شکست در احراز هویت مبتنی بر گواهی .PP این گزینه فقط در حالت سرور کار می‌کند. برخی مذاکرات پروتکل نیز با گزینه \f[I]redirect\f[R] ناسازگار هستند. .RE .IP \(bu 2 \f[B]renegotiation\f[R] = yes | no .RS 2 .PP پشتیبانی از مذاکره مجدد TLS (renegotiation) .PP کاربردهای مذاکره مجدد TLS شامل برخی سناریوهای احراز هویت یا تعویض مجدد کلید در اتصالات طولانی‌مدت است. .PP از سوی دیگر این ویژگی می‌تواند حمله منع سرویس (DoS) از طریق مصرف شدید پردازنده را تسهیل کند: .PP \c .UR https://vincent.bernat.im/en/blog/2011-ssl-dos-mitigation.html .UE \c .PP لطفاً توجه داشته باشید که غیرفعال کردن مذاکره مجدد TLS این مسئله را به طور کامل رفع نمی‌کند. .PP پیش‌فرض: yes (در صورت پشتیبانی \f[B]OpenSSL\f[R]) .RE .IP \(bu 2 \f[B]reset\f[R] = yes | no .RS 2 .PP تلاش برای استفاده از پرچم TCP RST جهت اعلام خطا .PP این گزینه روی برخی پلتفرم‌ها پشتیبانی نمی‌شود. .PP پیش‌فرض: yes .RE .IP \(bu 2 \f[B]retry\f[R] = yes | no | DELAY .RS 2 .PP اتصال مجدد یک بخش connect+exec پس از قطع شدن آن .PP مقدار DELAY تعداد میلی‌ثانیه‌ها پیش از تلاش مجدد را مشخص می‌کند. \(dqretry = yes\(dq همان اثر \(dqretry = 1000\(dq را دارد. .PP پیش‌فرض: no .RE .IP \(bu 2 \f[B]securityLevel\f[R] = LEVEL .RS 2 .PP تنظیم سطح امنیت .PP معنای هر سطح در زیر توصیف شده است: .IP \(bu 2 سطح 0 (level 0) .RS 2 .PP همه چیز مجاز است. .RE .IP \(bu 2 سطح 1 (level 1) .RS 2 .PP سطح امنیت متناظر با حداقل 80 بیت امنیت است. هر پارامتری که امنیتی کمتر از 80 بیت ارائه دهد حذف می‌گردد. در نتیجه کلیدهای RSA، DSA و DH کوتاه‌تر از 1024 بیت و کلیدهای ECC کوتاه‌تر از 160 بیت ممنوع هستند. کلیه مجموعه‌رمزهای صادراتی (export cipher suites) ممنوع هستند چرا که همگی کمتر از 80 بیت امنیت دارند. نسخه 2 پروتکل SSL ممنوع است. هرگونه مجموعه‌رمز که از MD5 برای MAC استفاده کند نیز ممنوع است. علاوه بر این، پروتکل‌های SSLv3، TLS 1.0 و TLS 1.1 همگی در OpenSSL 3.0 و جدیدتر غیرفعال هستند. .RE .IP \(bu 2 سطح 2 (level 2) .RS 2 .PP سطح امنیت روی 112 بیت امنیت تنظیم می‌شود. در نتیجه کلیدهای RSA، DSA و DH کوتاه‌تر از 2048 بیت و کلیدهای ECC کوتاه‌تر از 224 بیت ممنوع هستند. علاوه بر موارد مستثنی در سطح 1، هرگونه مجموعه‌رمز که از RC4 استفاده کند نیز ممنوع است. فشرده‌سازی غیرفعال است. نسخه 3 پروتکل SSL نیز برای نگارش‌های OpenSSL قدیمی‌تر از 3.0 مجاز نیست. .RE .IP \(bu 2 سطح 3 (level 3) .RS 2 .PP سطح امنیت روی 128 بیت امنیت تنظیم می‌شود. در نتیجه کلیدهای RSA، DSA و DH کوتاه‌تر از 3072 بیت و کلیدهای ECC کوتاه‌تر از 256 بیت ممنوع هستند. علاوه بر موارد مستثنی در سطح 2، مجموعه‌رمزهایی که رازداری پیشرو (forward secrecy) را ارائه نمی‌دهند ممنوع هستند. بلیت‌های نشست (Session tickets) غیرفعال هستند. نگارش‌های TLS پایین‌تر از 1.1 برای نسخه‌های OpenSSL قدیمی‌تر از 3.0 مجاز نیستند. .RE .IP \(bu 2 سطح 4 (level 4) .RS 2 .PP سطح امنیت روی 192 بیت امنیت تنظیم می‌شود. در نتیجه کلیدهای RSA، DSA و DH کوتاه‌تر از 7680 بیت و کلیدهای ECC کوتاه‌تر از 384 بیت ممنوع هستند. مجموعه‌رمزهایی که از SHA1 برای MAC استفاده می‌کنند ممنوع هستند. نگارش‌های TLS پایین‌تر از 1.2 برای نسخه‌های OpenSSL قدیمی‌تر از 3.0 مجاز نیستند. .RE .IP \(bu 2 سطح 5 (level 5) .RS 2 .PP سطح امنیت روی 256 بیت امنیت تنظیم می‌شود. در نتیجه کلیدهای RSA، DSA و DH کوتاه‌تر از 15360 بیت و کلیدهای ECC کوتاه‌تر از 512 بیت ممنوع هستند. .RE .IP \(bu 2 پیش‌فرض: 2 .PP گزینه \f[I]securityLevel\f[R] تنها در صورت کامپایل با \f[B]OpenSSL 1.1.0\f[R] و جدیدتر در دسترس است. .RE .IP \(bu 2 \f[B]requireCert\f[R] = yes | no .RS 2 .PP الزام به ارائه گواهی کلاینت برای \f[I]verifyChain\f[R] یا \f[I]verifyPeer\f[R] .PP با تنظیم \f[I]requireCert\f[R] روی \f[I]no\f[R]، سرور \f[B]stunnel\f[R] اتصالات کلاینت‌هایی را که گواهی ارائه نکرده‌اند می‌پذیرد. .PP هر دو گزینه \f[I]verifyChain = yes\f[R] و \f[I]verifyPeer = yes\f[R] مستلزم \f[I]requireCert = yes\f[R] هستند. .PP پیش‌فرض: no .RE .IP \(bu 2 \f[B]setgid\f[R] = GROUP (فقط یونیکس) .RS 2 .PP شناسه گروه یونیکس (GID) .PP به عنوان گزینه عمومی: اجرای setgid() به گروه مشخص‌شده در حالت دیمن و پاک کردن تمامی گروه‌های دیگر. .PP به عنوان گزینه سطح سرویس: تنظیم گروه سوکت یونیکس مشخص‌شده با \(dqaccept\(dq. .RE .IP \(bu 2 \f[B]setuid\f[R] = USER (فقط یونیکس) .RS 2 .PP شناسه کاربر یونیکس (UID) .PP به عنوان گزینه عمومی: اجرای setuid() به کاربر مشخص‌شده در حالت دیمن. .PP به عنوان گزینه سطح سرویس: تنظیم مالک سوکت یونیکس مشخص‌شده با \(dqaccept\(dq. .RE .IP \(bu 2 \f[B]sessionCacheSize\f[R] = NUM_ENTRIES .RS 2 .PP اندازه حافظه موقت (کش) نشست‌ها .PP گزینه \f[I]sessionCacheSize\f[R] حداکثر تعداد مدخل‌های حافظه موقت داخلی نشست‌ها را مشخص می‌کند. .PP می‌توان از مقدار 0 برای اندازه نامحدود استفاده کرد. به دلیل خطر حمله منع سرویس (DoS) از طریق تخلیه حافظه، این مقدار برای محیط‌های عملیاتی پیشنهاد نمی‌شود. .RE .IP \(bu 2 \f[B]sessionCacheTimeout\f[R] = TIMEOUT .RS 2 .PP مهلت زمانی حافظه موقت نشست‌ها .PP این مقدار، تعداد ثانیه‌های نگهداری نشست‌های کش‌شده‌ی TLS است. .RE .IP \(bu 2 \f[B]sessionResume\f[R] = yes | no .RS 2 .PP مجاز یا غیرمجاز بودن ازسرگیری نشست (session resumption) .PP پیش‌فرض: yes .RE .IP \(bu 2 \f[B]sessiond\f[R] = HOST:PORT .RS 2 .PP نشانی سرور کش TLS متعلق به sessiond .RE .IP \(bu 2 \f[B]sni\f[R] = SERVICE_NAME:SERVER_NAME_PATTERN (حالت سرور) .RS 2 .PP استفاده از سرویس به عنوان یک سرویس ثانویه (سرور مجازی مبتنی بر نام) برای افزونه Server Name Indication (SNI) در TLS (RFC 3546). .PP شناسه \f[I]SERVICE_NAME\f[R] سرویس اصلی را مشخص می‌کند که اتصالات کلاینت را با گزینه \f[I]accept\f[R] می‌پذیرد. عبارت \f[I]SERVER_NAME_PATTERN\f[R] نام میزبان مورد نظر برای تغییر مسیر را مشخص می‌نماید. الگو می‌تواند با نویسه `*' آغاز شود، برای مثال `*.example.com'. معمولاً چندین سرویس ثانویه برای یک سرویس اصلی واحد مشخص می‌شوند. گزینه \f[I]sni\f[R] را می‌توان بیش از یک بار درون یک سرویس ثانویه واحد نیز تعریف کرد. .PP این سرویس و همچنین سرویس اصلی نمی‌توانند در حالت کلاینت پیکربندی شوند. .PP گزینه \f[I]connect\f[R] در سرویس ثانویه هنگام مشخص شدن گزینه \f[I]protocol\f[R] نادیده گرفته می‌شود، چرا که \f[I]protocol\f[R] پیش از دست‌تکانی TLS به میزبان راه دور متصل می‌گردد. .PP بررسی‌های Libwrap (فقط یونیکس) دو بار انجام می‌شوند: یک بار با نام سرویس اصلی پس از پذیرش اتصال TCP، و یک بار با نام سرویس ثانویه در طول دست‌تکانی TLS. .PP گزینه \f[I]sni\f[R] تنها در صورت کامپایل با \f[B]OpenSSL 1.0.0\f[R] و جدیدتر در دسترس است. .RE .IP \(bu 2 \f[B]sni\f[R] = SERVER_NAME (حالت کلاینت) .RS 2 .PP استفاده از پارامتر به عنوان مقدار افزونه TLS Server Name Indication (RFC 3546). .PP خالی گذاشتن SERVER_NAME ارسال افزونه SNI را غیرفعال می‌کند. .PP گزینه \f[I]sni\f[R] تنها در صورت کامپایل با \f[B]OpenSSL 1.0.0\f[R] و جدیدتر در دسترس است. .RE .IP \(bu 2 \f[B]socket\f[R] = a|l|r:OPTION=VALUE[:VALUE] .RS 2 .PP تنظیم یک گزینه روی سوکت پذیرش (accept)، محلی (local) یا راه دور (remote) .PP مقادیر گزینه linger به صورت l_onof:l_linger هستند. مقادیر مربوط به زمان به صورت tv_sec:tv_usec می‌باشند. .PP مثال‌ها: .IP .EX socket = l:SO_LINGER=1:60 set one minute timeout for closing local socket socket = r:SO_OOBINLINE=yes place out\-of\-band data directly into the receive data stream for remote sockets socket = a:SO_REUSEADDR=no disable address reuse (enabled by default) socket = a:SO_BINDTODEVICE=lo only accept connections on loopback interface .EE .RE .IP \(bu 2 \f[B]sslVersion\f[R] = SSL_VERSION .RS 2 .PP انتخاب نگارش پروتکل TLS .PP نگارش‌های پشتیبانی‌شده: all, SSLv2, SSLv3, TLSv1, TLSv1.1, TLSv1.2, TLSv1.3 .PP در دسترس بودن پروتکل‌های خاص به کتابخانه OpenSSL لینک‌شده بستگی دارد. نگارش‌های قدیمی‌تر OpenSSL از TLSv1.1، TLSv1.2 و TLSv1.3 پشتیبانی نمی‌کنند. نگارش‌های جدیدتر OpenSSL از SSLv2 پشتیبانی نمی‌کنند. .PP پروتکل‌های منسوخ‌شده SSLv2 و SSLv3 در حال حاضر به طور پیش‌فرض غیرفعال هستند. .PP تنظیم گزینه .IP .EX sslVersion = SSL_VERSION .EE .PP در صورت کامپایل با \f[B]OpenSSL 1.1.0\f[R] و جدیدتر، معادل گزینه‌های زیر است: .IP .EX sslVersionMax = SSL_VERSION sslVersionMin = SSL_VERSION .EE .RE .IP \(bu 2 \f[B]sslVersionMax\f[R] = SSL_VERSION .RS 2 .PP حداکثر نگارش‌های پشتیبانی‌شده پروتکل .PP نگارش‌های پشتیبانی‌شده: all, SSLv3, TLSv1, TLSv1.1, TLSv1.2, TLSv1.3 .PP مقدار \f[I]all\f[R] نگارش‌های پروتکل را تا بالاترین نگارش پشتیبانی‌شده توسط کتابخانه OpenSSL لینک‌شده فعال می‌کند. .PP در دسترس بودن پروتکل‌های خاص به کتابخانه OpenSSL پیوندشده بستگی دارد. .PP گزینه \f[I]sslVersionMax\f[R] تنها در صورت کامپایل با \f[B]OpenSSL 1.1.0\f[R] و جدیدتر در دسترس است. .PP پیش‌فرض: all .RE .IP \(bu 2 \f[B]sslVersionMin\f[R] = SSL_VERSION .RS 2 .PP حداقل نگارش‌های پشتیبانی‌شده پروتکل .PP نگارش‌های پشتیبانی‌شده: all, SSLv3, TLSv1, TLSv1.1, TLSv1.2, TLSv1.3 .PP مقدار \f[I]all\f[R] نگارش‌های پروتکل را تا پایین‌ترین نگارش پشتیبانی‌شده توسط کتابخانه OpenSSL پیوندشده فعال می‌کند. .PP در دسترس بودن پروتکل‌های خاص به کتابخانه OpenSSL پیوندشده بستگی دارد. .PP گزینه \f[I]sslVersionMin\f[R] تنها در صورت کامپایل با \f[B]OpenSSL 1.1.0\f[R] و جدیدتر در دسترس است. .PP پیش‌فرض: TLSv1 .RE .IP \(bu 2 \f[B]stack\f[R] = BYTES (به جز مدل FORK) .RS 2 .PP اندازه پشته (stack) پردازنده برای ریسه‌های ایجادشده .PP اندازه پشته بیش از حد برای ریسه‌ها مصرف حافظه مجازی را افزایش می‌دهد. اندازه ناکافی پشته ممکن است موجب فروپاشی (crash) برنامه گردد. .PP پیش‌فرض: 65536 بایت (کافی برای تمامی پلتفرم‌های آزمایش‌شده توسط ما) .RE .IP \(bu 2 \f[B]ticketKeySecret\f[R] = SECRET .RS 2 .PP کلید متقارن هگزادسیمال مورد استفاده برای حفاظت از محرمانگی بلیت نشست (session ticket) .PP بلیت‌های نشست تعریف‌شده در RFC 5077 قابلیت بهبودیافته‌ای برای ازسرگیری نشست ارائه می‌دهند، به طوری که نگهداری وضعیت هر نشست در حافظه موقت سمت سرور الزامی نخواهد بود. .PP ترکیب گزینه‌های \f[I]ticketKeySecret\f[R] و \f[I]ticketMacSecret\f[R] امکان ازسرگیری یک نشست مذاکره‌شده را روی گره‌های دیگر خوشه (cluster) یا پس از راه‌اندازی مجدد سرور فراهم می‌کند. .PP طول کلید باید 16 یا 32 بایت باشد، که دقیقاً معادل 32 یا 64 رقم هگزادسیمال است. می‌توان به صورت اختیاری از دو‌نقطه بین بایت‌های دوحرفی هگزادسیمال استفاده کرد. .PP این گزینه فقط در حالت سرور کار می‌کند. .PP گزینه \f[I]ticketKeySecret\f[R] تنها در صورت کامپایل با \f[B]OpenSSL 1.0.0\f[R] و جدیدتر در دسترس است. .PP برای پشتیبانی از ticket در نسخه‌های OpenSSL قدیمی‌تر از 1.1.1، غیرفعال کردن گزینه \f[I]NO_TICKET\f[R] الزامی است، اما توجه داشته باشید که این گزینه با گزینه \f[I]redirect\f[R] ناسازگار است. .RE .IP \(bu 2 \f[B]ticketMacSecret\f[R] = SECRET .RS 2 .PP کلید متقارن هگزادسیمال مورد استفاده برای حفاظت از یکپارچگی بلیت نشست .PP طول کلید باید 16 یا 32 بایت باشد، که دقیقاً معادل 32 یا 64 رقم هگزادسیمال است. می‌توان به صورت اختیاری از دو‌نقطه بین بایت‌های دوحرفی هگزادسیمال استفاده کرد. .PP این گزینه فقط در حالت سرور کار می‌کند. .PP گزینه \f[I]ticketMacSecret\f[R] تنها در صورت کامپایل با \f[B]OpenSSL 1.0.0\f[R] و جدیدتر در دسترس است. .RE .IP \(bu 2 \f[B]TIMEOUTbusy\f[R] = SECONDS .RS 2 .PP زمان انتظار برای داده‌های مورد انتظار .RE .IP \(bu 2 \f[B]TIMEOUTclose\f[R] = SECONDS .RS 2 .PP زمان انتظار برای close_notify (برای MSIE دارای اشکال روی 0 تنظیم شود) .RE .IP \(bu 2 \f[B]TIMEOUTconnect\f[R] = SECONDS .RS 2 .PP زمان انتظار برای اتصال به یک میزبان راه دور .RE .IP \(bu 2 \f[B]TIMEOUTidle\f[R] = SECONDS .RS 2 .PP مدت زمان باز نگه داشتن یک اتصال بیکار (idle) .RE .IP \(bu 2 \f[B]TIMEOUTocsp\f[R] = SECONDS .RS 2 .PP زمان انتظار برای اتصال به یک پاسخ‌دهنده OCSP .RE .IP \(bu 2 \f[B]transport\f[R] = tcp | udp .RS 2 .PP انتخاب پروتکل لایه انتقال .PP مقادیر پشتیبانی‌شده: .IP \(bu 2 \f[I]tcp\f[R] .RS 2 .PP استفاده از TLS استاندارد روی TCP (پیش‌فرض). .RE .IP \(bu 2 \f[I]udp\f[R] .RS 2 .PP استفاده از DTLS روی UDP. .PP هر دیتاگرام یک اتصال منطقی جدید را درون سرویس باز می‌کند. سرور برای هر کلاینت از یک سوکت متصل مجزا استفاده می‌نماید و کوکی‌های DTLS از حملات انعکاسی DDoS جلوگیری می‌کنند. .RE .PP پیش‌فرض: tcp .RE .IP \(bu 2 \f[B]transparent\f[R] = none | source | destination | both (فقط یونیکس) .RS 2 .PP فعال‌سازی پشتیبانی از پروکسی شفاف (transparent proxy) روی پلتفرم‌های منتخب .PP مقادیر پشتیبانی‌شده: .IP \(bu 2 \f[I]none\f[R] .RS 2 .PP غیرفعال‌سازی پشتیبانی از پروکسی شفاف. این مقدار پیش‌فرض است. .RE .IP \(bu 2 \f[I]source\f[R] .RS 2 .PP بازنویسی نشانی به گونه‌ای که دیمن پوشش‌یافته به نظر برسد از دستگاه کلاینت TLS متصل می‌شود به جای ماشینی که \f[B]stunnel\f[R] روی آن اجرا می‌شود. .PP این گزینه در حال حاضر در موارد زیر در دسترس است: .IP \(bu 2 حالت راه دور (گزینه \f[I]connect\f[R]) روی \f[I]Linux >=2.6.28\f[R] .RS 2 .PP این پیکربندی مستلزم اجرای \f[B]stunnel\f[R] با دسترسی ریشه (root) و بدون گزینه \f[I]setuid\f[R] است. .PP این پیکربندی نیازمند تنظیمات زیر برای iptables و مسیریابی است (احتمالاً در /etc/rc.local یا فایلی معادل): .IP .EX iptables \-t mangle \-N DIVERT iptables \-t mangle \-A PREROUTING \-p tcp \-m socket \-j DIVERT iptables \-t mangle \-A DIVERT \-j MARK \-\-set\-mark 1 iptables \-t mangle \-A DIVERT \-j ACCEPT ip rule add fwmark 1 lookup 100 ip route add local 0.0.0.0/0 dev lo table 100 echo 0 >/proc/sys/net/ipv4/conf/lo/rp_filter .EE .PP \f[B]stunnel\f[R] نیز باید با دسترسی ریشه و بدون گزینه \f[I]setuid\f[R] اجرا گردد. .RE .IP \(bu 2 حالت راه دور (گزینه \f[I]connect\f[R]) روی \f[I]Linux 2.2.x\f[R] .RS 2 .PP این پیکربندی نیازمند آن است که هسته با گزینه \f[I]transparent proxy\f[R] کامپایل شده باشد. سرویس متصل‌شده باید روی یک میزبان مجزا نصب شود. مسیریابی به سمت کلاینت‌ها باید از طریق سیستم \f[B]stunnel\f[R] عبور کند. .PP \f[B]stunnel\f[R] نیز باید با دسترسی ریشه و بدون گزینه \f[I]setuid\f[R] اجرا شود. .RE .IP \(bu 2 حالت راه دور (گزینه \f[I]connect\f[R]) روی \f[I]FreeBSD >=8.0\f[R] .RS 2 .PP این پیکربندی نیازمند تنظیمات اضافی فایروال و مسیریابی است. \f[B]stunnel\f[R] نیز باید با دسترسی ریشه و بدون گزینه \f[I]setuid\f[R] اجرا گردد. .RE .IP \(bu 2 حالت محلی (گزینه \f[I]exec\f[R]) .RS 2 .PP این پیکربندی از طریق پیش‌بارگذاری کتابخانه مشترک \f[I]libstunnel.so\f[R] کار می‌کند. متغیر محیطی _RLD_LIST روی Tru64، و متغیر LD_PRELOAD روی سایر پلتفرم‌ها استفاده می‌شود. .RE .RE .IP \(bu 2 \f[I]destination\f[R] .RS 2 .PP به جای گزینه \f[I]connect\f[R] از مقصد اصلی استفاده می‌شود. .PP یک بخش سرویس برای مقصد شفاف ممکن است به این شکل باشد: .IP .EX [transparent] client = yes accept = transparent = destination .EE .PP این پیکربندی برای کارکرد به تنظیمات iptables نیاز دارد، احتمالاً در /etc/rc.local یا فایل معادل آن. .PP برای یک مقصد اتصال که روی همان میزبان نصب شده است: .IP .EX /sbin/iptables \-t nat \-I OUTPUT \-p tcp \-\-dport \(rs \-m ! \-\-uid\-owner \(rs \-j DNAT \-\-to\-destination : .EE .PP برای یک مقصد اتصال که روی یک میزبان راه دور نصب شده است: .IP .EX /sbin/iptables \-I INPUT \-i eth0 \-p tcp \-\-dport \-j ACCEPT /sbin/iptables \-t nat \-I PREROUTING \-p tcp \-\-dport \(rs \-i eth0 \-j DNAT \-\-to\-destination : .EE .PP گزینه مقصد شفاف در حال حاضر تنها روی لینوکس پشتیبانی می‌شود. .RE .IP \(bu 2 \f[I]both\f[R] .RS 2 .PP استفاده همزمان از هر دو حالت پروکسی شفاف \f[I]source\f[R] و \f[I]destination\f[R]. .RE .PP دو گزینه موروثی و قدیمی نیز برای سازگاری رو به عقب پشتیبانی می‌شوند: .IP \(bu 2 \f[I]yes\f[R] .RS 2 .PP نام این گزینه به \f[I]source\f[R] تغییر یافته است. .RE .IP \(bu 2 \f[I]no\f[R] .RS 2 .PP نام این گزینه به \f[I]none\f[R] تغییر یافته است. .RE .RE .IP \(bu 2 \f[B]verify\f[R] = LEVEL .RS 2 .PP اعتبارسنجی گواهی طرف مقابل .PP این گزینه منسوخ شده و باید با گزینه‌های \f[I]verifyChain\f[R] و \f[I]verifyPeer\f[R] جایگزین گردد. .IP \(bu 2 سطح 0 (level 0) .RS 2 .PP درخواست زنجیره گواهی طرف مقابل و نادیده گرفتن آن. .RE .IP \(bu 2 سطح 1 (level 1) .RS 2 .PP اعتبارسنجی زنجیره گواهی طرف مقابل در صورت حضور آن. .RE .IP \(bu 2 سطح 2 (level 2) .RS 2 .PP اعتبارسنجی زنجیره گواهی طرف مقابل. .RE .IP \(bu 2 سطح 3 (level 3) .RS 2 .PP اعتبارسنجی زنجیره گواهی طرف مقابل و گواهی طرف مقابل (برگ) در برابر گواهی نصب‌شده به صورت محلی. .RE .IP \(bu 2 سطح 4 (level 4) .RS 2 .PP نادیده گرفتن زنجیره گواهی طرف مقابل و صرفاً اعتبارسنجی گواهی برگ طرف مقابل در برابر گواهی محلی. .RE .IP \(bu 2 پیش‌فرض .RS 2 .PP بدون اعتبارسنجی (No verify). .RE .RE .IP \(bu 2 \f[B]verifyChain\f[R] = yes | no .RS 2 .PP اعتبارسنجی زنجیره گواهی طرف مقابل از گواهی CA ریشه به بعد .PP برای اعتبارسنجی گواهی سرور، ضروری است که یک گواهی خاص با \f[I]checkHost\f[R] یا \f[I]checkIP\f[R] نیز الزام گردد. .PP گواهی خودامضاشده‌ی CA ریشه باید در فایل مشخص‌شده با \f[I]CAfile\f[R] یا در دایرکتوری مشخص‌شده با \f[I]CApath\f[R] ذخیره شود. .PP پیش‌فرض: no .RE .IP \(bu 2 \f[B]verifyPeer\f[R] = yes | no .RS 2 .PP اعتبارسنجی گواهی طرف مقابل (موجودیت انتهایی یا برگ) .PP گواهی برگ طرف مقابل باید در فایل مشخص‌شده با \f[I]CAfile\f[R] یا در دایرکتوری مشخص‌شده با \f[I]CApath\f[R] ذخیره شود. .PP پیش‌فرض: no .RE .SH "مقدار بازگشتی (RETURN VALUE)" \f[B]stunnel\f[R] در صورت موفقیت مقدار صفر و در صورت بروز خطا مقداری غیر صفر برمی‌گرداند. .SH "سیگنال‌ها (SIGNALS)" از سیگنال‌های زیر می‌توان برای کنترل \f[B]stunnel\f[R] در محیط یونیکس استفاده کرد: .IP \(bu 2 SIGHUP .RS 2 .PP بارگذاری مجدد اجباری فایل پیکربندی. .PP برخی از گزینه‌های عمومی دوباره بارگذاری نخواهند شد: .IP \(bu 2 chroot .IP \(bu 2 foreground .IP \(bu 2 pid .IP \(bu 2 setgid .IP \(bu 2 setuid .PP استفاده از گزینه `setuid' همچنین مانع از مقید شدن \f[B]stunnel\f[R] به پورت‌های ممتاز (<1024) در زمان بارگذاری مجدد پیکربندی می‌شود. .PP هنگامی که گزینه `chroot' استفاده می‌شود، \f[B]stunnel\f[R] تمام فایل‌های خود را (شامل فایل پیکربندی، گواهی‌ها، فایل گزارش و فایل pid) درون محیط ایزوله chroot جستجو خواهد کرد. .RE .IP \(bu 2 SIGUSR1 .RS 2 .PP بستن و بازگشایی مجدد فایل گزارش \f[B]stunnel\f[R]. از این قابلیت می‌توان برای چرخش فایل‌های لاگ (log rotation) استفاده کرد. .RE .IP \(bu 2 SIGUSR2 .RS 2 .PP ثبت فهرست اتصالات فعال در گزارش. .RE .IP \(bu 2 SIGTERM, SIGQUIT, SIGINT .RS 2 .PP خاموش کردن و توقف کامل \f[B]stunnel\f[R]. .RE .PP نتیجه ارسال هرگونه سیگنال دیگر به سرور نامشخص و تعریف‌نشده است. .SH "مثال‌ها (EXAMPLES)" به منظور ارائه کپسوله‌سازی TLS برای سرویس محلی \f[I]imapd\f[R] خود، از دستورات زیر استفاده کنید: .IP .EX [imapd] accept = 993 exec = /usr/sbin/imapd execArgs = imapd .EE .PP یا در حالت راه دور: .IP .EX [imapd] accept = 993 connect = 143 .EE .PP برای اینکه کلاینت ایمیل محلی شما بتواند به یک سرویس \f[I]imapd\f[R] مجهز به TLS روی سروری دیگر متصل شود، کلاینت ایمیل را برای اتصال به پورت 119 روی localhost پیکربندی کرده و از نمونه زیر استفاده نمایید: .IP .EX [imap] client = yes accept = 143 connect = servername:993 .EE .PP اگر می‌خواهید برای دیمن \f[I]pppd\f[R] خود روی پورت 2020 تونل‌سازی ایجاد کنید، از نمونه‌ای شبیه به این استفاده کنید: .IP .EX [vpn] accept = 2020 exec = /usr/sbin/pppd execArgs = pppd local pty = yes .EE .PP اگر قصد دارید از \f[B]stunnel\f[R] در حالت \f[I]inetd\f[R] برای راه‌اندازی پردازه imapd خود استفاده کنید، از این \f[I]stunnel.conf\f[R] استفاده نمایید. توجه داشته باشید که نباید هیچ بخش \f[I][service_name]\f[R] وجود داشته باشد. .IP .EX exec = /usr/sbin/imapd execArgs = imapd .EE .PP برای راه‌اندازی VPN مبتنی بر SOCKS، سرویس کلاینت زیر را پیکربندی کنید: .IP .EX [socks_client] client = yes accept = 127.0.0.1:1080 connect = vpn_server:9080 verifyPeer = yes CAfile = stunnel.pem .EE .PP پیکربندی متناظر روی میزبان vpn_server به این صورت است: .IP .EX [socks_server] protocol = socks accept = 9080 cert = stunnel.pem key = stunnel.key .EE .PP حال پیکربندی خود را روی ماشین کلاینت با دستور زیر آزمایش کنید: .IP .EX curl \-\-socks4a localhost http://www.example.com/ .EE .PP یک نمونه از پیکربندی SNI در حالت سرور: .IP .EX [virtual] ; primary service accept = 443 cert = default.pem connect = default.internal.mydomain.com:8080 [sni1] ; secondary service 1 sni = virtual:server1.mydomain.com cert = server1.pem connect = server1.internal.mydomain.com:8081 [sni2] ; secondary service 2 sni = virtual:server2.mydomain.com cert = server2.pem connect = server2.internal.mydomain.com:8082 verifyPeer = yes CAfile = server2\-allowed\-clients.pem .EE .PP نمونه‌ای از پیکربندی پیشرفته موتور رمزنگاری که امکان احراز هویت با کلیدهای خصوصی ذخیره‌شده در مخزن گواهی ویندوز را فراهم می‌کند (فقط ویندوز). با موتور CAPI نیازی به انتخاب دستی کلید کلاینت نخواهید داشت. کلید کلاینت به صورت خودکار بر اساس فهرست CAهای مورد اعتماد سرور انتخاب می‌شود. .IP .EX engine = capi [service] engineId = capi client = yes accept = 127.0.0.1:8080 connect = example.com:8443 .EE .PP نمونه‌ای از پیکربندی پیشرفته موتور رمزنگاری جهت استفاده از گواهی و کلید خصوصی متناظر از یک موتور pkcs11: .IP .EX engine = pkcs11 engineCtrl = MODULE_PATH:opensc\-pkcs11.so engineCtrl = PIN:123456 [service] engineId = pkcs11 client = yes accept = 127.0.0.1:8080 connect = example.com:843 cert = pkcs11:token=MyToken;object=MyCert key = pkcs11:token=MyToken;object=MyKey .EE .PP نمونه‌ای از پیکربندی پیشرفته موتور رمزنگاری جهت استفاده از گواهی و کلید خصوصی متناظر از یک توکن SoftHSM: .IP .EX engine = pkcs11 engineCtrl = MODULE_PATH:softhsm2.dll engineCtrl = PIN:12345 [service] engineId = pkcs11 client = yes accept = 127.0.0.1:8080 connect = example.com:843 cert = pkcs11:token=MyToken;object=KeyCert .EE .PP نمونه‌ای از پیکربندی پیشرفته ارائه‌دهنده (provider) جهت استفاده از گواهی و کلید خصوصی متناظر از یک ارائه‌دهنده `pkcs11prov`: .PP نکته: نیازمند OpenSSL 3.0 یا جدیدتر است .IP .EX setEnv = PKCS11_MODULE_PATH=opensc\-pkcs11.dll setEnv = PKCS11_PIN:123456 provider = pkcs11prov [service] client = yes accept = 127.0.0.1:8080 connect = example.com:843 cert = pkcs11:token=MyToken;object=MyCert key = pkcs11:token=MyToken;object=MyKey .EE .PP نکته: نیازمند OpenSSL 3.5 یا جدیدتر است .IP .EX provider = pkcs11prov providerParameter = pkcs11prov:pkcs11_module=opensc\-pkcs11.dll providerParameter = pkcs11prov:pin=123456 [service] client = yes accept = 127.0.0.1:8080 connect = example.com:843 cert = pkcs11:token=MyToken;object=MyCert key = pkcs11:token=MyToken;object=MyKey .EE .PP در ویندوز، کتابخانه PKCS#11 باید در دایرکتوری `ossl\-modules` قرار گیرد، یا مسیر کامل و مطلق آن در پارامتر `PKCS11_MODULE_PATH` یا `pkcs11_module` ارائه شود. .SH "نکات (NOTES)" .SS "محدودیت‌ها (RESTRICTIONS)" به دلیل ماهیت پروتکل FTP که از چندین پورت برای انتقال داده‌ها استفاده می‌کند، نمی‌توان از \f[B]stunnel\f[R] برای دیمن FTP استفاده کرد. با این وجود، نگارش‌های مجهز به TLS برای دیمن‌های FTP و telnet موجود هستند. .SS "حالت INETD (INETD MODE)" متداول‌ترین کاربرد \f[B]stunnel\f[R] گوش دادن روی یک پورت شبکه و برقراری ارتباط یا با یک پورت جدید از طریق گزینه connect، یا با یک برنامه جدید از طریق گزینه \f[I]exec\f[R] است. با این حال یک حالت ویژه زمانی رخ می‌دهد که بخواهید برنامه‌ای دیگر اتصالات ورودی را بپذیرد و \f[B]stunnel\f[R] را اجرا کند، برای مثال با \f[I]inetd\f[R]، \f[I]xinetd\f[R] یا \f[I]tcpserver\f[R]. .PP برای مثال، اگر خط زیر را در \f[I]inetd.conf\f[R] داشته باشید: .IP .EX imaps stream tcp nowait root \(atbindir\(at/stunnel stunnel \(atsysconfdir\(at/stunnel/imaps.conf .EE .PP در این موارد، برنامه با سبک \f[I]inetd\f[R] مسئول مقیدسازی سوکت شبکه (در بالا \f[I]imaps\f[R]) و تحویل آن به \f[B]stunnel\f[R] هنگام دریافت اتصال است. بنابراین نباید هیچ گزینه \f[I]accept\f[R] در \f[B]stunnel\f[R] تعریف شده باشد. تمام \f[I]گزینه‌های سطح سرویس\f[R] باید در بخش گزینه‌های عمومی قرار گیرند، و هیچ بخش \f[I][service_name]\f[R] وجود نخواهد داشت. برای مشاهده نمونه‌های پیکربندی به بخش \f[I]مثال‌ها (EXAMPLES)\f[R] مراجعه فرمایید. .SS "گواهی‌ها (CERTIFICATES)" هر دیمن مجهز به TLS باید یک گواهی معتبر X.509 به طرف مقابل ارائه دهد. همچنین برای رمزگشایی داده‌های ورودی به یک کلید خصوصی نیاز دارد. ساده‌ترین روش برای به دست آوردن گواهی و کلید، تولید آنها با بسته رایگان \f[B]OpenSSL\f[R] است. می‌توانید اطلاعات بیشتری درباره تولید گواهی‌ها در صفحات فهرست‌شده در زیر بیابید. .PP فایل \f[I].pem\f[R] باید شامل کلید خصوصی رمزگذاری‌نشده و یک گواهی امضاشده (نه یک درخواست گواهی یا CSR) باشد. بنابراین فایل باید به این صورت باشد: .IP .EX \-\-\-\-\-BEGIN RSA PRIVATE KEY\-\-\-\-\- [encoded key] \-\-\-\-\-END RSA PRIVATE KEY\-\-\-\-\- \-\-\-\-\-BEGIN CERTIFICATE\-\-\-\-\- [encoded certificate] \-\-\-\-\-END CERTIFICATE\-\-\-\-\- .EE .SS "تولید تصادفی (RANDOMNESS)" \f[B]stunnel\f[R] برای اینکه TLS بتواند از تصادفی‌سازی مناسبی بهره‌مند شود، نیاز دارد تولیدکننده اعداد شبه‌تصادفی (PRNG) را مقداردهی اولیه (seed) کند. منابع زیر به ترتیب بارگذاری می‌شوند تا داده‌های تصادفی کافی گردآوری شود: .IP \(bu 2 فایل مشخص‌شده با فلگ \f[I]RNDfile\f[R]. .IP \(bu 2 فایل مشخص‌شده با متغیر محیطی RANDFILE، در صورت تنظیم. .IP \(bu 2 فایل .rnd در دایرکتوری خانگی شما، در صورتی که RANDFILE تنظیم نشده باشد. .IP \(bu 2 فایل مشخص‌شده با `\-\-with\-random' در زمان کامپایل. .IP \(bu 2 محتویات صفحه نمایش در صورت اجرا روی ویندوز. .IP \(bu 2 سوکت egd مشخص‌شده با پرچم \f[I]EGD\f[R]. .IP \(bu 2 سوکت egd مشخص‌شده با `\-\-with\-egd\-sock' در زمان کامپایل. .IP \(bu 2 دستگاه /dev/urandom. .PP توجه داشته باشید که در رایانه‌های ویندوزی فاقد تعامل کاربر با کنسول (حرکات ماوس، ایجاد پنجره‌ها و غیره) محتویات صفحه نمایش تنوع کافی برای تأمین آنتروپی ندارند و باید یک فایل تصادفی برای استفاده با فلگ \f[I]RNDfile\f[R] ارائه دهید. .PP توجه داشته باشید که فایل مشخص‌شده با پرچم \f[I]RNDfile\f[R] باید حاوی داده‌های تصادفی باشد \-\- این بدان معناست که در هر بار اجرای \f[B]stunnel\f[R] باید شامل اطلاعات متفاوتی باشد. این کار به طور خودکار انجام می‌شود مگر اینکه از فلگ \f[I]RNDoverwrite\f[R] استفاده شده باشد. اگر مایلید این فایل را به صورت دستی به‌روزرسانی کنید، دستور \f[I]openssl rand\f[R] در نسخه‌های اخیر \f[B]OpenSSL\f[R] سودمند خواهد بود. .PP نکته مهم: در صورت در دسترس بودن /dev/urandom، کتابخانه \f[B]OpenSSL\f[R] معمولاً هنگام بررسی وضعیت تصادفی، PRNG را با آن مقداردهی اولیه می‌کند. روی سیستم‌های دارای /dev/urandom به احتمال قوی \f[B]OpenSSL\f[R] از آن استفاده خواهد کرد، حتی اگر در انتهای فهرست فوق قرار گرفته باشد. این رفتار مربوط به \f[B]OpenSSL\f[R] است و نه \f[B]stunnel\f[R]. .SS "پارامترهای DH (DH PARAMETERS)" نگارش 4.40 و جدیدتر \f[B]stunnel\f[R] شامل پارامترهای 2048 بیتی سخت‌کدشده (hardcoded) برای DH است. از نگارش 5.18 \f[B]stunnel\f[R]، این پارامترهای ثابت هر 24 ساعت یک بار با پارامترهای موقت DH که به صورت خودکار تولید می‌شوند جایگزین می‌گردند. تولید پارامترهای DH ممکن است چند دقیقه طول بکشد. .PP همچنین می‌توان پارامترهای ایستا برای DH را در فایل گواهی تعیین کرد که در این صورت تولید خودکار پارامترهای موقت DH غیرفعال می‌شود: .IP .EX openssl dhparam 2048 >> stunnel.pem .EE .SH "فایل‌ها (FILES)" .IP \(bu 2 \f[I]\(atsysconfdir\(at/stunnel/stunnel.conf\f[R] .RS 2 .PP فایل پیکربندی \f[B]stunnel\f[R] .RE .SH "اشکالات (BUGS)" گزینه \f[I]execArgs\f[R] و خط فرمان Win32 از کوتیشن‌گذاری (quoting) پشتیبانی نمی‌کنند. .SH "همچنین ببینید (SEE ALSO)" .IP \(bu 2 \c .UR https://www.stunnel.org .UE \c .RS 2 .PP برنامه \f[B]stunnel\f[R] .RE .IP \(bu 2 \c .UR https://openssl-library.org .UE \c .RS 2 .PP کتابخانه \f[B]OpenSSL\f[R] .RE .SH "نویسندگان (AUTHORS)" .IP \(bu 2 Michał Trojnara .RS 2 .PP \c .MT Michal.Trojnara@stunnel.org .ME \c .RE