stunnel.ru.html 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv=content-type content="text/html; charset=UTF-8">
  5. <title>stunnel.8</title>
  6. <link rev="made" href="mailto:root@localhost" />
  7. </head>
  8. <BODY>
  9. <A NAME="__index__"></A>
  10. <!-- INDEX BEGIN -->
  11. <UL>
  12. <LI><A HREF="#name">NAME</A></LI>
  13. <LI><A HREF="#synopsis">SYNOPSIS</A></LI>
  14. <LI><A HREF="#description">DESCRIPTION</A></LI>
  15. <LI><A HREF="#options">OPTIONS</A></LI>
  16. <LI><A HREF="#configuration file">CONFIGURATION FILE</A></LI>
  17. <UL>
  18. <LI><A HREF="#global options">GLOBAL OPTIONS</A></LI>
  19. <LI><A HREF="#servicelevel options">SERVICE-LEVEL OPTIONS</A></LI>
  20. </UL>
  21. <LI><A HREF="#return value">RETURN VALUE</A></LI>
  22. <LI><A HREF="#examples">EXAMPLES</A></LI>
  23. <LI><A HREF="#files">FILES</A></LI>
  24. <LI><A HREF="#bugs">BUGS</A></LI>
  25. <LI><A HREF="#restrictions">RESTRICTIONS</A></LI>
  26. <LI><A HREF="#notes">NOTES</A></LI>
  27. <UL>
  28. <LI><A HREF="#inetd mode">INETD MODE</A></LI>
  29. <LI><A HREF="#certificates">CERTIFICATES</A></LI>
  30. <LI><A HREF="#randomness">RANDOMNESS</A></LI>
  31. </UL>
  32. <LI><A HREF="#see also">SEE ALSO</A></LI>
  33. <LI><A HREF="#author">AUTHOR</A></LI>
  34. </UL>
  35. <!-- INDEX END -->
  36. <HR>
  37. <P>
  38. <H1><A NAME="name">NAME</A></H1>
  39. <P>stunnel - Универсальный SSL/TLS тунель</P>
  40. <P>
  41. <HR>
  42. <H1><A NAME="synopsis">SYNOPSIS</A></H1>
  43. <DL>
  44. <DT><STRONG><A NAME="item_Unix%3A"><STRONG>Unix:</STRONG></A></STRONG><BR>
  45. <DD>
  46. <STRONG>stunnel</STRONG> [&lt;filename&gt;] | -fd&nbsp;n | -help | -version | -sockets
  47. <P></P>
  48. <DT><STRONG><A NAME="item_WIN32%3A"><STRONG>WIN32:</STRONG></A></STRONG><BR>
  49. <DD>
  50. <STRONG>stunnel</STRONG> [ [-install | -uninstall | -start | -stop]
  51. [-quiet] [&lt;filename&gt;] ] | -help | -version | -sockets
  52. <P></P></DL>
  53. <P>
  54. <HR>
  55. <H1><A NAME="description">DESCRIPTION</A></H1>
  56. <P><STRONG>stunnel</STRONG> утилита разработанная для создания <EM>TLS</EM> защищенного соединения
  57. между клиентом и локальным (<EM>Iinetd</EM>-запускаемым) или удаленным сервером.
  58. Таким образом, не имея поддержки TLS в том или ином демоне(сервисе) в Вашей системы, Вы можете легко
  59. обеспечить защиту(шифрование, одностороннюю или двустороннюю аутентификацию) соединения
  60. с использыванием <EM>TLS</EM>.
  61. <STRONG>stunnel</STRONG> может быть использован для добавления функции <EM>TLS</EM> для
  62. популярных <EM>Inetd</EM> сервисов, тиких как <EM>POP-2</EM>, <EM>POP-3</EM>, и <EM>IMAP</EM> , так же для
  63. сервисов как NNTP, SMTP и HTTP, или организацию PPP тунелей без изменения кода самих сервисов.</P>
  64. <P>Этот продукт, для реализации <EM>TLS</EM> использует либо пакеты Security Support Provider Interface (SSPI)
  65. от Microsoft (www.microsoft.com) или Крипто-Про(www.cryptopro.ru), либо пакет OpenSSL написанный
  66. Eric Young (<A HREF="mailto:eay@cryptsoft.com">eay@cryptsoft.com</A>)</P>
  67. <P>
  68. <HR>
  69. <H1><A NAME="options">OPTIONS</A></H1>
  70. <DL>
  71. <DT><STRONG><A NAME="item_%3Cfilename%3E">&lt;<STRONG>filename</STRONG>&gt;</A></STRONG><BR>
  72. <DD>
  73. Использовать указанный конфигурационный файл
  74. <P></P>
  75. <DT><STRONG><A NAME="item_n"><STRONG>-fd n</STRONG> (Unix only)</A></STRONG><BR>
  76. <DD>
  77. Прочитать конфигурационный файл из указанного дескриптора
  78. <P></P>
  79. <DT><STRONG><A NAME="item_%2Dhelp"><STRONG>-help</STRONG></A></STRONG><BR>
  80. <DD>
  81. Напечатать справку по <STRONG>stunnel</STRONG>
  82. <P></P>
  83. <DT><STRONG><A NAME="item_%2Dversion"><STRONG>-version</STRONG></A></STRONG><BR>
  84. <DD>
  85. Печать версии <STRONG>stunnel</STRONG>
  86. <P></P>
  87. <DT><STRONG><A NAME="item_%2Dsockets"><STRONG>-sockets</STRONG></A></STRONG><BR>
  88. <DD>
  89. Печать опций для сокета
  90. <P></P>
  91. <DT><STRONG><A NAME="item_install"><STRONG>-install</STRONG> (NT/2000/XP only)</A></STRONG><BR>
  92. <DD>
  93. Установить NT сервис
  94. <P></P>
  95. <DT><STRONG><A NAME="item_uninstall"><STRONG>-uninstall</STRONG> (NT/2000/XP only)</A></STRONG><BR>
  96. <DD>
  97. Удалить NT сервис
  98. <P></P>
  99. <DT><STRONG><A NAME="item_start"><STRONG>-start</STRONG> (NT/2000/XP only)</A></STRONG><BR>
  100. <DD>
  101. Запустить NT сервис
  102. <P></P>
  103. <DT><STRONG><A NAME="item_stop"><STRONG>-stop</STRONG> (NT/2000/XP only)</A></STRONG><BR>
  104. <DD>
  105. Остановить NT сервис
  106. <P></P>
  107. <DT><STRONG><A NAME="item_quiet"><STRONG>-quiet</STRONG> (NT/2000/XP only)</A></STRONG><BR>
  108. <DD>
  109. Не открывать окошки с сообщениями
  110. <P></P></DL>
  111. <P>
  112. <HR>
  113. <H1><A NAME="configuration file">CONFIGURATION FILE</A></H1>
  114. <P>Каждая строка конфигурационного файла должна быть:</P>
  115. <UL>
  116. <LI>
  117. Пустой строкой (игнорируется);
  118. <P></P>
  119. <LI>
  120. Комментарий начинающийся с ';' (игнорируется);
  121. <P></P>
  122. <LI>
  123. Парой 'option_name = option_value';
  124. <P></P>
  125. <LI>
  126. Строкой '[service_name]', с которой начиинается секция описания конкретного сервиса;
  127. <P></P></UL>
  128. <P>
  129. <H2><A NAME="global options">GLOBAL OPTIONS</A></H2>
  130. <DL>
  131. <DT><STRONG><A NAME="item_directory"><STRONG>chroot</STRONG> = directory (Unix only)</A></STRONG><BR>
  132. <DD>
  133. Каталог вызова функции <A HREF="#item_chroot"><CODE>chroot()</CODE></A> которая вызывается после разбора конфигурационного файла <STRONG>stunnel</STRONG>
  134. <P>Примечания:</P>
  135. <P>1)Использование данной возможности крайне желательно сопровождать использованием <STRONG>setuid</STRONG>;</P>
  136. <P>2)При создании замкнутого окружения, в нем должны бытьустановлены все внешние обьекты CryptoAPI/SSPI,
  137. <EM>CApath</EM>, <EM>CRLpath</EM>, <EM>pid</EM>, <EM>exec</EM> дожны находиться в нем. Например, если вы используете (TCP Wrappers)
  138. вы дожны скопировать файлы /etc/hosts.allow /etc/hosts.deny внутрь каталога <STRONG>chroot</STRONG>.</P>
  139. <P></P>
  140. <DT><STRONG><A NAME="item_rle"><STRONG>compression</STRONG> = zlib | <CODE>rle(OpenSSL)</CODE></A></STRONG><BR>
  141. <DD>
  142. Алгоритм сжатия данных
  143. <P>По умолчанию: без сжатия</P>
  144. <P></P>
  145. <DT><STRONG><A NAME="item_debug_%3D_%5Bfacility%2E%5Dlevel"><STRONG>debug</STRONG> = [facility.]level</A></STRONG><BR>
  146. <DD>
  147. Уровень протоколирования
  148. <P>Уровни задаются аналогично syslogd
  149. emerg (0), alert (1), crit (2), err (3), warning (4), notice (5),
  150. info (6), или debug (7). Все сообщения с заданным уровнем и уровнем ниже
  151. заданного будут запротоколированы. Пример <STRONG>debug = debug</STRONG> или <STRONG>debug = 7</STRONG>.</P>
  152. <P>По умолчанию: <STRONG>debug = notice</STRONG> и используется syslog(Unix only.)
  153. Параметры <STRONG>facility</STRONG> и <STRONG>level</STRONG> регистронезависимы.</P>
  154. <P></P>
  155. <DT><STRONG><A NAME="item_no"><STRONG>foreground</STRONG> = yes | no (Unix only)</A></STRONG><BR>
  156. <DD>
  157. foreground режим
  158. <P>Оставаться в foreground режиме (не использовать fork) и писать протокол в stderr
  159. (если не указан <STRONG>output</STRONG>).</P>
  160. <P>По умолчанию: no, т.е в режиме демона</P>
  161. <P></P>
  162. <DT><STRONG><A NAME="item_output_%3D_file"><STRONG>output</STRONG> = file</A></STRONG><BR>
  163. <DD>
  164. Писать протокол в <STRONG>file</STRONG>, а не в syslog
  165. <P>Допустимо значение /dev/stdout</P>
  166. <P></P>
  167. <DT><STRONG><A NAME="item_file"><STRONG>pid</STRONG> = file (Unix only)</A></STRONG><BR>
  168. <DD>
  169. Файл для сохранения pid
  170. <P>Если аргумент не задан, то pid не сохраняется.</P>
  171. <P>Если задана опция <STRONG>chroot</STRONG>, то путь указывается относително ее.</P>
  172. <P></P>
  173. <DT><STRONG><A NAME="item_bytes"><STRONG>RNDbytes</STRONG> = <CODE>bytes(OpenSSL)</CODE></A></STRONG><BR>
  174. <DD>
  175. Количество байт для чтения из фала со случайной последовательностью.
  176. <P>Количество байт для чтения из файла со случайной последовательностью. Для OpenSSL
  177. версии меньше 0.9.5a, она так же определяет сколько байт достаточно для инициализации
  178. датчика случайных чисел. Более поздние версии OpenSSL имеют встроенные
  179. функции для определения достаточного количества байт для инициализации.</P>
  180. <P></P>
  181. <DT><STRONG><STRONG>RNDfile</STRONG> = <CODE>file(OpenSSL)</CODE></STRONG><BR>
  182. <DD>
  183. Путь к файлу со случайной последовательностью
  184. <P>Библиотека OpenSSL использует эти данные для инициализации
  185. датчика случайных чисел.</P>
  186. <P></P>
  187. <DT><STRONG><STRONG>RNDoverwrite</STRONG> = yes | <CODE>no(OpenSSL)</CODE></STRONG><BR>
  188. <DD>
  189. Перезаписывать файл со случайной последовательностью
  190. <P>По умолчанию: yes</P>
  191. <P></P>
  192. <DT><STRONG><A NAME="item_service_%3D_servicename"><STRONG>service</STRONG> = servicename</A></STRONG><BR>
  193. <DD>
  194. Имя сервиса
  195. <P><STRONG>On Unix:</STRONG> В <EM>inetd</EM> это имя для TCP Wrapper библиотеки.</P>
  196. <P><STRONG>On NT/2000/XP:</STRONG> Имя NT сервиса для контрольной панели.</P>
  197. <P>По умолчанию: stunnel</P>
  198. <P></P>
  199. <DT><STRONG><A NAME="item_groupname"><STRONG>setgid</STRONG> = groupname (Unix only)</A></STRONG><BR>
  200. <DD>
  201. Выплняется <CODE>setgid()</CODE> в эту группу.
  202. <P></P>
  203. <DT><STRONG><A NAME="item_username"><STRONG>setuid</STRONG> = username (Unix only)</A></STRONG><BR>
  204. <DD>
  205. Выполняется <CODE>setuid()</CODE> под этого пользователя
  206. <P></P>
  207. <DT><STRONG><A NAME="item_socket_%3D_a%7Cl%7Cr%3Aoption%3Dvalue%5B%3Avalue%5"><STRONG>socket</STRONG> = a|l|r:option=value[:value]</A></STRONG><BR>
  208. <DD>
  209. Опции <STRONG>setsockopt()</STRONG> для сокета приема соединений, а так же для локального и удаленного сокетов.
  210. <P>Формат значений для <STRONG>SO_LINGER</STRONG> : l_onof:l_linger.
  211. Формат значений для времени: tv_sec:tv_usec.</P>
  212. <P>Пример:</P>
  213. <PRE>
  214. socket = l:SO_LINGER=1:60
  215. Установить минунтный таймаут для локального сокета
  216. socket = r:TCP_NODELAY=1
  217. Выключить Nagle алгоритм для удаленного сокета
  218. socket = a:SO_REUSEADDR=0
  219. Запретить повторное использование портов TCP (по умолчанию разрешено)
  220. socket = a:SO_BINDTODEVICE=lo
  221. Принимать соединения только с loopback интерфейса</PRE>
  222. <P></P>
  223. <DT><STRONG><STRONG>taskbar</STRONG> = yes | no (WIN32 only)</STRONG><BR>
  224. <DD>
  225. Разрешить иконку.
  226. <P>По умолчанию: yes</P>
  227. <P></P></DL>
  228. <P>
  229. <H2><A NAME="servicelevel options">SERVICE-LEVEL OPTIONS</A></H2>
  230. <P>Каждая секция в конфигурационном файле начинается с имени сервиса в
  231. квадратных скобках. Это имя будет использоваться библиотекой libwrap и PAM,
  232. а так же дает возможность различать протокольные сообщения.</P>
  233. <P>Примечание:
  234. Если вы хотите запускать <STRONG>stunnel</STRONG> в <EM>Inetd</EM> режиме, смотрите секцию
  235. <EM>Inetd MODE</EM> описанную ниже</P>
  236. <DL>
  237. <DT><STRONG><A NAME="item_accept_%3D_%5Bhost%3A%5Dport"><STRONG>accept</STRONG> = [host:]port</A></STRONG><BR>
  238. <DD>
  239. Принимать соединения только с host:port
  240. <P>Если host не указан, то для всех ip данного компьютера.</P>
  241. <P></P>
  242. <DT><STRONG><A NAME="item_store"><STRONG>CApath</STRONG> = <CODE>store(SSPI)</CODE></A></STRONG><BR>
  243. <DD>
  244. Хранилище доверенных корневых центров сертификации, используемое вместо ROOT.
  245. <P>Пример: My</P>
  246. <P></P>
  247. <DT><STRONG><STRONG>CApath</STRONG> = <CODE>directory(OpenSSL)</CODE></STRONG><BR>
  248. <DD>
  249. Каталог с сертификатами CA
  250. <P>Каталог в которой <STRONG>stunnel</STRONG> будет искать сертификаты CA при использовании
  251. <EM>verify</EM>. Сертификаты в этой дериктории должны называться как XXXXXXXX.0
  252. где XXXXXXXX значение хеша Der кодированно сертификата.
  253. (первые 4 байта в MD5 хеше).</P>
  254. <P>Если указан <EM>chroot</EM> то <EM>CApath</EM> указывается относительно него.</P>
  255. <P></P>
  256. <DT><STRONG><A NAME="item_certfile"><STRONG>CAfile</STRONG> = <CODE>certfile(OpenSSL)</CODE></A></STRONG><BR>
  257. <DD>
  258. Файл с сертификатом СА
  259. <P>Этот файл может сожержать множество сертификатов СА. Используется в <EM>verify</EM>.</P>
  260. <P></P>
  261. <DT><STRONG><A NAME="item_pemfile"><STRONG>cert</STRONG> = <CODE>pemfile(OpenSSL)</CODE></A></STRONG><BR>
  262. <DD>
  263. Цепочка сертификатов PEM файл. Сертификаты должны быть в PEM
  264. формате и должны начинаться с сертификата верхнего в цепочке (корневого CA).
  265. <P>Сертификат stunnel обязателен для использования в качестве сервера.
  266. Указание этой опции в режиме клиента необходимо для удовлетворения
  267. требования TLS сервера на двустороннюю аутентификацию по сертификату клиента.
  268. Использование клиентского сертификата опционально.</P>
  269. <P></P>
  270. <DT><STRONG><A NAME="item_Id"><STRONG>cert</STRONG> = Cert-Id(SSPI)</A></STRONG><BR>
  271. <DD>
  272. Сертификат в der кодировке. Соответствующий сертификат в хранилище должен иметь ссылку на закрытый ключ.
  273. <P></P>
  274. <DT><STRONG><A NAME="item_ciphers_%3D_cipherlist"><STRONG>ciphers</STRONG> = cipherlist</A></STRONG><BR>
  275. <DD>
  276. Список разрешенный SSL/TLS алгоритмов.
  277. <P>Пример: GOST34102001-WITH-GOST28147-OFB-GOST28147:DES-CBC3-SHA:IDEA-CBC-MD5</P>
  278. <P></P>
  279. <DT><STRONG><A NAME="item_keysize"><STRONG>minkeysize</STRONG> = keysize (SSPI – only)</A></STRONG><BR>
  280. <DD>
  281. Минимальная длина ключа
  282. <P></P>
  283. <DT><STRONG><A NAME="item_client_%3D_yes_%7C_no"><STRONG>client</STRONG> = yes | no</A></STRONG><BR>
  284. <DD>
  285. Режим клиента (удаленный сервис использует TLS/SSL)
  286. <P>По умолчанию: no (режим сервера)</P>
  287. <P></P>
  288. <DT><STRONG><A NAME="item_connect_%3D_%5Bhost%3A%5Dport"><STRONG>connect</STRONG> = [host:]port</A></STRONG><BR>
  289. <DD>
  290. Соединять с удаленным сервером, если не указано то с localhost
  291. <P></P>
  292. <DT><STRONG><STRONG>CRLpath</STRONG> = <CODE>directory(OpenSSL)</CODE></STRONG><BR>
  293. <DD>
  294. Каталог сожержащий CRL.
  295. <P>Примечание: Файлы в этой дериктории должны быть названы
  296. как XXXXXXXX.0 где XXXXXXXX значение хеша CRL.</P>
  297. <P>Если указан <EM>chroot</EM> то <EM>CApath</EM> указывается относительно него.</P>
  298. <P></P>
  299. <DT><STRONG><A NAME="item_Store"><STRONG>CRLpath</STRONG> = <CODE>Store(SSPI)</CODE></A></STRONG><BR>
  300. <DD>
  301. Хранилище CRL, используемое вместо хранилища по умолчанию.
  302. <P>Пример: My</P>
  303. <P></P>
  304. <DT><STRONG><STRONG>CRLfile</STRONG> = <CODE>certfile(OpenSSL)</CODE></STRONG><BR>
  305. <DD>
  306. CRL файл
  307. <P>Этот файл содержит множество CRL, используеммых в <EM>verify</EM>.</P>
  308. <P></P>
  309. <DT><STRONG><A NAME="item_delay_%3D_yes_%7C_no"><STRONG>delay</STRONG> = yes | no</A></STRONG><BR>
  310. <DD>
  311. Задержка для DNS запроса для 'connect' опции
  312. <P></P>
  313. <DT><STRONG><A NAME="item_number"><STRONG>engineNum</STRONG> = engine <CODE>number(OpenSSL)</CODE></A></STRONG><BR>
  314. <DD>
  315. Использовать для чтения закрытого ключа engine
  316. <P>Нумерация начинается с 1.</P>
  317. <P></P>
  318. <DT><STRONG><A NAME="item_executable_path"><STRONG>exec</STRONG> = executable_path (Unix only)</A></STRONG><BR>
  319. <DD>
  320. Запустить локально inetd программу
  321. <P><EM>exec</EM> путь относителен <EM>chroot</EM> дериктории если она задана.</P>
  322. <P></P>
  323. <DT><STRONG><A NAME="item_execargs_%3D_%240_%241_%242_%2E%2E%2E_%28Unix_only"><STRONG>execargs</STRONG> = $0 $1 $2 ... (Unix only)</A></STRONG><BR>
  324. <DD>
  325. Аргументы для программы указанной в <EM>exec</EM> опции, включая ее имя-($0)
  326. <P>Кавычки не поддерживаются.
  327. Аргументы должны быть разделены пробелами.</P>
  328. <P></P>
  329. <DT><STRONG><STRONG>ident</STRONG> = <CODE>username(OpenSSL)</CODE></STRONG><BR>
  330. <DD>
  331. Использовать IDENT (RFC 1413) проверку имени
  332. <P></P>
  333. <DT><STRONG><A NAME="item_keyfile"><STRONG>key</STRONG> = <CODE>keyfile(OpenSSL)</CODE></A></STRONG><BR>
  334. <DD>
  335. Закрытый ключ для сертификата из <EM>cert</EM> опции
  336. <P>Закрытый ключ необходим для аутентификации обладателя сертификата.
  337. Файл должен быть защищен от доступа третьих лиц,в Unix системах
  338. можно использовать следующую команду:</P>
  339. <PRE>
  340. chmod 600 keyfile</PRE>
  341. <P>По умолчанию: значение <EM>cert</EM> опции</P>
  342. <P></P>
  343. <DT><STRONG><A NAME="item_local_%3D_host"><STRONG>local</STRONG> = host</A></STRONG><BR>
  344. <DD>
  345. Интерфейс, который должен быть использован для соединения с удаленны хостом.
  346. <P></P>
  347. <DT><STRONG><A NAME="item_url"><STRONG>ocsp</STRONG> = <CODE>url(OpenSSL)</CODE></A></STRONG><BR>
  348. <DD>
  349. OCSP сервер для проверки сертификатов
  350. <P></P>
  351. <DT><STRONG><A NAME="item_SSL_options"><STRONG>options</STRONG> = <CODE>SSL_options(OpenSSL)</CODE></A></STRONG><BR>
  352. <DD>
  353. Опции для библиотеки OpenSSL
  354. <P>Параметры для OpenSSL описанные в <EM>SSL_CTX_set_options(3ssl)</EM>
  355. реководстве но без префискса <EM>SSL_OP_</EM>.
  356. Несколько <EM>options</EM> могут быть использованы для
  357. указания множества опций.</P>
  358. <P>Например, для совместимости с Eudora SSL реализацией
  359. следущие опции должны быть установлены.</P>
  360. <PRE>
  361. options = DONT_INSERT_EMPTY_FRAGMENTS</PRE>
  362. <P></P>
  363. <DT><STRONG><A NAME="item_protocol_%3D_proto"><STRONG>protocol</STRONG> = proto</A></STRONG><BR>
  364. <DD>
  365. Протокол внутри SSL/TLS
  366. <P>Поддерживаемые: cifs, connect, nntp, pop3, smtp</P>
  367. <P></P>
  368. <DT><STRONG><A NAME="item_protocolCredentials_%3D_username%3Apassword"><STRONG>protocolCredentials</STRONG> = username:password</A></STRONG><BR>
  369. <DD>
  370. пароль и имя пользователя для протокола <EM>proto</EM>
  371. <P></P>
  372. <DT><STRONG><A NAME="item_protocolHost_%3D_host%3Aport"><STRONG>protocolHost</STRONG> = host:port</A></STRONG><BR>
  373. <DD>
  374. Удаленный сервер для внутренего протокола
  375. <P></P>
  376. <DT><STRONG><STRONG>pty</STRONG> = yes | no (Unix only)</STRONG><BR>
  377. <DD>
  378. Создать псевдо-терминал для 'exec' опции
  379. <P></P>
  380. <DT><STRONG><A NAME="item_session_%3D_timeout"><STRONG>session</STRONG> = timeout</A></STRONG><BR>
  381. <DD>
  382. Таймаут сессии
  383. <P></P>
  384. <DT><STRONG><A NAME="item_version"><STRONG>sslVersion</STRONG> = <CODE>version(OpenSSL)</CODE></A></STRONG><BR>
  385. <DD>
  386. Версия SSL протокола
  387. <P>Допустимые опции: all, SSLv2, SSLv3, TLSv1</P>
  388. <P></P>
  389. <DT><STRONG><A NAME="item_TIMEOUTbusy_%3D_seconds"><STRONG>TIMEOUTbusy</STRONG> = seconds</A></STRONG><BR>
  390. <DD>
  391. таймаут для ожидания входящий данных
  392. <P></P>
  393. <DT><STRONG><A NAME="item_seconds"><STRONG>TIMEOUTclose</STRONG> = <CODE>seconds(OpenSSL)</CODE></A></STRONG><BR>
  394. <DD>
  395. Таймаут для ожидания close_notify
  396. <P></P>
  397. <DT><STRONG><A NAME="item_TIMEOUTconnect_%3D_seconds"><STRONG>TIMEOUTconnect</STRONG> = seconds</A></STRONG><BR>
  398. <DD>
  399. Таймаут для соединения с удаленным хостом
  400. <P></P>
  401. <DT><STRONG><A NAME="item_TIMEOUTidle_%3D_seconds"><STRONG>TIMEOUTidle</STRONG> = seconds</A></STRONG><BR>
  402. <DD>
  403. Таймаут для keep alive
  404. <P></P>
  405. <DT><STRONG><STRONG>transparent</STRONG> = yes | no (Unix only)</STRONG><BR>
  406. <DD>
  407. transparent proxy
  408. <P>Re-write address to appear as if wrapped daemon is connecting
  409. from the SSL client machine instead of the machine running <STRONG>stunnel</STRONG>.
  410. This option is only available in local mode (<EM>exec</EM> option)
  411. by LD_PRELOADing env.so shared library or in remote mode (<EM>connect</EM>
  412. option) on Linux 2.2 kernel compiled with <EM>transparent proxy</EM> option
  413. and then only in server mode. Note that this option will not combine
  414. with proxy mode (<EM>connect</EM>) unless the client's По умолчанию route to the target
  415. machine lies through the host running <STRONG>stunnel</STRONG>, which cannot be localhost.</P>
  416. <P></P>
  417. <DT><STRONG><A NAME="item_level"><STRONG>verify</STRONG> = <CODE>level(SSPI)</CODE></A></STRONG><BR>
  418. <DD>
  419. Уровень проверки цепочки
  420. <PRE>
  421. default – Проверка по умолчанию, если не заданы CRLpath или CRLfile, то использует доступ к CDP по http/ldap;
  422. level 3 - Проверять используя локально установленные сертификаты;
  423. level 2 - Проверять каждый сертификат;
  424. level 1 - Проверять каждый сертификат если есть;
  425. level 0 - Не проверять;
  426. FIX ME!!! НЕ ЗАКОНЧЕНА</PRE>
  427. <P></P>
  428. <DT><STRONG><STRONG>verify</STRONG> = <CODE>level(OpenSSL)</CODE></STRONG><BR>
  429. <DD>
  430. Уровень проверки
  431. <PRE>
  432. level 1 - Проверять каждый сертификат если есть
  433. level 2 - Проверять каждый сертификат
  434. level 3 - Проверять используя локально установленные сертификаты
  435. default - Не проверять</PRE>
  436. <P></P></DL>
  437. <P>
  438. <HR>
  439. <H1><A NAME="return value">RETURN VALUE</A></H1>
  440. <P><STRONG>stunnel</STRONG> Возвращает нулевой код завершения при успешном выполнении,
  441. при ошибках возвращается не нулевой код возвращения.</P>
  442. <P>
  443. <HR>
  444. <H1><A NAME="examples">EXAMPLES</A></H1>
  445. <P>Для реализации инкапсуляции <EM>imapd</EM> в SSL/TLS:</P>
  446. <PRE>
  447. [imapd]
  448. accept = 993
  449. exec = /usr/sbin/imapd
  450. execargs = imapd</PRE>
  451. <P>Тунелирование <EM>pppd</EM> через SSL/TLS по порту 2020,</P>
  452. <PRE>
  453. [vpn]
  454. accept = 2020
  455. exec = /usr/sbin/pppd
  456. execargs = pppd local
  457. pty = yes</PRE>
  458. <P>Для запуска <STRONG>stunnel</STRONG> в <EM>inetd</EM> стиле
  459. можно использовать следующий <EM>stunnel.conf</EM>.</P>
  460. <P>Примечание: в конфигурационном файле не должно быть <EM>[service_name]</EM> секции.</P>
  461. <PRE>
  462. exec = /usr/sbin/imapd
  463. execargs = imapd</PRE>
  464. <P>Ниже приведен пример конфигурации engine для считывания закрытого ключа
  465. используя OpenSC engine.</P>
  466. <PRE>
  467. engine=dynamic
  468. engineCtrl=SO_PATH:/usr/lib/opensc/engine_pkcs11.so
  469. engineCtrl=ID:pkcs11
  470. engineCtrl=LIST_ADD:1
  471. engineCtrl=LOAD
  472. engineCtrl=MODULE_PATH:/usr/lib/pkcs11/opensc-pkcs11.so
  473. engineCtrl=INIT</PRE>
  474. <PRE>
  475. [service]
  476. engineNum=1
  477. key=id_45</PRE>
  478. <P>
  479. <HR>
  480. <H1><A NAME="files">FILES</A></H1>
  481. <DL>
  482. <DT><STRONG><A NAME="item_stunnel%2Econf"><EM>stunnel.conf</EM></A></STRONG><BR>
  483. <DD>
  484. <STRONG>stunnel</STRONG> Конфигурационный файл
  485. <P></P>
  486. <DT><STRONG><A NAME="item_stunnel%2Epem"><EM>stunnel.pem</EM></A></STRONG><BR>
  487. <DD>
  488. <STRONG>stunnel</STRONG> Сертификат и закрытый ключ
  489. <P></P></DL>
  490. <P>
  491. <HR>
  492. <H1><A NAME="bugs">BUGS</A></H1>
  493. <P>Опция <EM>execargs</EM> не поддерживает кавычки.</P>
  494. <P>
  495. <HR>
  496. <H1><A NAME="restrictions">RESTRICTIONS</A></H1>
  497. <P><STRONG>stunnel</STRONG> нельзя использовать с FTP демоном из-за природы
  498. FTP протокола который использует множество портов для передачи данных.</P>
  499. <P>
  500. <HR>
  501. <H1><A NAME="notes">NOTES</A></H1>
  502. <P>
  503. <H2><A NAME="inetd mode">INETD MODE</A></H2>
  504. <P>Наиболее распространненый вариант использования <STRONG>stunnel</STRONG>
  505. когда он слушает порт и устанавливает соединение или с другим портом
  506. из опции connect или прграммой из <EM>exec</EM> опции.
  507. Так же могут быть причины по которым вы хотите что бы другая программа
  508. принимала входящие соединения и запускала <STRONG>stunnel</STRONG> из
  509. <EM>inetd</EM>, <EM>xinetd</EM>, или <EM>tcpserver</EM>.</P>
  510. <P>Например если вы имеете следующий конфиг в \fIinetd.conf\fR:</P>
  511. <PRE>
  512. imaps stream tcp nowait root /usr/sbin/stunnel stunnel /etc/stunnel/imaps.conf</PRE>
  513. <P>В таком случае <EM>inetd</EM> демон ответственен за привязку сокета
  514. и передачу его в <STRONG>stunnel</STRONG> когда соединение установлено.
  515. Таким образом <STRONG>stunnel</STRONG> не имеет ни одной <EM>accept</EM> опции.
  516. Все <EM>Service Level Options</EM> должны содержаться в глобалных опциях
  517. и не должно быть ни одной <EM>[service_name]</EM> секции
  518. Смотри раздел <EM>EXAMPLES</EM> с примерами.</P>
  519. <P>
  520. <H2><A NAME="certificates">CERTIFICATES</A></H2>
  521. <P>Каждый \s-1SSL\s0 демон должен предстваить валидный X.509 сертификат
  522. Так же ему нужен закрытый ключ для расшифровки входящий данных.
  523. Наиболее простой путь получения сертификата и закрытого ключа
  524. это использовать <EM>OpenSSL</EM> пакет. Больше информации про этот
  525. пакет можно найти в описании следующих пакетов.</P>
  526. <P>Две вещи наиболее важны при генерации пары сертификат-закрытый ключ для
  527. <STRONG>stunnel</STRONG>. Закрытый ключ не может быть зашифрован, так как сервер
  528. не имеет возможности получить пароль от пользователя.
  529. Для генерации незашифрованого ключа добавьте <EM>-nodes</EM> опцию
  530. при выполнении <STRONG>req</STRONG> каманды из пакета <EM>OpenSSL</EM>.</P>
  531. <P>Порядок следования сертификатов в <EM>.pem</EM> файле то же важен.
  532. Он должнет сожержать не зашифрованый закрытый ключ в начале,
  533. затем сертификат. Затем пустая строка после закрытого ключа и сертификата.
  534. Не зашифрованая информация о сертификате (в верху сертификата) должна быть удалена
  535. Файл должнен выглядеть вот так:</P>
  536. <PRE>
  537. -----BEGIN RSA PRIVATE KEY-----
  538. [encoded key]
  539. -----END RSA PRIVATE KEY-----
  540. [empty line]
  541. -----BEGIN CERTIFICATE-----
  542. [encoded certificate]
  543. -----END CERTIFICATE-----
  544. [empty line]</PRE>
  545. <P>
  546. <H2><A NAME="randomness">RANDOMNESS</A></H2>
  547. <P>В <STRONG>stunnel</STRONG> нужен для инициализации PRNG (Датчик псевдо случайных чисел)
  548. для того что бы SSL использовал хорошие последовательности.
  549. Следующие источники будут использоваться (в указанном порядке) до тех пор пока
  550. не будет полученно соответствующие кол-во данных.</P>
  551. <UL>
  552. <LI>
  553. Файл указанный в <EM>RNDfile</EM> опции.
  554. <P></P>
  555. <LI>
  556. Файл указанный в переменной окружения RANDFILE (если указан).
  557. <P></P>
  558. <LI>
  559. Файл .rnd в домашней дериктории, если не указана RANDFILE.
  560. <P></P>
  561. <LI>
  562. Файл указанный в опции '--with-random' при компиляции.
  563. <P></P>
  564. <LI>
  565. Сожержимое экрана если работает под Windows.
  566. <P></P>
  567. <LI>
  568. сокет указанный в <EM>EGD</EM> опции.
  569. <P></P>
  570. <LI>
  571. Сокет указанный в опции '--with-egd-sock' при компиляции.
  572. <P></P>
  573. <LI>
  574. /dev/urandom.
  575. <P></P></UL>
  576. <P>В последних версиях (&gt;=OpenSSL 0.9.5a) при получении достаточной энтропии
  577. источники случайных данных будут закрыты автоматически. В предыдущих версиях
  578. OpenSSL не существует функций для определения достаточного количества данных.</P>
  579. <P>Примечание:
  580. На Windows машинах нет консоли для интерактивного взаимодействия с пользователем
  581. (движение мыши, создание окон и т.д.) и содержание окна не достаточно, вам необходимо
  582. созадть файл с случайной последовательностью и указать его в опции <EM>RNDfile</EM>.</P>
  583. <P>Файл указанный в опции <EM>RNDfile</EM> должен сожержать случайную последовательность
  584. это означает что он должен содержать разные данные при каждом запуске
  585. <STRONG>stunnel</STRONG>. Это будет делаться автоматически ло тех пор пока не будет
  586. указана опция <EM>RNDoverwrite</EM>. Если вы хотите обновлять его вручную, то
  587. <EM>openssl rand</EM> команда из последней версии OpenSSL будет весьма полезна.</P>
  588. <P>Если /dev/urandom доступен, OpenSSL имеет привычку инициализировать
  589. PRNG данными из него да же кога проверяет случайное состояние,
  590. таким образом на системах с ним вероятнее всего вы используете его да же
  591. если он в самом низу списка указаного выше. Это не поведение <STRONG>stunnel's</STRONG>, это
  592. OpenSSL.</P>
  593. <P>
  594. <HR>
  595. <H1><A NAME="see also">SEE ALSO</A></H1>
  596. <DL>
  597. <DT><STRONG><A NAME="item_tcpd"><A HREF="#item_tcpd">tcpd(8)</A></A></STRONG><BR>
  598. <DD>
  599. Управление доступом для интернет сервисов
  600. <P></P>
  601. <DT><STRONG><A NAME="item_inetd"><A HREF="#item_inetd">inetd(8)</A></A></STRONG><BR>
  602. <DD>
  603. Интеренет 'super-server'
  604. <P></P>
  605. <DT><STRONG><A NAME="item_pam"><A HREF="#item_pam">pam(8)</A></A></STRONG><BR>
  606. <DD>
  607. модель имепрсонализации
  608. <P></P>
  609. <DT><STRONG><A NAME="item_setsockopt"><A HREF="#item_setsockopt">setsockopt(2)</A></A></STRONG><BR>
  610. <DD>
  611. Установка опций для сокета
  612. <P></P>
  613. <DT><STRONG><A NAME="item_chroot"><A HREF="#item_chroot">chroot(2)</A></A></STRONG><BR>
  614. <DD>
  615. создание замкнутого окружения
  616. <P></P>
  617. <DT><STRONG><A NAME="item_http%3A%2F%2Fstunnel%2Emirt%2Enet%2F"><EM><A HREF="http://stunnel.mirt.net/">http://stunnel.mirt.net/</A></EM></A></STRONG><BR>
  618. <DD>
  619. домашня страница <STRONG>stunnel</STRONG>
  620. <P></P>
  621. <DT><STRONG><A NAME="item_http%3A%2F%2Fwww%2Estunnel%2Eorg%2F"><EM><A HREF="http://www.stunnel.org/">http://www.stunnel.org/</A></EM></A></STRONG><BR>
  622. <DD>
  623. Часто задаваемые вопросы по <STRONG>stunnel</STRONG>
  624. <P></P>
  625. <DT><STRONG><A NAME="item_http%3A%2F%2Fwww%2Eopenssl%2Eorg%2F"><EM><A HREF="http://www.openssl.org/">http://www.openssl.org/</A></EM></A></STRONG><BR>
  626. <DD>
  627. Домашняя страница проекта OpenSSL
  628. <P></P></DL>
  629. <P>
  630. <HR>
  631. <H1><A NAME="author">AUTHOR</A></H1>
  632. <DL>
  633. <DT><STRONG><A NAME="item_Michal_Trojnara">Michal Trojnara</A></STRONG><BR>
  634. <DD>
  635. &lt;<EM><A HREF="mailto:Michal.Trojnara@mirt.net">Michal.Trojnara@mirt.net</A></EM>&gt;
  636. <P></P></DL>
  637. </BODY>
  638. </HTML>