blob: 3f85b6d10260c311cae14cfbdb213c187effe1fe [file] [log] [blame]
<?xml version="1.0" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>stunnel TLS Proxy</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rev="made" href="mailto:root@localhost" />
</head>
<body id="_podtop_">
<table border="0" width="100%" cellspacing="0" cellpadding="3">
<tr><td class="_podblock_" style="background-color: #cccccc; color: #000" valign="middle">
<big><strong><span class="_podblock_">&nbsp;stunnel TLS Proxy</span></strong></big>
</td></tr>
</table>
<ul id="index">
<li><a href="#NAZWA">NAZWA</a></li>
<li><a href="#SKADNIA">SK&#x141;ADNIA</a></li>
<li><a href="#OPIS">OPIS</a></li>
<li><a href="#OPCJE">OPCJE</a></li>
<li><a href="#PLIK-KONFIGURACYJNY">PLIK KONFIGURACYJNY</a>
<ul>
<li><a href="#OPCJE-GLOBALNE">OPCJE GLOBALNE</a></li>
<li><a href="#OPCJE-USUG">OPCJE US&#x141;UG</a></li>
</ul>
</li>
<li><a href="#ZWRACANA-WARTO">ZWRACANA WARTO&#x15A;&#x106;</a></li>
<li><a href="#SIGNAY">SIGNA&#x141;Y</a></li>
<li><a href="#PRZYKADY">PRZYK&#x141;ADY</a></li>
<li><a href="#NOTKI">NOTKI</a>
<ul>
<li><a href="#OGRANICZENIA">OGRANICZENIA</a></li>
<li><a href="#TRYB-INETD-tylko-Unix">TRYB INETD (tylko Unix)</a></li>
<li><a href="#CERTYFIKATY">CERTYFIKATY</a></li>
<li><a href="#LOSOWO">LOSOWO&#x15A;&#x106;</a></li>
<li><a href="#PARAMETRY-DH">PARAMETRY DH</a></li>
</ul>
</li>
<li><a href="#PLIKI">PLIKI</a></li>
<li><a href="#BDY">B&#x141;&#x118;DY</a></li>
<li><a href="#ZOBACZ-RWNIE">ZOBACZ R&Oacute;WNIE&#x17B;</a></li>
<li><a href="#AUTOR">AUTOR</a></li>
</ul>
<a href="#_podtop_"><h1 id="NAZWA">NAZWA</h1></a>
<p>stunnel - uniwersalny tunel protoko&#x142;u SSL</p>
<a href="#_podtop_"><h1 id="SKADNIA">SK&#x141;ADNIA</h1></a>
<dl>
<dt id="Unix"><b>Unix:</b></dt>
<dd>
<p><b>stunnel</b> [<span style="white-space: nowrap;">PLIK</span>] | <span style="white-space: nowrap;">-fd N</span> | <span style="white-space: nowrap;">-help</span> | <span style="white-space: nowrap;">-version</span> | <span style="white-space: nowrap;">-sockets</span> | <span style="white-space: nowrap;">-options</span></p>
</dd>
<dt id="WIN32"><b>WIN32:</b></dt>
<dd>
<p><b>stunnel</b> [ [ <span style="white-space: nowrap;">-install</span> | <span style="white-space: nowrap;">-uninstall</span> | <span style="white-space: nowrap;">-start</span> | <span style="white-space: nowrap;">-stop</span> | <span style="white-space: nowrap;">-reload</span> | <span style="white-space: nowrap;">-reopen</span> | <span style="white-space: nowrap;">-exit</span> ] [<span style="white-space: nowrap;">-quiet</span>] [<span style="white-space: nowrap;">PLIK</span>] ] | <span style="white-space: nowrap;">-help</span> | <span style="white-space: nowrap;">-version</span> | <span style="white-space: nowrap;">-sockets</span> | <span style="white-space: nowrap;">-options</span></p>
</dd>
</dl>
<a href="#_podtop_"><h1 id="OPIS">OPIS</h1></a>
<p>Program <b>stunnel</b> zosta&#x142; zaprojektowany do opakowywania w protok&oacute;&#x142; <i>SSL</i> po&#x142;&#x105;cze&#x144; pomi&#x119;dzy zdalnymi klientami a lokalnymi lub zdalnymi serwerami. Przez serwer lokalny rozumiana jest aplikacja przeznaczona do uruchamiania przy pomocy <i>inetd</i>. Stunnel pozwala na proste zestawienie komunikacji serwer&oacute;w nie posiadaj&#x105;cych funkcjonalno&#x15B;ci <i>SSL</i> poprzez bezpieczne kana&#x142;y <i>SSL</i>.</p>
<p><b>stunnel</b> pozwala doda&#x107; funkcjonalno&#x15B;&#x107; <i>SSL</i> do powszechnie stosowanych demon&oacute;w <i>inetd</i>, np. <i>pop3</i> lub <i>imap</i>, do samodzielnych demon&oacute;w, np. <i>nntp</i>, <i>smtp</i> lub <i>http</i>, a nawet tunelowa&#x107; ppp poprzez gniazda sieciowe bez zmian w kodzie &#x17A;r&oacute;d&#x142;owym.</p>
<a href="#_podtop_"><h1 id="OPCJE">OPCJE</h1></a>
<dl>
<dt id="PLIK"><b>PLIK</b></dt>
<dd>
<p>u&#x17C;yj podanego pliku konfiguracyjnego</p>
</dd>
<dt id="fd-N-tylko-Unix"><b>-fd N</b> (tylko Unix)</dt>
<dd>
<p>wczytaj konfiguracj&#x119; z podanego deskryptora pliku</p>
</dd>
<dt id="help"><b>-help</b></dt>
<dd>
<p>drukuj list&#x119; wspieranych opcji</p>
</dd>
<dt id="version"><b>-version</b></dt>
<dd>
<p>drukuj wersj&#x119; programu i domy&#x15B;lne warto&#x15B;ci parametr&oacute;w</p>
</dd>
<dt id="sockets"><b>-sockets</b></dt>
<dd>
<p>drukuj domy&#x15B;lne opcje gniazd</p>
</dd>
<dt id="options"><b>-options</b></dt>
<dd>
<p>drukuj wspierane opcje SSL</p>
</dd>
<dt id="install-tylko-Windows-NT-lub-nowszy"><b>-install</b> (tylko Windows NT lub nowszy)</dt>
<dd>
<p>instaluj serwis NT</p>
</dd>
<dt id="uninstall-tylko-Windows-NT-lub-nowszy"><b>-uninstall</b> (tylko Windows NT lub nowszy)</dt>
<dd>
<p>odinstaluj serwis NT</p>
</dd>
<dt id="start-tylko-Windows-NT-lub-nowszy"><b>-start</b> (tylko Windows NT lub nowszy)</dt>
<dd>
<p>uruchom serwis NT</p>
</dd>
<dt id="stop-tylko-Windows-NT-lub-nowszy"><b>-stop</b> (tylko Windows NT lub nowszy)</dt>
<dd>
<p>zatrzymaj serwis NT</p>
</dd>
<dt id="reload-tylko-Windows-NT-lub-nowszy"><b>-reload</b> (tylko Windows NT lub nowszy)</dt>
<dd>
<p>prze&#x142;aduj plik konfiguracyjny uruchomionego serwisu NT</p>
</dd>
<dt id="reopen-tylko-Windows-NT-lub-nowszy"><b>-reopen</b> (tylko Windows NT lub nowszy)</dt>
<dd>
<p>otw&oacute;rz ponownie log uruchomionego serwisu NT</p>
</dd>
<dt id="exit-tylko-Win32"><b>-exit</b> (tylko Win32)</dt>
<dd>
<p>zatrzymaj uruchomiony program</p>
</dd>
<dt id="quiet-tylko-Win32"><b>-quiet</b> (tylko Win32)</dt>
<dd>
<p>nie wy&#x15B;wietlaj okienek z komunikatami</p>
</dd>
</dl>
<a href="#_podtop_"><h1 id="PLIK-KONFIGURACYJNY">PLIK KONFIGURACYJNY</h1></a>
<p>Linia w pliku konfiguracyjnym mo&#x17C;e by&#x107;:</p>
<ul>
<li><p>pusta (ignorowana)</p>
</li>
<li><p>komentarzem rozpoczynaj&#x105;cym si&#x119; znakiem &#39;;&#39; (ignorowana)</p>
</li>
<li><p>par&#x105; &#39;nazwa_opcji = warto&#x15B;&#x107;_opcji&#39;</p>
</li>
<li><p>tekstem &#39;[nazwa_us&#x142;ugi]&#39; wskazuj&#x105;cym pocz&#x105;tek definicji us&#x142;ugi</p>
</li>
</ul>
<p>Parametr adres mo&#x17C;e by&#x107;:</p>
<ul>
<li><p>numerem portu</p>
</li>
<li><p>oddzielon&#x105; &#x15B;rednikiem par&#x105; adresu (IPv4, IPv6, lub nazw&#x105; domenow&#x105;) i numeru portu</p>
</li>
<li><p>&#x15B;cie&#x17C;k&#x105; do gniazda Unix (tylko Unix)</p>
</li>
</ul>
<h2 id="OPCJE-GLOBALNE">OPCJE GLOBALNE</h2>
<dl>
<dt id="chroot-KATALOG-tylko-Unix"><b>chroot</b> = KATALOG (tylko Unix)</dt>
<dd>
<p>katalog roboczego korzenia systemu plik&oacute;w</p>
<p>Opcja okre&#x15B;la katalog, w kt&oacute;rym uwi&#x119;ziony zostanie proces programu <b>stunnel</b> tu&#x17C; po jego inicjalizacji, a przed rozpocz&#x119;ciem odbierania po&#x142;&#x105;cze&#x144;. &#x15A;cie&#x17C;ki podane w opcjach <i>CApath</i>, <i>CRLpath</i>, <i>pid</i> oraz <i>exec</i> musz&#x105; by&#x107; umieszczone wewn&#x105;trz katalogu podanego w opcji <i>chroot</i> i okre&#x15B;lone wzgl&#x119;dem tego katalogu.</p>
<p>Niekt&oacute;re funkcje systemu operacyjnego mog&#x105; wymaga&#x107; dodatkowych plik&oacute;w umieszczonych w katalogu podanego w parametrze chroot:</p>
<ul>
<li><p>op&oacute;&#x17A;nione rozwini&#x119;cie adres&oacute;w DNS typowo wymaga /etc/nsswitch.conf i /etc/resolv.conf</p>
</li>
<li><p>lokalizacja strefy czasowej w logach wymaga pliku /etc/timezone</p>
</li>
<li><p>niekt&oacute;re inne pliki mog&#x105; potrzebowa&#x107; plik&oacute;w urz&#x105;dze&#x144;, np. /dev/zero lub /dev/null</p>
</li>
</ul>
</dd>
<dt id="compression-deflate-zlib"><b>compression</b> = deflate | zlib</dt>
<dd>
<p>wyb&oacute;r algorytmu kompresji przesy&#x142;anych danych</p>
<p>domy&#x15B;lnie: bez kompresji</p>
<p>Algorytm deflate jest standardow&#x105; metod&#x105; kompresji zgodnie z RFC 1951.</p>
<p>Kompresja zlib zaimplementowana w <b>OpenSSL 0.9.8</b> i nowszych nie jest kompatybilna implementacj&#x105; <b>OpenSSL 0.9.7</b>.</p>
</dd>
<dt id="debug-PODSYSTEM-.POZIOM"><b>debug</b> = [PODSYSTEM].POZIOM</dt>
<dd>
<p>szczeg&oacute;&#x142;owo&#x15B;&#x107; logowania</p>
<p>Poziom logowania mo&#x17C;na okre&#x15B;li&#x107; przy pomocy jednej z nazw lub liczb: emerg (0), alert (1), crit (2), err (3), warning (4), notice (5), info (6) lub debug (7). Zapisywane s&#x105; komunikaty o poziomie ni&#x17C;szym (numerycznie) lub r&oacute;wnym podanemu. Do uzyskania najwy&#x17C;szego poziomu szczeg&oacute;&#x142;owo&#x15B;ci mo&#x17C;na u&#x17C;y&#x107; opcji <i>debug = debug</i> lub <i>debug = 7</i>. Domy&#x15B;lnym poziomem jest notice (5).</p>
<p>O ile nie wyspecyfikowano podsystemu u&#x17C;yty b&#x119;dzie domy&#x15B;lny: daemon. Podsystemy nie s&#x105; wspierane przez platform&#x119; Win32.</p>
<p>Wielko&#x15B;&#x107; liter jest ignorowana zar&oacute;wno dla poziomu jak podsystemu.</p>
</dd>
<dt id="EGD-CIEKA_DO_EGD-tylko-Unix"><b>EGD</b> = &#x15A;CIE&#x17B;KA_DO_EGD (tylko Unix)</dt>
<dd>
<p>&#x15B;cie&#x17C;ka do gniazda programu Entropy Gathering Daemon</p>
<p>Opcja pozwala okre&#x15B;li&#x107; &#x15B;cie&#x17C;k&#x119; do gniazda programu Entropy Gathering Daemon u&#x17C;ywanego do zainicjalizowania generatora ci&#x105;g&oacute;w pseudolosowych biblioteki <b>OpenSSL</b>. Opcja jest dost&#x119;pna z bibliotek&#x105; <b>OpenSSL 0.9.5a</b> lub nowsz&#x105;.</p>
</dd>
<dt id="engine-auto-IDENTYFIKATOR_URZDZENIA"><b>engine</b> = auto | IDENTYFIKATOR_URZ&#x104;DZENIA</dt>
<dd>
<p>wyb&oacute;r sprz&#x119;towego urz&#x105;dzenia kryptograficznego</p>
<p>domy&#x15B;lnie: bez wykorzystania urz&#x105;dze&#x144; kryptograficznych</p>
<p>Przyk&#x142;adowa konfiguracja umo&#x17C;liwiaj&#x105;ca odczytanie klucza prywatnego z urz&#x105;dzenia zgodnego z OpenSC:</p>
<pre><code> engine=dynamic
engineCtrl=SO_PATH:/usr/lib/opensc/engine_pkcs11.so
engineCtrl=ID:pkcs11
engineCtrl=LIST_ADD:1
engineCtrl=LOAD
engineCtrl=MODULE_PATH:/usr/lib/pkcs11/opensc-pkcs11.so
engineCtrl=INIT
[service]
engineNum=1
key=id_45</code></pre>
</dd>
<dt id="engineCtrl-KOMENDA-:PARAMETR"><b>engineCtrl</b> = KOMENDA[:PARAMETR]</dt>
<dd>
<p>konfiguracja urz&#x105;dzenia kryptograficznego</p>
<p>Specjalne komendy &quot;LOAD&quot; i &quot;INIT&quot; pozwalaj&#x105; na za&#x142;adowanie i inicjalizacj&#x119; modu&#x142;u kryptograficznego urz&#x105;dzenia.</p>
</dd>
<dt id="engineDefault-LISTA_ZADA"><b>engineDefault</b> = LISTA_ZADA&#x143;</dt>
<dd>
<p>lista zada&#x144; OpenSSL oddelegowanych do bie&#x17C;&#x105;cego urz&#x105;dzenia</p>
<p>Parametrem jest lista oddzielonych przecinkami zada&#x144; OpenSSL, kt&oacute;re maj&#x105; zosta&#x107; oddelegowane do bie&#x17C;&#x105;cego urz&#x105;dzenia kryptograficznego.</p>
<p>W zale&#x17C;no&#x15B;ci od konkretnego urz&#x105;dzenia dost&#x119;pne mog&#x105; by&#x107; nast&#x119;puj&#x105;ce zadania: ALL, RSA, DSA, ECDH, ECDSA, DH, RAND, CIPHERS, DIGESTS, PKEY, PKEY_CRYPTO, PKEY_ASN1.</p>
</dd>
<dt id="fips-yes-no"><b>fips</b> = yes | no</dt>
<dd>
<p>tryb FIPS 140-2</p>
<p>Opcja pozwala wy&#x142;&#x105;czy&#x107; wej&#x15B;cie w tryb FIPS, je&#x15B;li <b>stunnel</b> zosta&#x142; skompilowany ze wsparciem dla FIPS 140-2.</p>
<p>domy&#x15B;lnie: no (od wersji 5.00)</p>
</dd>
<dt id="foreground-yes-no-tylko-Unix"><b>foreground</b> = yes | no (tylko Unix)</dt>
<dd>
<p>tryb pierwszoplanowy</p>
<p>U&#x17C;ycie tej opcji powoduje, &#x17C;e <b>stunnel</b> nie przechodzi w t&#x142;o loguj&#x105;c swoje komunikaty na konsol&#x119; zamiast przez <i>syslog</i> (o ile nie u&#x17C;yto opcji <i>output</i>).</p>
</dd>
<dt id="iconActive-PLIK_Z_IKONK-tylko-GUI"><b>iconActive</b> = PLIK_Z_IKONK&#x104; (tylko GUI)</dt>
<dd>
<p>ikonka wy&#x15B;wietlana przy obecno&#x15B;ci aktywnych po&#x142;&#x105;cze&#x144; do us&#x142;ugi</p>
<p>W systemie Windows ikonka to plik .ico zawieraj&#x105;cy obrazek 16x16 pikseli.</p>
</dd>
<dt id="iconError-PLIK_Z_IKONK-tylko-GUI"><b>iconError</b> = PLIK_Z_IKONK&#x104; (tylko GUI)</dt>
<dd>
<p>ikonka wy&#x15B;wietlana, je&#x17C;eli nie zosta&#x142; za&#x142;adowany poprawny plik konfiguracyjny</p>
<p>W systemie Windows ikonka to plik .ico zawieraj&#x105;cy obrazek 16x16 pikseli.</p>
</dd>
<dt id="iconIdle-PLIK_Z_IKONK-tylko-GUI"><b>iconIdle</b> = PLIK_Z_IKONK&#x104; (tylko GUI)</dt>
<dd>
<p>ikonka wy&#x15B;wietlana przy braku aktywnych po&#x142;&#x105;cze&#x144; do us&#x142;ugi</p>
<p>W systemie Windows ikonka to plik .ico zawieraj&#x105;cy obrazek 16x16 pikseli.</p>
</dd>
<dt id="log-append-overwrite"><b>log</b> = append | overwrite</dt>
<dd>
<p>log file handling</p>
<p>This option allows to choose whether the log file (specified with the <i>output</i> option) is appended or overwritten when opened or re-opened.</p>
<p>domy&#x15B;lnie: append</p>
</dd>
<dt id="output-PLIK"><b>output</b> = PLIK</dt>
<dd>
<p>plik, do kt&oacute;rego dopisane zostan&#x105; logi</p>
<p>U&#x17C;ycie tej opcji powoduje dopisanie log&oacute;w do podanego pliku.</p>
<p>Do kierowaniakomunikat&oacute;w na standardowe wyj&#x15B;cie (na przyk&#x142;ad po to, &#x17C;eby zalogowa&#x107; je programem splogger z pakietu daemontools) mo&#x17C;na poda&#x107; jako parametr urz&#x105;dzenie /dev/stdout.</p>
</dd>
<dt id="pid-PLIK-tylko-Unix"><b>pid</b> = PLIK (tylko Unix)</dt>
<dd>
<p>po&#x142;o&#x17C;enie pliku z numerem procesu</p>
<p>Je&#x17C;eli argument jest pusty plik nie zostanie stworzony.</p>
<p>Je&#x17C;eli zdefiniowano katalog <i>chroot</i>, to &#x15B;cie&#x17C;ka do <i>pid</i> jest okre&#x15B;lona wzgl&#x119;dem tego katalogu.</p>
</dd>
<dt id="RNDbytes-LICZBA_BAJTW"><b>RNDbytes</b> = LICZBA_BAJT&Oacute;W</dt>
<dd>
<p>liczba bajt&oacute;w do zainicjowania generatora pseudolosowego</p>
<p>W wersjach biblioteki <b>OpenSSL</b> starszych ni&#x17C; <b>0.9.5a</b> opcja ta okre&#x15B;la r&oacute;wnie&#x17C; liczb&#x119; bajt&oacute;w wystarczaj&#x105;cych do zainicjowania PRNG. Nowsze wersje biblioteki maj&#x105; wbudowan&#x105; funkcj&#x119; okre&#x15B;laj&#x105;c&#x105;, czy dostarczona ilo&#x15B;&#x107; losowo&#x15B;ci jest wystarczaj&#x105;ca do zainicjowania generatora.</p>
</dd>
<dt id="RNDfile-PLIK"><b>RNDfile</b> = PLIK</dt>
<dd>
<p>&#x15B;cie&#x17C;ka do pliku zawieraj&#x105;cego losowe dane</p>
<p>Biblioteka <b>OpenSSL</b> u&#x17C;yje danych z tego pliku do zainicjowania generatora pseudolosowego.</p>
</dd>
<dt id="RNDoverwrite-yes-no"><b>RNDoverwrite</b> = yes | no</dt>
<dd>
<p>nadpisz plik nowymi warto&#x15B;ciami pseudolosowymi</p>
<p>domy&#x15B;lnie: yes (nadpisz)</p>
</dd>
<dt id="service-SERWIS-tylko-Unix"><b>service</b> = SERWIS (tylko Unix)</dt>
<dd>
<p>nazwa us&#x142;ugi</p>
<p>Podana nazwa us&#x142;ugi b&#x119;dzie u&#x17C;ywana jako nazwa us&#x142;ugi dla inicjalizacji sysloga, oraz dla biblioteki TCP Wrapper w trybie <i>inetd</i>. Chocia&#x17C; technicznie mo&#x17C;na u&#x17C;y&#x107; tej opcji w trybie w sekcji us&#x142;ug, to jest ona u&#x17C;yteczna jedynie w opcjach globalnych.</p>
<p>domy&#x15B;lnie: stunnel</p>
</dd>
<dt id="setgid-IDENTYFIKATOR_GRUPY-tylko-Unix"><b>setgid</b> = IDENTYFIKATOR_GRUPY (tylko Unix)</dt>
<dd>
<p>grupa z kt&oacute;rej prawami pracowa&#x142; b&#x119;dzie <b>stunnel</b></p>
</dd>
<dt id="setuid-IDENTYFIKATOR_UYTKOWNIKA-tylko-Unix"><b>setuid</b> = IDENTYFIKATOR_U&#x17B;YTKOWNIKA (tylko Unix)</dt>
<dd>
<p>u&#x17C;ytkownik, z kt&oacute;rego prawami pracowa&#x142; b&#x119;dzie <b>stunnel</b></p>
</dd>
<dt id="socket-a-l-r:OPCJA-WARTO-:WARTO"><b>socket</b> = a|l|r:OPCJA=WARTO&#x15A;&#x106;[:WARTO&#x15A;&#x106;]</dt>
<dd>
<p>ustaw opcj&#x119; na akceptuj&#x105;cym/lokalnym/zdalnym gnie&#x17A;dzie</p>
<p>Dla opcji linger warto&#x15B;ci maj&#x105; posta&#x107; l_onof:l_linger. Dla opcji time warto&#x15B;ci maj&#x105; posta&#x107; tv_sec:tv_usec.</p>
<p>Przyk&#x142;ady:</p>
<pre><code> socket = l:SO_LINGER=1:60
ustaw jednominutowe przeterminowanie
przy zamykaniu lokalnego gniazda
socket = r:SO_OOBINLINE=yes
umie&#x15B;&#x107; dane pozapasmowe (out-of-band)
bezpo&#x15B;rednio w strumieniu danych
wej&#x15B;ciowych dla zdalnych gniazd
socket = a:SO_REUSEADDR=no
zablokuj ponowne u&#x17C;ywanie portu
(domy&#x15B;lnie w&#x142;&#x105;czone)
socket = a:SO_BINDTODEVICE=lo
przyjmuj po&#x142;&#x105;czenia wy&#x142;&#x105;cznie na
interfejsie zwrotnym (ang. loopback)</code></pre>
</dd>
<dt id="syslog-yes-no-tylko-Unix"><b>syslog</b> = yes | no (tylko Unix)</dt>
<dd>
<p>w&#x142;&#x105;cz logowanie poprzez mechanizm syslog</p>
<p>domy&#x15B;lnie: yes (w&#x142;&#x105;cz)</p>
</dd>
<dt id="taskbar-yes-no-tylko-WIN32"><b>taskbar</b> = yes | no (tylko WIN32)</dt>
<dd>
<p>w&#x142;&#x105;cz ikonk&#x119; w prawym dolnym rogu ekranu</p>
<p>domy&#x15B;lnie: yes (w&#x142;&#x105;cz)</p>
</dd>
</dl>
<h2 id="OPCJE-USUG">OPCJE US&#x141;UG</h2>
<p>Ka&#x17C;da sekcja konfiguracji us&#x142;ugi zaczyna si&#x119; jej nazw&#x105; uj&#x119;t&#x105; w nawias kwadratowy. Nazwa us&#x142;ugi u&#x17C;ywana jest do kontroli dost&#x119;pu przez bibliotek&#x119; libwrap (TCP wrappers) oraz pozwala rozr&oacute;&#x17C;ni&#x107; poszczeg&oacute;lne us&#x142;ugi w logach.</p>
<p>Je&#x17C;eli <b>stunnel</b> ma zosta&#x107; u&#x17C;yty w trybie <i>inetd</i>, gdzie za odebranie po&#x142;&#x105;czenia odpowiada osobny program (zwykle <i>inetd</i>, <i>xinetd</i> lub <i>tcpserver</i>), nale&#x17C;y przeczyta&#x107; sekcj&#x119; <i>TRYB INETD</i> poni&#x17C;ej.</p>
<dl>
<dt id="accept-HOST:-PORT"><b>accept</b> = [HOST:]PORT</dt>
<dd>
<p>nas&#x142;uchuje na po&#x142;&#x105;czenia na podanym adresie i porcie</p>
<p>Je&#x17C;eli nie zosta&#x142; podany adres, <b>stunnel</b> domy&#x15B;lnie nas&#x142;uchuje na wszystkich adresach IPv4 lokalnych interfejs&oacute;w.</p>
<p>Aby nas&#x142;uchiwa&#x107; na wszystkich adresach IPv6 nale&#x17C;y u&#x17C;y&#x107;:</p>
<pre><code> accept = :::port</code></pre>
</dd>
<dt id="CApath-KATALOG_CA"><b>CApath</b> = KATALOG_CA</dt>
<dd>
<p>katalog Centrum Certyfikacji</p>
<p>Opcja okre&#x15B;la katalog, w kt&oacute;rym <b>stunnel</b> b&#x119;dzie szuka&#x142; certyfikat&oacute;w, je&#x17C;eli u&#x17C;yta zosta&#x142;a opcja <i>verify</i>. Pliki z certyfikatami musz&#x105; posiada&#x107; specjalne nazwy XXXXXXXX.0, gdzie XXXXXXXX jest skr&oacute;tem kryptograficznym reprezentacji DER nazwy podmiotu certyfikatu.</p>
<p>Funkcja skr&oacute;tu zosta&#x142;a zmieniona w <b>OpenSSL 1.0.0</b>. Nale&#x17C;y wykona&#x107; c_rehash przy zmianie <b>OpenSSL 0.x.x</b> na <b>1.x.x</b>.</p>
<p>Je&#x17C;eli zdefiniowano katalog <i>chroot</i>, to &#x15B;cie&#x17C;ka do <i>CApath</i> jest okre&#x15B;lona wzgl&#x119;dem tego katalogu.</p>
</dd>
<dt id="CAfile-PLIK_CA"><b>CAfile</b> = PLIK_CA</dt>
<dd>
<p>plik Centrum Certyfikacji</p>
<p>Opcja pozwala okre&#x15B;li&#x107; po&#x142;o&#x17C;enie pliku zawieraj&#x105;cego certyfikaty u&#x17C;ywane przez opcj&#x119; <i>verify</i>.</p>
</dd>
<dt id="cert-PLIK_PEM"><b>cert</b> = PLIK_PEM</dt>
<dd>
<p>plik z &#x142;a&#x144;cuchem certyfikat&oacute;w</p>
<p>Opcja okre&#x15B;la po&#x142;o&#x17C;enie pliku zawieraj&#x105;cego certyfikaty u&#x17C;ywane przez program <b>stunnel</b> do uwierzytelnienia si&#x119; przed drug&#x105; stron&#x105; po&#x142;&#x105;czenia. Certyfikat jest konieczny, aby u&#x17C;ywa&#x107; programu w trybie serwera. W trybie klienta certyfikat jest opcjonalny.</p>
</dd>
<dt id="checkEmail-EMAIL"><b>checkEmail</b> = EMAIL</dt>
<dd>
<p>adres email przedstawionego certyfikatu</p>
<p>Pojedyncza sekcja mo&#x17C;e zawiera&#x107; wiele wyst&#x105;pie&#x144; opcji <b>checkEmail</b>. Certyfikaty s&#x105; akceptowane, je&#x17C;eli sekcja nie zawiera opcji <b>checkEmail</b>, albo adres email przedstawionego certyfikatu pasuje do jednego z adres&oacute;w email okre&#x15B;lonych przy pomocy <b>checkEmail</b>.</p>
</dd>
<dt id="checkHost-NAZWA_SERWERA"><b>checkHost</b> = NAZWA_SERWERA</dt>
<dd>
<p>nazwa serwera przedstawionego certyfikatu</p>
<p>Pojedyncza sekcja mo&#x17C;e zawiera&#x107; wiele wyst&#x105;pie&#x144; opcji <b>checkHost</b>. Certyfikaty s&#x105; akceptowane, je&#x17C;eli sekcja nie zawiera opcji <b>checkHost</b>, albo nazwa serwera przedstawionego certyfikatu pasuje do jednego nazw okre&#x15B;lonych przy pomocy <b>checkHost</b>.</p>
</dd>
<dt id="checkIP-IP"><b>checkIP</b> = IP</dt>
<dd>
<p>adres IP przedstawionego certyfikatu</p>
<p>Pojedyncza sekcja mo&#x17C;e zawiera&#x107; wiele wyst&#x105;pie&#x144; opcji <b>checkIP</b>. Certyfikaty s&#x105; akceptowane, je&#x17C;eli sekcja nie zawiera opcji <b>checkIP</b>, albo adres IP przedstawionego certyfikatu pasuje do jednego z adres&oacute;w IP okre&#x15B;lonych przy pomocy <b>checkIP</b>.</p>
</dd>
<dt id="ciphers-LISTA_SZYFRW"><b>ciphers</b> = LISTA_SZYFR&Oacute;W</dt>
<dd>
<p>lista dozwolonych szyfr&oacute;w SSL</p>
<p>Parametrem tej opcji jest lista szyfr&oacute;w, kt&oacute;re b&#x119;d&#x105; u&#x17C;yte przy otwieraniu nowych po&#x142;&#x105;cze&#x144; SSL, np.: DES-CBC3-SHA:IDEA-CBC-MD5</p>
</dd>
<dt id="client-yes-no"><b>client</b> = yes | no</dt>
<dd>
<p>tryb kliencki (zdalna us&#x142;uga u&#x17C;ywa SSL)</p>
<p>domy&#x15B;lnie: no (tryb serwerowy)</p>
</dd>
<dt id="connect-HOST:-PORT"><b>connect</b> = [HOST:]PORT</dt>
<dd>
<p>po&#x142;&#x105;cz si&#x119; ze zdalnym serwerem na podany port</p>
<p>Je&#x17C;eli nie zosta&#x142; podany adres, <b>stunnel</b> domy&#x15B;lnie &#x142;&#x105;czy si&#x119; z lokalnym serwerem.</p>
<p>Komenda mo&#x17C;e byc u&#x17C;yta wielokrotnie w pojedynczej sekcji celem zapewnienia wysokiej niezawodno&#x15B;ci lub roz&#x142;o&#x17C;enia ruchu pomi&#x119;dzy wiele serwer&oacute;w.</p>
</dd>
<dt id="CRLpath-KATALOG_CRL"><b>CRLpath</b> = KATALOG_CRL</dt>
<dd>
<p>katalog List Odwo&#x142;anych Certyfikat&oacute;w (CRL)</p>
<p>Opcja okre&#x15B;la katalog, w kt&oacute;rym <b>stunnel</b> b&#x119;dzie szuka&#x142; list CRL, je&#x17C;eli u&#x17C;yta zosta&#x142;a opcja <i>verify</i>. Pliki z listami CRL musz&#x105; posiada&#x107; specjalne nazwy XXXXXXXX.r0, gdzie XXXXXXXX jest skr&oacute;tem listy CRL.</p>
<p>Funkcja skr&oacute;tu zosta&#x142;a zmieniona <b>OpenSSL 1.0.0</b>. Nale&#x17C;y wykona&#x107; c_rehash przy zmianie <b>OpenSSL 0.x.x</b> na <b>1.x.x</b>.</p>
<p>Je&#x17C;eli zdefiniowano katalog <i>chroot</i>, to &#x15B;cie&#x17C;ka do <i>CRLpath</i> jest okre&#x15B;lona wzgl&#x119;dem tego katalogu.</p>
</dd>
<dt id="CRLfile-PLIK_CRL"><b>CRLfile</b> = PLIK_CRL</dt>
<dd>
<p>plik List Odwo&#x142;anych Certyfikat&oacute;w (CRL)</p>
<p>Opcja pozwala okre&#x15B;li&#x107; po&#x142;o&#x17C;enie pliku zawieraj&#x105;cego listy CRL u&#x17C;ywane przez opcj&#x119; <i>verify</i>.</p>
</dd>
<dt id="curve-NID"><b>curve</b> = NID</dt>
<dd>
<p>krzywa dla ECDH</p>
<p>List&#x119; dost&#x119;pnych krzywych mo&#x17C;na uzyska&#x107; poleceniem:</p>
<pre><code> openssl ecparam -list_curves</code></pre>
<p>domy&#x15B;lnie: prime256v1</p>
</dd>
<dt id="logId-TYP"><b>logId</b> = TYP</dt>
<dd>
<p>typ identyfikatora po&#x142;&#x105;czenia klienta</p>
<p>Identyfikator ten pozwala rozr&oacute;&#x17C;ni&#x107; wpisy w logu wygenerowane dla poszczeg&oacute;lnych po&#x142;&#x105;cze&#x144;.</p>
<p>Aktualnie wspierane typy:</p>
<dl>
<dt id="sequential"><i>sequential</i></dt>
<dd>
<p>Kolejny numer po&#x142;&#x105;czenia jest unikalny jedynie w obr&#x119;bie pojedynczej instancji programu <b>stunnel</b>, ale bardzo kr&oacute;tki. Jest on szczeg&oacute;lnie u&#x17C;ytczny przy r&#x119;cznej analizie log&oacute;w.</p>
</dd>
<dt id="unique"><i>unique</i></dt>
<dd>
<p>Ten rodzaj identyfikatora jest globalnie unikalny, ale znacznie d&#x142;u&#x17C;szy, ni&#x17C; kolejny numer po&#x142;&#x105;czenia. Jest on szczeg&oacute;lnie u&#x17C;yteczny przy zautomatyzowanej analizie log&oacute;w.</p>
</dd>
<dt id="thread"><i>thread</i></dt>
<dd>
<p>Identyfikator w&#x105;tku systemu operacyjnego nie jest ani unikalny (nawet w obr&#x119;bie pojedynczej instancji programu <b>stunnel</b>), ani kr&oacute;tki. Jest on szczeg&oacute;lnie u&#x17C;yteczny przy diagnozowaniu problem&oacute;w z oprogramowaniem lub konfiguracj&#x105;.</p>
</dd>
</dl>
<p>domy&#x15B;lnie: sequential</p>
</dd>
<dt id="debug-POZIOM"><b>debug</b> = POZIOM</dt>
<dd>
<p>szczeg&oacute;&#x142;owo&#x15B;&#x107; logowania</p>
<p>Poziom logowania mo&#x17C;na okre&#x15B;li&#x107; przy pomocy jednej z nazw lub liczb: emerg (0), alert (1), crit (2), err (3), warning (4), notice (5), info (6) lub debug (7). Zapisywane s&#x105; komunikaty o poziomie ni&#x17C;szym (numerycznie) lub r&oacute;wnym podanemu. Do uzyskania najwy&#x17C;szego poziomu szczeg&oacute;&#x142;owo&#x15B;ci mo&#x17C;na u&#x17C;y&#x107; opcji <i>debug = debug</i> lub <i>debug = 7</i>. Domy&#x15B;lnym poziomem jest notice (5).</p>
</dd>
<dt id="delay-yes-no"><b>delay</b> = yes | no</dt>
<dd>
<p>op&oacute;&#x17A;nij rozwini&#x119;cie adresu DNS podanego w opcji <i>connect</i></p>
<p>Opcja jest przydatna przy dynamicznym DNS, albo gdy us&#x142;uga DNS nie jest dost&#x119;pna przy starcie programu <b>stunnel</b> (klient VPN, po&#x142;&#x105;czenie wdzwaniane).</p>
<p>Op&oacute;&#x17A;nione rozwijanie adresu DNS jest w&#x142;&#x105;czane automatycznie, je&#x17C;eli nie powiedzie si&#x119; rozwini&#x119;cie kt&oacute;regokolwiek z adres&oacute;w <i>connect</i> dla danej us&#x142;ugi.</p>
<p>Op&oacute;&#x17A;nione rozwijanie adresu automatycznie aktywuje <i>failover = prio</i>.</p>
<p>default: no</p>
</dd>
<dt id="engineId-NUMER_URZDZENIA"><b>engineId</b> = NUMER_URZ&#x104;DZENIA</dt>
<dd>
<p>wybierz urz&#x105;dzenie dla us&#x142;ugi</p>
</dd>
<dt id="engineNum-NUMER_URZDZENIA"><b>engineNum</b> = NUMER_URZ&#x104;DZENIA</dt>
<dd>
<p>wybierz urz&#x105;dzenie dla us&#x142;ugi</p>
<p>Urz&#x105;dzenia s&#x105; numerowane od 1 w g&oacute;r&#x119;.</p>
</dd>
<dt id="exec-CIEKA_DO_PROGRAMU"><b>exec</b> = &#x15A;CIE&#x17B;KA_DO_PROGRAMU</dt>
<dd>
<p>wykonaj lokalny program przystosowany do pracy z superdemonem inetd</p>
<p>Je&#x17C;eli zdefiniowano katalog <i>chroot</i>, to &#x15B;cie&#x17C;ka do <i>exec</i> jest okre&#x15B;lona wzgl&#x119;dem tego katalogu.</p>
<p>Na platformach Unix ustawiane s&#x105; nast&#x119;puj&#x105;ce zmienne &#x15B;rodowiskowe: REMOTE_HOST, REMOTE_PORT, SSL_CLIENT_DN, SSL_CLIENT_I_DN.</p>
</dd>
<dt id="execArgs-0-1-2"><b>execArgs</b> = $0 $1 $2 ...</dt>
<dd>
<p>argumenty do opcji <i>exec</i> w&#x142;&#x105;cznie z nazw&#x105; programu ($0)</p>
<p>Cytowanie nie jest wspierane w obecnej wersji programu. Argumenty s&#x105; rozdzielone dowoln&#x105; liczb&#x105; bia&#x142;ych znak&oacute;w.</p>
</dd>
<dt id="failover-rr-prio"><b>failover</b> = rr | prio</dt>
<dd>
<p>Strategia wybierania serwer&oacute;w wyspecyfikowanych parametrami &quot;connect&quot;.</p>
<pre><code> rr (round robin) - sprawiedliwe roz&#x142;o&#x17C;enie obci&#x105;&#x17C;enia
prio (priority) - u&#x17C;yj kolejno&#x15B;ci opcji w pliku konfiguracyjnym</code></pre>
<p>domy&#x15B;lnie: rr</p>
</dd>
<dt id="ident-NAZWA_UYTKOWNIKA"><b>ident</b> = NAZWA_U&#x17B;YTKOWNIKA</dt>
<dd>
<p>weryfikuj nazw&#x119; zdalnego u&#x17C;ytkownika korzystaj&#x105;c z protoko&#x142;u IDENT (RFC 1413)</p>
</dd>
<dt id="include-KATALOG"><b>include</b> = KATALOG</dt>
<dd>
<p>wczytaj fragmenty plik&oacute;w konfiguracyjnych z podanego katalogu</p>
<p>Pliki s&#x105; wczytywane w rosn&#x105;cej kolejno&#x15B;ci alfabetycznej ich nazw.</p>
</dd>
<dt id="key-PLIK_KLUCZA"><b>key</b> = PLIK_KLUCZA</dt>
<dd>
<p>klucz prywatny do certyfikatu podanego w opcji <i>cert</i></p>
<p>Klucz prywatny jest potrzebny do uwierzytelnienia w&#x142;a&#x15B;ciciela certyfikatu. Poniewa&#x17C; powinien on by&#x107; zachowany w tajemnicy, prawa do jego odczytu powinien mie&#x107; wy&#x142;&#x105;cznie w&#x142;a&#x15B;ciciel pliku. W systemie Unix mo&#x17C;na to osi&#x105;gn&#x105;&#x107; komend&#x105;:</p>
<pre><code> chmod 600 keyfile</code></pre>
<p>domy&#x15B;lnie: warto&#x15B;&#x107; opcji <i>cert</i></p>
</dd>
<dt id="libwrap-yes-no"><b>libwrap</b> = yes | no</dt>
<dd>
<p>w&#x142;&#x105;cz lub wy&#x142;&#x105;cz korzystanie z /etc/hosts.allow i /etc/hosts.deny.</p>
<p>domy&#x15B;lnie: no (od wersji 5.00)</p>
</dd>
<dt id="local-HOST"><b>local</b> = HOST</dt>
<dd>
<p>IP &#x17A;r&oacute;d&#x142;a do nawi&#x105;zywania zdalnych po&#x142;&#x105;cze&#x144;</p>
<p>Domy&#x15B;lnie u&#x17C;ywane jest IP najbardziej zewn&#x119;trznego interfejsu w stron&#x119; serwera, do kt&oacute;rego nawi&#x105;zywane jest po&#x142;&#x105;czenie.</p>
</dd>
<dt id="sni-USUGA:WZORZEC_NAZWY_SERWERA-tryb-serwera"><b>sni</b> = US&#x141;UGA:WZORZEC_NAZWY_SERWERA (tryb serwera)</dt>
<dd>
<p>U&#x17C;yj us&#x142;ugi jako podrz&#x119;dnej (virtualnego serwera) dla rozszerzenia TLS Server Name Indication (RFC 3546).</p>
<p><i>nazwa_us&#x142;ugi</i> wskazuje us&#x142;ug&#x119; nadrz&#x119;dn&#x105;, kt&oacute;ra odbiera po&#x142;&#x105;czenia od klient&oacute;w przy pomocy opcji <i>accept</i>. <i>wzorzec_nazwy_serwera</i> wskazuje nazw&#x119; serwera wirtualnego. Wzorzec mo&#x17C;e zaczyna&#x107; si&#x119; znakiem &#39;*&#39;, np. &#39;*.example.com&quot;. Z pojedy&#x144;cz&#x105; us&#x142;ug&#x105; nadrz&#x119;dn&#x105; powi&#x105;zane jest zwykle wiele us&#x142;ug podrz&#x119;dnych. Opcja <i>sni</i> mo&#x17C;e by&#x107; rownie&#x17C; u&#x17C;yta wielokrotnie w ramach jednej us&#x142;ugi podrz&#x119;dnej.</p>
<p>Zar&oacute;wno us&#x142;uga nadrz&#x119;dna jak i podrz&#x119;dna nie mo&#x17C;e by&#x107; skonfigurowana w trybie klienckim.</p>
<p>Opcja <i>connect</i> us&#x142;ugi podrz&#x119;dnej jest ignorowana w po&#x142;&#x105;czeniu z opcj&#x105; <i>protocol</i>, gdy&#x17C; po&#x142;&#x105;czenie do zdalnego serwera jest w tym wypadku nawi&#x105;zywane przed negocjacj&#x105; TLS.</p>
<p>Uwierzytelnienie przy pomocy biblioteki libwrap jest realizowane dwukrotnie: najpierw dla us&#x142;ugi nadrz&#x119;dnej po odebraniu po&#x142;&#x105;czenia TCP, a nast&#x119;pnie dla us&#x142;ugi podrz&#x119;dnej podczas negocjacji TLS.</p>
<p>Opcja <i>sni</i> jest dost&#x119;pna pocz&#x105;wszy od <b>OpenSSL 1.0.0</b>.</p>
</dd>
<dt id="sni-HOST-tryb-klienta"><b>sni</b> = HOST (tryb klienta)</dt>
<dd>
<p>U&#x17C;yj parametru jako warto&#x15B;ci rozszerzenia TLS Server Name Indication (RFC 3546).</p>
<p>Opcja <i>sni</i> jest dost&#x119;pna pocz&#x105;wszy od <b>OpenSSL 1.0.0</b>.</p>
</dd>
<dt id="OCSP-URL"><b>OCSP</b> = URL</dt>
<dd>
<p>serwer OCSP do weryfikacji certyfikat&oacute;w</p>
</dd>
<dt id="OCSPaia-yes-no"><b>OCSPaia</b> = yes | no</dt>
<dd>
<p>weryfikuj certyfikaty przy u&#x17C;yciu respondert&oacute;w AIA</p>
<p>Opcja <i>OCSPaia</i> pozwala na weryfikowanie certyfikat&oacute;w przy pomocy listy URLi serwer&oacute;w OCSP przes&#x142;anych w rozszerzeniach AIA (Authority Information Access).</p>
</dd>
<dt id="OCSPflag-FLAGA_OCSP"><b>OCSPflag</b> = FLAGA_OCSP</dt>
<dd>
<p>flaga serwera OCSP</p>
<p>aktualnie wspierane flagi: NOCERTS, NOINTERN NOSIGS, NOCHAIN, NOVERIFY, NOEXPLICIT, NOCASIGN, NODELEGATED, NOCHECKS, TRUSTOTHER, RESPID_KEY, NOTIME</p>
<p>Aby wyspecyfikowa&#x107; kilka flag nale&#x17C;y u&#x17C;y&#x107; <i>OCSPflag</i> wielokrotnie.</p>
</dd>
<dt id="options-OPCJE_SSL"><b>options</b> = OPCJE_SSL</dt>
<dd>
<p>opcje biblioteki <b>OpenSSL</b></p>
<p>Parametrem jest nazwa opcji zgodnie z opisem w <i>SSL_CTX_set_options(3ssl)</i>, ale bez przedrostka <i>SSL_OP_</i>. <i>stunnel -options</i> wy&#x15B;wietla opcje dozwolone w aktualnej kombinacji programu <i>stunnel</i> i biblioteki <i>OpenSSL</i>.</p>
<p>Aby wyspecyfikowa&#x107; kilka opcji nale&#x17C;y u&#x17C;y&#x107; <i>options</i> wielokrotnie. Nazwa opcji mo&#x17C;e by&#x107; poprzedzona my&#x15B;lnikiem (&quot;-&quot;) celem wy&#x142;&#x105;czenia opcji.</p>
<p>Na przyk&#x142;ad, dla zachowania kompatybilno&#x15B;ci z b&#x142;&#x119;dami implementacji SSL w programie Eudora, mo&#x17C;na u&#x17C;y&#x107; opcji:</p>
<pre><code> options = DONT_INSERT_EMPTY_FRAGMENTS</code></pre>
<p>domy&#x15B;lnie:</p>
<pre><code> options = NO_SSLv2
options = NO_SSLv3</code></pre>
</dd>
<dt id="protocol-PROTOK"><b>protocol</b> = PROTOK&Oacute;&#x141;</dt>
<dd>
<p>negocjuj SSL podanym protoko&#x142;em aplikacyjnym</p>
<p>Opcja ta w&#x142;&#x105;cza wst&#x119;pn&#x105; negocjacj&#x119; szyfrowania SSL dla wybranego protoko&#x142;u aplikacyjnego. Opcji <i>protocol</i> nie nale&#x17C;y u&#x17C;ywa&#x107; z szyfrowaniem SSL na osobnym porcie.</p>
<p>Aktualnie wspierane protoko&#x142;y:</p>
<dl>
<dt id="cifs"><i>cifs</i></dt>
<dd>
<p>Unieudokumentowane rozszerzenie protoko&#x142;u CIFS wspierane przez serwer Samba. Wsparcie dla tego rozrzeczenia zosta&#x142;o zarzucone w wersji 3.0.0 serwera Samba.</p>
</dd>
<dt id="connect"><i>connect</i></dt>
<dd>
<p>Negocjacja RFC 2817 - <i>Upgrading to TLS Within HTTP/1.1</i>, rozdzia&#x142; 5.2 - <i>Requesting a Tunnel with CONNECT</i></p>
<p>Ten protok&oacute;&#x142; jest wspierany wy&#x142;&#x105;cznie w trybie klienckim.</p>
</dd>
<dt id="imap"><i>imap</i></dt>
<dd>
<p>Negocjacja RFC 2595 - <i>Using TLS with IMAP, POP3 and ACAP</i></p>
</dd>
<dt id="nntp"><i>nntp</i></dt>
<dd>
<p>Negocjacja RFC 4642 - <i>Using Transport Layer Security (TLS) with Network News Transfer Protocol (NNTP)</i></p>
<p>Ten protok&oacute;&#x142; jest wspierany wy&#x142;&#x105;cznie w trybie klienckim.</p>
</dd>
<dt id="pgsql"><i>pgsql</i></dt>
<dd>
<p>Negocjacja http://www.postgresql.org/docs/8.3/static/protocol-flow.html#AEN73982</p>
</dd>
<dt id="pop3"><i>pop3</i></dt>
<dd>
<p>Negocjacja RFC 2449 - <i>POP3 Extension Mechanism</i></p>
</dd>
<dt id="proxy"><i>proxy</i></dt>
<dd>
<p>Przekazywanie adresu IP haproxy http://haproxy.1wt.eu/download/1.5/doc/proxy-protocol.txt</p>
</dd>
<dt id="smtp"><i>smtp</i></dt>
<dd>
<p>Negocjacja RFC 2487 - <i>SMTP Service Extension for Secure SMTP over TLS</i></p>
</dd>
<dt id="socks"><i>socks</i></dt>
<dd>
<p>Wspierany jest protok&oacute;&#x142; SOCKS w wersjach 4, 4a i 5. Protok&oacute;&#x142; SOCKS enkapsulowany jest w protokole SSL/TLS, wi&#x119;c adres serwera docelowego nie jest widoczny dla napastnika przechwytuj&#x105;cego ruch sieciowy.</p>
<p><i>http://www.openssh.com/txt/socks4.protocol</i></p>
<p><i>http://www.openssh.com/txt/socks4a.protocol</i></p>
<p>Nie jest wspierana komenda BIND protoko&#x142;u SOCKS. Przes&#x142;ana warto&#x15B;&#x107; parametru USERID jest ignorowana.</p>
<p>Sekcja PRZYK&#x141;ADY zawiera przyk&#x142;adowe pliki konfiguracyjne VPNa zbudowanego w oparciu o szyfrowany protok&oacute;&#x142; SOCKS.</p>
</dd>
</dl>
</dd>
<dt id="protocolAuthentication-basic-ntlm"><b>protocolAuthentication</b> = basic | ntlm</dt>
<dd>
<p>rodzaj uwierzytelnienia do negocjacji protoko&#x142;u</p>
<p>Obecnie typ uwierzytelnienia ma zastosowanie wy&#x142;&#x105;cznie w protokole &#39;connect&#39;.</p>
<p>domy&#x15B;lnie: basic</p>
</dd>
<dt id="protocolHost-HOST:PORT"><b>protocolHost</b> = HOST:PORT</dt>
<dd>
<p>adres docelowy do negocjacji protoko&#x142;u</p>
<p><i>protocolHost</i> okre&#x15B;la docelowy serwer SSL, do kt&oacute;rego po&#x142;&#x105;czy&#x107; ma si&#x119; proxy. Nie jest to adres serwera proxy, do kt&oacute;rego po&#x142;&#x105;czenie zestawia <b>stunnel</b>. Adres serwera proxy powinien by&#x107; okre&#x15B;lony przy pomocy opcji &#39;connect&#39;.</p>
<p>W obecnej wersji adres docelowy protoko&#x142;u ma zastosowanie wy&#x142;&#x105;cznie w protokole &#39;connect&#39;.</p>
</dd>
<dt id="protocolPassword-HASO"><b>protocolPassword</b> = HAS&#x141;O</dt>
<dd>
<p>has&#x142;o do negocjacji protoko&#x142;u</p>
</dd>
<dt id="protocolUsername-UYTKOWNIK"><b>protocolUsername</b> = U&#x17B;YTKOWNIK</dt>
<dd>
<p>nazwa u&#x17C;ytkownika do negocjacji protoko&#x142;u</p>
</dd>
<dt id="PSKidentity-TOSAMO"><b>PSKidentity</b> = TO&#x17B;SAMO&#x15A;&#x106;</dt>
<dd>
<p>to&#x17C;samo&#x15B;&#x107; klienta PSK</p>
<p><i>PSKidentity</i> mo&#x17C;e zosta&#x107; u&#x17C;yte w sekcjach klienckich do wybrania to&#x17C;samo&#x15B;ci u&#x17C;ytej do uwierzytelnienia PSK. Opcja jest ignorowana w sekcjach serwerowych.</p>
<p>domy&#x15B;lnie: pierwsza to&#x17C;samo&#x15B;&#x107; zdefiniowana w pliku <i>PSKsecrets</i></p>
</dd>
<dt id="PSKsecrets-PLIK"><b>PSKsecrets</b> = PLIK</dt>
<dd>
<p>plik z to&#x17C;samo&#x15B;ciami i kluczami PSK</p>
<p>Ka&#x17C;da linia pliku jest w nast&#x119;puj&#x105;cym formacie:</p>
<pre><code> TO&#x17B;SAMO&#x15A;&#x106;:KLUCZ</code></pre>
<p>Klucz musi by&#x107; mie&#x107; przynajmniej 20 znak&oacute;w. Nale&#x17C;y ograniczy&#x107; dost&#x119;p do czytania lub pisania do tego pliku.</p>
</dd>
<dt id="pty-yes-no-tylko-Unix"><b>pty</b> = yes | no (tylko Unix)</dt>
<dd>
<p>alokuj pseudoterminal dla programu uruchamianego w opcji &#39;exec&#39;</p>
</dd>
<dt id="redirect-HOST:-PORT"><b>redirect</b> = [HOST:]PORT</dt>
<dd>
<p>przekieruj klienta, kt&oacute;remu nie uda&#x142;o si&#x119; poprawnie uwierzytelni&#x107; przy pomocy certyfikatu</p>
<p>Opcja dzia&#x142;a wy&#x142;&#x105;cznie w trybie serwera. Cz&#x119;&#x15B;&#x107; negocjacji protoko&#x142;&oacute;w jest niekompatybilna z opcj&#x105; <i>redirect</i>.</p>
</dd>
<dt id="renegotiation-yes-no"><b>renegotiation</b> = yes | no</dt>
<dd>
<p>pozwalaj na renegocjacj&#x119; SSL</p>
<p>W&#x15B;r&oacute;d zastosowa&#x144; renegocjacji SSL s&#x105; niekt&oacute;re scenariusze uwierzytelnienia, oraz renegocjacja kluczy dla d&#x142;ugotrwa&#x142;ych po&#x142;&#x105;cze&#x144;.</p>
<p>Z drugiej strony w&#x142;asno&#x15B;&#x107; na mo&#x17C;e u&#x142;atwi&#x107; trywialny atak DoS poprzez wygenerowanie obci&#x105;&#x17C;enia procesora:</p>
<p>http://vincent.bernat.im/en/blog/2011-ssl-dos-mitigation.html</p>
<p>Warto zauwa&#x17C;y&#x107;, &#x17C;e zablokowanie renegocjacji SSL nie zebezpiecza w pe&#x142;ni przed opisanym problemem.</p>
<p>domy&#x15B;lnie: yes (o ile wspierane przez <b>OpenSSL</b>)</p>
</dd>
<dt id="reset-yes-no"><b>reset</b> = yes | no</dt>
<dd>
<p>sygnalizuj wyst&#x105;pienie b&#x142;&#x119;du przy pomocy flagi TCP RST</p>
<p>Opcja nie jest wspierana na niekt&oacute;rych platformach.</p>
<p>domy&#x15B;lnie: yes</p>
</dd>
<dt id="retry-yes-no"><b>retry</b> = yes | no</dt>
<dd>
<p>po&#x142;&#x105;cz ponownie sekcj&#x119; connect+exec po roz&#x142;&#x105;czeniu</p>
<p>domy&#x15B;lnie: no</p>
</dd>
<dt id="sessionCacheSize-LICZBA_POZYCJI_CACHE"><b>sessionCacheSize</b> = LICZBA_POZYCJI_CACHE</dt>
<dd>
<p>rozmiar pami&#x119;ci podr&#x119;cznej sesji SSL</p>
<p>Parametr okre&#x15B;la maksymaln&#x105; liczb&#x119; pozycji wewn&#x119;trznej pami&#x119;ci podr&#x119;cznej sesji.</p>
<p>Warto&#x15B;&#x107; 0 oznacza brak ograniczenia rozmiaru. Nie jest to zalecane dla system&oacute;w produkcyjnych z uwagi na ryzyko ataku DoS przez wyczerpanie pami&#x119;ci RAM.</p>
</dd>
<dt id="sessionCacheTimeout-LICZBA_SEKUND"><b>sessionCacheTimeout</b> = LICZBA_SEKUND</dt>
<dd>
<p>przeterminowanie pami&#x119;ci podr&#x119;cznej sesji SSL</p>
<p>Parametr okre&#x15B;la czas w sekundach, po kt&oacute;rym sesja SSL zostanie usuni&#x119;ta z pami&#x119;ci podr&#x119;cznej.</p>
</dd>
<dt id="sessiond-HOST:PORT"><b>sessiond</b> = HOST:PORT</dt>
<dd>
<p>adres sessiond - servera cache sesji SSL</p>
</dd>
<dt id="sslVersion-WERSJA_SSL"><b>sslVersion</b> = WERSJA_SSL</dt>
<dd>
<p>wersja protoko&#x142;u SSL</p>
<p>Wspierane opcje: all, SSLv2, SSLv3, TLSv1, TLSv1.1, TLSv1.2</p>
<p>Dost&#x119;pno&#x15B;&#x107; konkretnych protoko&#x142;&oacute;w zale&#x17C;y od u&#x17C;ytej wersji OpenSSL. Starsze wersje OpenSSL nie wspieraj&#x105; TLSv1.1 i TLSv1.2. Nowsze wersje OpenSSL nie wspieraj&#x105; SSLv2.</p>
<p>Przestarza&#x142;e protoko&#x142;y SSLv2 i SSLv3 s&#x105; domy&#x15B;lnie wy&#x142;&#x105;czone. Szczeg&oacute;&#x142;owe informacje dost&#x119;pne s&#x105; w opisie opcji <b>options</b>.</p>
</dd>
<dt id="stack-LICZBA_BAJTW-z-wyjtkiem-modelu-FORK"><b>stack</b> = LICZBA_BAJT&Oacute;W (z wyj&#x105;tkiem modelu FORK)</dt>
<dd>
<p>rozmiar stosu procesora w&#x105;tku</p>
</dd>
<dt id="TIMEOUTbusy-LICZBA_SEKUND"><b>TIMEOUTbusy</b> = LICZBA_SEKUND</dt>
<dd>
<p>czas oczekiwania na spodziewane dane</p>
</dd>
<dt id="TIMEOUTclose-LICZBA_SEKUND"><b>TIMEOUTclose</b> = LICZBA_SEKUND</dt>
<dd>
<p>czas oczekiwania na close_notify (ustaw na 0, je&#x17C;eli klientem jest MSIE)</p>
</dd>
<dt id="TIMEOUTconnect-LICZBA_SEKUND"><b>TIMEOUTconnect</b> = LICZBA_SEKUND</dt>
<dd>
<p>czas oczekiwania na nawi&#x105;zanie po&#x142;&#x105;czenia</p>
</dd>
<dt id="TIMEOUTidle-LICZBA_SEKUND"><b>TIMEOUTidle</b> = LICZBA_SEKUND</dt>
<dd>
<p>maksymalny czas utrzymywania bezczynnego po&#x142;&#x105;czenia</p>
</dd>
<dt id="transparent-none-source-destination-both-tylko-Unix"><b>transparent</b> = none | source | destination | both (tylko Unix)</dt>
<dd>
<p>tryb przezroczystego proxy na wspieranych platformach</p>
<p>Wspierane opcje:</p>
<dl>
<dt id="none"><b>none</b></dt>
<dd>
<p>Zablokuj wsparcie dla przezroczystago proxy. Jest to warto&#x15B;&#x107; domy&#x15B;lna.</p>
</dd>
<dt id="source"><b>source</b></dt>
<dd>
<p>Przepisz adres, aby nawi&#x105;zywane po&#x142;&#x105;czenie wydawa&#x142;o si&#x119; pochodzi&#x107; bezpo&#x15B;rednio od klienta, a nie od programu <b>stunnel</b>.</p>
<p>Opcja jest aktualnie obs&#x142;ugiwana w:</p>
<dl>
<dt id="Trybie-zdalnym-opcja-connect-w-systemie-Linux-2.6.28">Trybie zdalnym (opcja <i>connect</i>) w systemie <i>Linux &gt;=2.6.28</i></dt>
<dd>
<p>Konfiguracja wymaga nast&#x119;puj&#x105;cych ustawie&#x144; iptables oraz routingu (na przyk&#x142;ad w pliku /etc/rc.local lub analogicznym):</p>
<pre><code> 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 &gt;/proc/sys/net/ipv4/conf/lo/rp_filter</code></pre>
<p>Konfiguracja ta wymaga, aby <b>stunnel</b> by&#x142; wykonywany jako root i bez opcji <i>setuid</i>.</p>
</dd>
<dt id="Trybie-zdalnym-opcja-connect-w-systemie-Linux-2.2.x">Trybie zdalnym (opcja <i>connect</i>) w systemie <i>Linux 2.2.x</i></dt>
<dd>
<p>Konfiguracja ta wymaga skompilowania j&#x105;dra z opcj&#x105; <i>transparent proxy</i>. Docelowa us&#x142;uga musi by&#x107; umieszczona na osobnej maszynie, do kt&oacute;rej routing kierowany jest poprzez serwer <b>stunnela</b>.</p>
<p>Dodatkowo <b>stunnel</b> powinien by&#x107; wykonywany jako root i bez opcji <i>setuid</i>.</p>
</dd>
<dt id="Trybie-zdalnym-opcja-connect-w-systemie-FreeBSD-8.0">Trybie zdalnym (opcja <i>connect</i>) w systemie <i>FreeBSD &gt;=8.0</i></dt>
<dd>
<p>Konfiguracja ta wymaga skonfigurowania firewalla i routingu. <b>stunnel</b> musi by&#x107; wykonywany jako root i bez opcji <i>setuid</i>.</p>
</dd>
<dt id="Trybie-lokalnym-opcja-exec">Trybie lokalnym (opcja <i>exec</i>)</dt>
<dd>
<p>Konfiguracja ta jest realizowana przy pomocy biblioteki <i>libstunnel.so</i>. Do za&#x142;adowania biblioteki wykorzystywana jest zmienna &#x15B;rodowiskowa _RLD_LIST na platformie Tru64 lub LD_PRELOAD na innych platformach.</p>
</dd>
</dl>
</dd>
<dt id="destination"><i>destination</i></dt>
<dd>
<p>Oryginalny adres docelowy jest u&#x17C;ywany zamiast opcji <i>connect</i>.</p>
<p>Przyk&#x142;adowana konfiguracja przezroczystego adresu docelowego:</p>
<pre><code> [transparent]
client=yes
accept=&lt;port_stunnela&gt;
transparent=destination</code></pre>
<p>Konfiguracja wymaga ustawie&#x144; iptables, na przyk&#x142;ad w pliku /etc/rc.local lub analogicznym.</p>
<p>W przypadku docelowej us&#x142;ugi umieszczonej na tej samej maszynie:</p>
<pre><code> /sbin/iptables -t nat -I OUTPUT -p tcp --dport &lt;port_przekierowany&gt; \
-m ! --uid-owner &lt;identyfikator_u&#x17C;ytkownika_stunnela&gt; \
-j DNAT --to-destination &lt;lokalne_ip&gt;:&lt;lokalny_port&gt;</code></pre>
<p>W przypadku docelowej us&#x142;ugi umieszczonej na zdalnej maszynie:</p>
<pre><code> /sbin/iptables -I INPUT -i eth0 -p tcp --dport &lt;port_stunnela&gt; -j ACCEPT
/sbin/iptables -t nat -I PREROUTING -p tcp --dport &lt;port_przekierowany&gt; \
-i eth0 -j DNAT --to-destination &lt;lokalne_ip&gt;:&lt;port_stunnela&gt;</code></pre>
<p>Przezroczysty adres docelowy jest aktualnie wspierany wy&#x142;&#x105;cznie w systemie Linux.</p>
</dd>
<dt id="both"><i>both</i></dt>
<dd>
<p>U&#x17C;yj przezroczystego proxy zar&oacute;wno dla adresu &#x17A;r&oacute;d&#x142;owego jak i docelowego.</p>
</dd>
</dl>
<p>Dla zapewnienia kompatybilno&#x15B;ci z wcze&#x15B;niejszymim wersjami wspierane s&#x105; dwie dodatkowe opcje:</p>
<dl>
<dt id="yes"><i>yes</i></dt>
<dd>
<p>Opcja zosta&#x142;a przemianowana na <i>source</i>.</p>
</dd>
<dt id="no"><i>no</i></dt>
<dd>
<p>Opcja zosta&#x142;a przemianowana na <i>none</i>.</p>
</dd>
</dl>
</dd>
<dt id="verify-POZIOM"><b>verify</b> = POZIOM</dt>
<dd>
<p>weryfikuj certyfikat drugiej strony po&#x142;&#x105;czenia</p>
<dl>
<dt id="poziom-0"><i>poziom 0</i></dt>
<dd>
<p>zarz&#x105;daj certyfikatu i zignoruj go</p>
</dd>
<dt id="poziom-1"><i>poziom 1</i></dt>
<dd>
<p>weryfikuj, je&#x17C;eli zosta&#x142; przedstawiony</p>
</dd>
<dt id="poziom-2"><i>poziom 2</i></dt>
<dd>
<p>weryfikuj z zainstalowanym certyfikatem Centrum Certyfikacji</p>
</dd>
<dt id="poziom-3"><i>poziom 3</i></dt>
<dd>
<p>weryfikuj z lokalnie zainstalowanym certyfikatem drugiej strony</p>
</dd>
<dt id="poziom-4"><i>poziom 4</i></dt>
<dd>
<p>weryfikuj z certyfikatem drugiej strony ignoruj&#x105;c &#x142;a&#x144;cuch CA</p>
</dd>
<dt id="domylnie"><i>domy&#x15B;lnie</i></dt>
<dd>
<p>nie weryfikuj</p>
</dd>
</dl>
</dd>
</dl>
<a href="#_podtop_"><h1 id="ZWRACANA-WARTO">ZWRACANA WARTO&#x15A;&#x106;</h1></a>
<p><b>stunnel</b> zwraca zero w przypadku sukcesu, lub warto&#x15B;&#x107; niezerow&#x105; w przypadku b&#x142;&#x119;du.</p>
<a href="#_podtop_"><h1 id="SIGNAY">SIGNA&#x141;Y</h1></a>
<p>Nast&#x119;puj&#x105;ce sygna&#x142;y mog&#x105; by&#x107; u&#x17C;yte do sterowania programem w systemie Unix:</p>
<dl>
<dt id="SIGHUP">SIGHUP</dt>
<dd>
<p>Za&#x142;aduj ponownie plik konfiguracyjny.</p>
<p>Niekt&oacute;re globalne opcje nie b&#x119;d&#x105; prze&#x142;adowane:</p>
<ul>
<li><p>chroot</p>
</li>
<li><p>foreground</p>
</li>
<li><p>pid</p>
</li>
<li><p>setgid</p>
</li>
<li><p>setuid</p>
</li>
</ul>
<p>Je&#x17C;eli wykorzystywana jest opcja &#39;setuid&#39; <b>stunnel</b> nie b&#x119;dzie m&oacute;g&#x142; za&#x142;adowa&#x107; ponownie konfiguracji wykorzystuj&#x105;cej uprzywilejowane (&lt;1024) porty.</p>
<p>Je&#x17C;eli wykorzystywana jest opcja &#39;chroot&#39; <b>stunnel</b> b&#x119;dzie szuka&#x142; wszystkich potrzebnych plik&oacute;w (&#x142;&#x105;cznie z plikiem konfiguracyjnym, certyfikatami, logiem i plikiem pid) wewn&#x105;trz katalogu wskazanego przez &#39;chroot&#39;.</p>
</dd>
<dt id="SIGUSR1">SIGUSR1</dt>
<dd>
<p>Zamknij i otw&oacute;rz ponownie log. Funkcja ta mo&#x17C;e zosta&#x107; u&#x17C;yta w skrypcie rotuj&#x105;cym log programu <b>stunnel</b>.</p>
</dd>
<dt id="SIGTERM-SIGQUIT-SIGINT">SIGTERM, SIGQUIT, SIGINT</dt>
<dd>
<p>Zako&#x144;cz dzia&#x142;anie programu.</p>
</dd>
</dl>
<p>Skutek wys&#x142;ania innych sygna&#x142;&oacute;w jest niezdefiniowany.</p>
<a href="#_podtop_"><h1 id="PRZYKADY">PRZYK&#x141;ADY</h1></a>
<p>Szyfrowanie po&#x142;&#x105;cze&#x144; do lokalnego serwera <i>imapd</i> mo&#x17C;na u&#x17C;y&#x107;:</p>
<pre><code> [imapd]
accept = 993
exec = /usr/sbin/imapd
execArgs = imapd</code></pre>
<p>albo w trybie zdalnym:</p>
<pre><code> [imapd]
accept = 993
connect = 143</code></pre>
<p>Aby umo&#x17C;liwi&#x107; lokalnemu klientowi poczty elektronicznej korzystanie z serwera <i>imapd</i> przez SSL nale&#x17C;y skonfigurowa&#x107; pobieranie poczty z adresu localhost i portu 119, oraz u&#x17C;y&#x107; nast&#x119;puj&#x105;cej konfiguracji:</p>
<pre><code> [imap]
client = yes
accept = 143
connect = serwer:993</code></pre>
<p>W po&#x142;&#x105;czeniu z programem <i>pppd</i> <b>stunnel</b> pozwala zestawi&#x107; prosty VPN. Po stronie serwera nas&#x142;uchuj&#x105;cego na porcie 2020 jego konfiguracja mo&#x17C;e wygl&#x105;da&#x107; nast&#x119;puj&#x105;co:</p>
<pre><code> [vpn]
accept = 2020
exec = /usr/sbin/pppd
execArgs = pppd local
pty = yes</code></pre>
<p>Poni&#x17C;szy plik konfiguracyjny mo&#x17C;e by&#x107; wykorzystany do uruchomienia programu <b>stunnel</b> w trybie <i>inetd</i>. Warto zauwa&#x17C;y&#x107;, &#x17C;e w pliku konfiguracyjnym nie ma sekcji <i>[nazwa_us&#x142;ugi]</i>.</p>
<pre><code> exec = /usr/sbin/imapd
execArgs = imapd</code></pre>
<p>Aby skonfigurowa&#x107; VPN mo&#x17C;na u&#x17C;y&#x107; nast&#x119;puj&#x105;cej konfiguracji klienta:</p>
<pre><code> [socks_client]
client = yes
accept = 127.0.0.1:1080
connect = vpn_server:9080
verify = 4
CAfile = stunnel.pem</code></pre>
<p>Odpowiadaj&#x105;ca jej konfiguracja serwera vpn_server:</p>
<pre><code> [socks_server]
protocol = socks
accept = 9080
cert = stunnel.pem
key = stunnel.key</code></pre>
<p>Do przetestowania konfiguracji mo&#x17C;na wyda&#x107; na maszynie klienckiej komend&#x119;:</p>
<pre><code> curl --socks4a localhost http://www.example.com/</code></pre>
<a href="#_podtop_"><h1 id="NOTKI">NOTKI</h1></a>
<h2 id="OGRANICZENIA">OGRANICZENIA</h2>
<p><b>stunnel</b> nie mo&#x17C;e by&#x107; u&#x17C;ywany do szyfrowania protoko&#x142;u <i>FTP</i>, poniewa&#x17C; do przesy&#x142;ania poszczeg&oacute;lnych plik&oacute;w u&#x17C;ywa on dodatkowych po&#x142;&#x105;cze&#x144; otwieranych na portach o dynamicznie przydzielanych numerach. Istniej&#x105; jednak specjalne wersje klient&oacute;w i serwer&oacute;w FTP pozwalaj&#x105;ce na szyfrowanie przesy&#x142;anych danych przy pomocy protoko&#x142;u <i>SSL</i>.</p>
<h2 id="TRYB-INETD-tylko-Unix">TRYB INETD (tylko Unix)</h2>
<p>W wi&#x119;kszo&#x15B;ci zastosowa&#x144; <b>stunnel</b> samodzielnie nas&#x142;uchuje na porcie podanym w pliku konfiguracyjnym i tworzy po&#x142;&#x105;czenie z innym portem podanym w opcji <i>connect</i> lub nowym programem podanym w opcji <i>exec</i>. Niekt&oacute;rzy wol&#x105; jednak wykorzystywa&#x107; oddzielny program, kt&oacute;ry odbiera po&#x142;&#x105;czenia, po czym uruchamia program <b>stunnel</b>. Przyk&#x142;adami takich program&oacute;w s&#x105; inetd, xinetd i tcpserver.</p>
<p>Przyk&#x142;adowa linia pliku /etc/inetd.conf mo&#x17C;e wygl&#x105;da&#x107; tak:</p>
<pre><code> imaps stream tcp nowait root @bindir@/stunnel
stunnel @sysconfdir@/stunnel/imaps.conf</code></pre>
<p>Poniewa&#x17C; w takich przypadkach po&#x142;&#x105;czenie na zdefiniowanym porcie (tutaj <i>imaps</i>) nawi&#x105;zuje osobny program (tutaj <i>inetd</i>), <b>stunnel</b> nie mo&#x17C;e u&#x17C;ywa&#x107; opcji <i>accept</i>. W pliku konfiguracyjnym nie mo&#x17C;e by&#x107; r&oacute;wnie&#x17C; zdefiniowana &#x17C;adna us&#x142;uga (<i>[nazwa_us&#x142;ugi]</i>), poniewa&#x17C; konfiguracja taka pozwala na nawi&#x105;zanie tylko jednego po&#x142;&#x105;czenia. Wszystkie <i>OPCJE US&#x141;UG</i> powinny by&#x107; umieszczone razem z opcjami globalnymi. Przyk&#x142;ad takiej konfiguracji znajduje si&#x119; w sekcji <i>PRZYK&#x141;ADY</i>.</p>
<h2 id="CERTYFIKATY">CERTYFIKATY</h2>
<p>Protok&oacute;&#x142; SSL wymaga, aby ka&#x17C;dy serwer przedstawia&#x142; si&#x119; nawi&#x105;zuj&#x105;cemu po&#x142;&#x105;czenie klientowi prawid&#x142;owym certyfikatem X.509. Potwierdzenie to&#x17C;samo&#x15B;ci serwera polega na wykazaniu, &#x17C;e posiada on odpowiadaj&#x105;cy certyfikatowi klucz prywatny. Najprostsz&#x105; metod&#x105; uzyskania certyfikatu jest wygenerowanie go przy pomocy wolnego pakietu <b>OpenSSL</b>. Wi&#x119;cej informacji na temat generowania certyfikat&oacute;w mo&#x17C;na znale&#x17A;&#x107; na umieszczonych poni&#x17C;ej stronach.</p>
<p>Istotn&#x105; kwesti&#x105; jest kolejno&#x15B;&#x107; zawarto&#x15B;ci pliku <i>.pem</i>. W pierwszej kolejno&#x15B;ci powinien on zawiera&#x107; klucz prywatny, a dopiero za nim podpisany certyfikat (nie &#x17C;&#x105;danie certyfikatu). Po certyfikacie i kluczu prywatnym powinny znajdowa&#x107; si&#x119; puste linie. Je&#x17C;eli przed certyfikatem znajduj&#x105; si&#x119; dodatkowe informacje tekstowe, to powinny one zosta&#x107; usuni&#x119;te. Otrzymany plik powinien mie&#x107; nast&#x119;puj&#x105;c&#x105; posta&#x107;:</p>
<pre><code> -----BEGIN RSA PRIVATE KEY-----
[zakodowany klucz]
-----END RSA PRIVATE KEY-----
[pusta linia]
-----BEGIN CERTIFICATE-----
[zakodowany certyfikat]
-----END CERTIFICATE-----
[pusta linia]</code></pre>
<h2 id="LOSOWO">LOSOWO&#x15A;&#x106;</h2>
<p><b>stunnel</b> potrzebuje zainicjowa&#x107; PRNG (generator liczb pseudolosowych), gdy&#x17C; protok&oacute;&#x142; SSL wymaga do bezpiecze&#x144;stwa kryptograficznego &#x17A;r&oacute;d&#x142;a dobrej losowo&#x15B;ci. Nast&#x119;puj&#x105;ce &#x17A;r&oacute;d&#x142;a s&#x105; kolejno odczytywane a&#x17C; do uzyskania wystarczaj&#x105;cej ilo&#x15B;ci entropii:</p>
<ul>
<li><p>Zawarto&#x15B;&#x107; pliku podanego w opcji <i>RNDfile</i>.</p>
</li>
<li><p>Zawarto&#x15B;&#x107; pliku o nazwie okre&#x15B;lonej przez zmienn&#x105; &#x15B;rodowiskow&#x105; RANDFILE, o ile jest ona ustawiona.</p>
</li>
<li><p>Plik .rnd umieszczony w katalogu domowym u&#x17C;ytkownika, je&#x17C;eli zmienna RANDFILE nie jest ustawiona.</p>
</li>
<li><p>Plik podany w opcji &#39;--with-random&#39; w czasie konfiguracji programu.</p>
</li>
<li><p>Zawarto&#x15B;&#x107; ekranu w systemie Windows.</p>
</li>
<li><p>Gniazdo egd, je&#x17C;eli u&#x17C;yta zosta&#x142;a opcja <i>EGD</i>.</p>
</li>
<li><p>Gniazdo egd podane w opcji &#39;--with-egd-socket&#39; w czasie konfiguracji programu.</p>
</li>
<li><p>Urz&#x105;dzenie /dev/urandom.</p>
</li>
</ul>
<p>Wsp&oacute;&#x142;czesne (<b>0.9.5a</b> lub nowsze) wersje biblioteki <b>OpenSSL</b> automatycznie zaprzestaj&#x105; &#x142;adowania kolejnych danych w momencie uzyskania wystarczaj&#x105;cej ilo&#x15B;ci entropii. Wcze&#x15B;niejsze wersje biblioteki wykorzystaj&#x105; wszystkie powy&#x17C;sze &#x17A;r&oacute;d&#x142;a, gdy&#x17C; nie istnieje tam funkcja pozwalaj&#x105;ca okre&#x15B;li&#x107;, czy uzyskano ju&#x17C; wystarczaj&#x105;co du&#x17C;o danych.</p>
<p>Warto zwr&oacute;ci&#x107; uwag&#x119;, &#x17C;e na maszynach z systemem Windows, na kt&oacute;rych konsoli nie pracuje u&#x17C;ytkownik, zawarto&#x15B;&#x107; ekranu nie jest wystarczaj&#x105;co zmienna, aby zainicjowa&#x107; PRNG. W takim przypadku do zainicjowania generatora nale&#x17C;y u&#x17C;y&#x107; opcji <i>RNDfile</i>.</p>
<p>Plik <i>RNDfile</i> powinien zawiera&#x107; dane losowe -- r&oacute;wnie&#x17C; w tym sensie, &#x17C;e powinny by&#x107; one inne przy ka&#x17C;dym uruchomieniu programu <b>stunnel</b>. O ile nie u&#x17C;yta zosta&#x142;a opcja <i>RNDoverwrite</i> jest to robione automatycznie. Do r&#x119;cznego uzyskania takiego pliku u&#x17C;yteczna mo&#x17C;e by&#x107; komenda <i>openssl rand</i> dostarczana ze wsp&oacute;&#x142;czesnymi wersjami pakietu <b>OpenSSL</b>.</p>
<p>Jeszcze jedna istotna informacja -- je&#x17C;eli dost&#x119;pne jest urz&#x105;dzenie <i>/dev/urandom</i> biblioteka <b>OpenSSL</b> ma zwyczaj zasilania nim PRNG w trakcie sprawdzania stanu generatora. W systemach z <i>/dev/urandom</i> urz&#x105;dzenie to b&#x119;dzie najprawdopodobniej u&#x17C;yte, pomimo &#x17C;e znajduje si&#x119; na samym ko&#x144;cu powy&#x17C;szej listy. Jest to w&#x142;a&#x15B;ciwo&#x15B;&#x107; biblioteki <b>OpenSSL</b>, a nie programu <b>stunnel</b>.</p>
<h2 id="PARAMETRY-DH">PARAMETRY DH</h2>
<p>Pocz&#x105;wszy od wersji 4.40 <b>stunnel</b> zawiera w kodzie programu 2048-bitowe parametry DH. Od wersji 5.18 te pocz&#x105;tkowe warto&#x15B;ci parametr&oacute;w DH s&#x105; wymieniane na autogenerowane parametry tymczasowe. Wygenerowanie parametr&oacute;w DH mo&#x17C;e zaj&#x105;&#x107; nawet wiele minut.</p>
<p>Alternatywnie parametry DH mo&#x17C;na umie&#x15B;ci&#x107; w pliku razem z certyfikatem, co wy&#x142;&#x105;cza generowanie parametr&oacute;w tymczasowych:</p>
<pre><code> openssl dhparam 2048 &gt;&gt; stunnel.pem</code></pre>
<a href="#_podtop_"><h1 id="PLIKI">PLIKI</h1></a>
<dl>
<dt id="sysconfdir-stunnel-stunnel.conf"><i>@sysconfdir@/stunnel/stunnel.conf</i></dt>
<dd>
<p>plik konfiguracyjny programu</p>
</dd>
</dl>
<a href="#_podtop_"><h1 id="BDY">B&#x141;&#x118;DY</h1></a>
<p>Opcja <i>execArgs</i> oraz linia komend Win32 nie obs&#x142;uguje cytowania.</p>
<a href="#_podtop_"><h1 id="ZOBACZ-RWNIE">ZOBACZ R&Oacute;WNIE&#x17B;</h1></a>
<dl>
<dt id="tcpd-8"><a href="http://man.he.net/man8/tcpd">tcpd(8)</a></dt>
<dd>
<p>biblioteka kontroli dost&#x119;pu do us&#x142;ug internetowych</p>
</dd>
<dt id="inetd-8"><a href="http://man.he.net/man8/inetd">inetd(8)</a></dt>
<dd>
<p>&#39;super-serwer&#39; internetowy</p>
</dd>
<dt id="http:-www.stunnel.org"><i>http://www.stunnel.org/</i></dt>
<dd>
<p>strona domowa programu <b>stunnel</b></p>
</dd>
<dt id="http:-www.openssl.org"><i>http://www.openssl.org/</i></dt>
<dd>
<p>strona projektu <b>OpenSSL</b></p>
</dd>
</dl>
<a href="#_podtop_"><h1 id="AUTOR">AUTOR</h1></a>
<dl>
<dt id="Micha-Trojnara">Micha&#x142; Trojnara</dt>
<dd>
<p>&lt;<i>Michal.Trojnara@mirt.net</i>&gt;</p>
</dd>
</dl>
<table border="0" width="100%" cellspacing="0" cellpadding="3">
<tr><td class="_podblock_" style="background-color: #cccccc; color: #000" valign="middle">
<big><strong><span class="_podblock_">&nbsp;stunnel TLS Proxy</span></strong></big>
</td></tr>
</table>
</body>
</html>