stunnel4/doc/stunnel.pl.html

1159 lines
45 KiB
HTML
Raw Normal View History

2017-03-28 09:58:13 +02:00
<?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.8</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rev="made" href="mailto:root@localhost" />
</head>
<body style="background-color: white">
<!-- INDEX BEGIN -->
<div name="index">
<p><a name="__index__"></a></p>
<!--
<ul>
<li><a href="#nazwa">NAZWA</a></li>
<li><a href="#sk__adnia">SKŁ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></li>
<ul>
<li><a href="#opcje_globalne">OPCJE GLOBALNE</a></li>
<li><a href="#opcje_us__ug">OPCJE USŁUG</a></li>
</ul>
<li><a href="#zwracana_warto____">ZWRACANA WARTOŚĆ</a></li>
<li><a href="#signa__y">SIGNAŁY</a></li>
<li><a href="#przyk__ady">PRZYKŁADY</a></li>
<li><a href="#notki">NOTKI</a></li>
<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ŚĆ</a></li>
<li><a href="#parametry_dh">PARAMETRY DH</a></li>
</ul>
<li><a href="#pliki">PLIKI</a></li>
<li><a href="#b____dy">BŁĘDY</a></li>
<li><a href="#zobacz_r__wnie__">ZOBACZ RÓWNIEŻ</a></li>
<li><a href="#autor">AUTOR</a></li>
</ul>
-->
</div>
<!-- INDEX END -->
<p>
</p>
<h1><a name="nazwa">NAZWA</a></h1>
<p>stunnel - uniwersalny tunel protokołu SSL</p>
<p>
</p>
<hr />
<h1><a name="sk__adnia">SKŁADNIA</a></h1>
<dl>
<dt><strong><a name="unix" class="item"><strong>Unix:</strong></a></strong></dt>
<dd>
<p><strong>stunnel</strong> [&lt;plik&gt;] | -fd&nbsp;n | -help | -version | -sockets</p>
</dd>
<dt><strong><a name="win32" class="item"><strong>WIN32:</strong></a></strong></dt>
<dd>
<p><strong>stunnel</strong> [ [-install | -uninstall | -start | -stop ] | -exit]
[-quiet] [&lt;plik&gt;] ] | -help | -version | -sockets</p>
</dd>
</dl>
<p>
</p>
<hr />
<h1><a name="opis">OPIS</a></h1>
<p>Program <strong>stunnel</strong> został zaprojektowany do opakowywania w protokół <em>SSL</em>
połączeń pomiędzy zdalnymi klientami a lokalnymi lub zdalnymi serwerami.
Przez serwer lokalny rozumiana jest aplikacja przeznaczona do uruchamiania
przy pomocy <em>inetd</em>.
Stunnel pozwala na proste zestawienie komunikacji serwerów nie posiadających
funkcjonalności <em>SSL</em> poprzez bezpieczne kanały <em>SSL</em>.</p>
<p><strong>stunnel</strong> pozwala dodać funkcjonalność <em>SSL</em> do powszechnie stosowanych
demonów <em>inetd</em>, np. <em>pop3</em> lub <em>imap</em>, do samodzielnych demonów,
np. <em>nntp</em>, <em>smtp</em> lub <em>http</em>, a nawet tunelować ppp poprzez gniazda sieciowe
bez zmian w kodzie źródłowym.</p>
<p>
</p>
<hr />
<h1><a name="opcje">OPCJE</a></h1>
<dl>
<dt><strong><a name="plik" class="item">&lt;<strong>plik</strong>&gt;</a></strong></dt>
<dd>
<p>użyj podanego pliku konfiguracyjnego</p>
</dd>
<dt><strong><a name="n" class="item"><strong>-fd n</strong> (tylko Unix)</a></strong></dt>
<dd>
<p>wczytaj konfigurację z podanego deskryptora pliku</p>
</dd>
<dt><strong><a name="help" class="item"><strong>-help</strong></a></strong></dt>
<dd>
<p>drukuj listę wspieranych opcji</p>
</dd>
<dt><strong><a name="version" class="item"><strong>-version</strong></a></strong></dt>
<dd>
<p>drukuj wersję programu i domyślne wartości parametrów</p>
</dd>
<dt><strong><a name="sockets" class="item"><strong>-sockets</strong></a></strong></dt>
<dd>
<p>drukuj domyślne opcje gniazd</p>
</dd>
<dt><strong><a name="install" class="item"><strong>-install</strong> (tylko NT/2000/XP)</a></strong></dt>
<dd>
<p>instaluj serwis NT</p>
</dd>
<dt><strong><a name="uninstall" class="item"><strong>-uninstall</strong> (tylko NT/2000/XP)</a></strong></dt>
<dd>
<p>odinstaluj serwis NT</p>
</dd>
<dt><strong><a name="start" class="item"><strong>-start</strong> (tylko NT/2000/XP)</a></strong></dt>
<dd>
<p>uruchom serwis NT</p>
</dd>
<dt><strong><a name="stop" class="item"><strong>-stop</strong> (tylko NT/2000/XP)</a></strong></dt>
<dd>
<p>zatrzymaj serwis NT</p>
</dd>
<dt><strong><a name="exit" class="item"><strong>-exit</strong> (tylko Win32)</a></strong></dt>
<dd>
<p>zatrzymaj uruchomiony program</p>
</dd>
<dt><strong><a name="quiet" class="item"><strong>-quiet</strong> (tylko NT/2000/XP)</a></strong></dt>
<dd>
<p>nie wyświetlaj okienka informującego o pomyślnym zainstalowaniu lub
odinstalowaniu</p>
</dd>
</dl>
<p>
</p>
<hr />
<h1><a name="plik_konfiguracyjny">PLIK KONFIGURACYJNY</a></h1>
<p>Linia w pliku konfiguracyjnym może być:</p>
<ul>
2017-03-28 10:18:03 +02:00
<li>
<p>pusta (ignorowana)</p>
2017-03-28 09:58:13 +02:00
</li>
2017-03-28 10:18:03 +02:00
<li>
<p>komentarzem rozpoczynającym się znakiem ';' (ignorowana)</p>
2017-03-28 09:58:13 +02:00
</li>
2017-03-28 10:18:03 +02:00
<li>
<p>parą 'nazwa_opcji = wartość_opcji'</p>
2017-03-28 09:58:13 +02:00
</li>
2017-03-28 10:18:03 +02:00
<li>
<p>tekstem '[nazwa_usługi]' wskazującym początek definicji usługi</p>
2017-03-28 09:58:13 +02:00
</li>
</ul>
<p>Parametr adres może być:</p>
<ul>
2017-03-28 10:18:03 +02:00
<li>
<p>numerem portu</p>
2017-03-28 09:58:13 +02:00
</li>
2017-03-28 10:18:03 +02:00
<li>
<p>oddzieloną średnikiem parą adresu (IPv4, IPv6, lub nazwą domenową) i numeru portu</p>
2017-03-28 09:58:13 +02:00
</li>
2017-03-28 10:18:03 +02:00
<li>
<p>ścieżką do gniazda Unix (tylko Unix)</p>
2017-03-28 09:58:13 +02:00
</li>
</ul>
<p>
</p>
<h2><a name="opcje_globalne">OPCJE GLOBALNE</a></h2>
<dl>
<dt><strong><a name="katalog" class="item"><strong>chroot</strong> = katalog (tylko Unix)</a></strong></dt>
<dd>
<p>katalog roboczego korzenia systemu plików</p>
<p>Opcja określa katalog, w którym uwięziony zostanie proces programu
<strong>stunnel</strong> tuż po jego inicjalizacji, a przed rozpoczęciem odbierania
połączeń. Ścieżki podane w opcjach <em>CApath</em>, <em>CRLpath</em>, <em>pid</em>
oraz <em>exec</em> muszą być umieszczone wewnątrz katalogu podanego w opcji
<em>chroot</em> i określone względem tego katalogu.</p>
2017-03-28 10:18:03 +02:00
<p>Niektóre funkcje systemu operacyjnego mogą wymagać dodatkowych plików umieszczonych w katalogu podanego w parametrze chroot:</p>
<ul>
<li>
<p>opóźnione rozwinięcie adresó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óre inne pliki mogą potrzebować plików urządzeń, np. /dev/zero lub /dev/null</p>
</li>
</ul>
2017-03-28 09:58:13 +02:00
</dd>
<dt><strong><a name="compression_deflate_zlib_rle" class="item"><strong>compression</strong> = deflate | zlib | rle</a></strong></dt>
<dd>
<p>wybór algorytmu kompresji przesyłanych danych</p>
<p>domyślnie: bez kompresji</p>
<p>Algorytm deflate jest standardową metodą kompresji zgodnie z <a href="http://www.ietf.org/rfc/rfc1951.txt" class="rfc">RFC 1951</a>.</p>
2017-03-28 10:18:03 +02:00
<p>Kompresja zlib zaimplementowana w <strong>OpenSSL 0.9.8</strong> i nowszych nie jest
kompatybilna implementacją <strong>OpenSSL 0.9.7</strong>.</p>
<p>Kompresja rle nie jest zaimplementowana w aktualnych wersjach <strong>OpenSSL</strong>.</p>
2017-03-28 09:58:13 +02:00
</dd>
<dt><strong><a name="debug_poziom_podsystem" class="item"><strong>debug</strong> = poziom[.podsystem]</a></strong></dt>
<dd>
<p>szczegółowość logowania</p>
<p>Poziom logowania można określić 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ą komunikaty o poziomie niższym (numerycznie) lub równym podanemu.
Do uzyskania najwyższego poziomu szczegółowości można użyć opcji
<em>debug = debug</em> lub <em>debug = 7</em>. Domyślnym poziomem jest notice (5).</p>
<p>O ile nie wyspecyfikowano podsystemu użyty będzie domyślny: daemon.
Podsystemy nie są wspierane przez platformę Win32.</p>
<p>Wielkość liter jest ignorowana zarówno dla poziomu jak podsystemu.</p>
</dd>
<dt><strong><a name="ka_do_egd" class="item"><strong>EGD</strong> = ścieżka_do_EGD (tylko Unix)</a></strong></dt>
<dd>
<p>ścieżka do gniazda programu Entropy Gathering Daemon</p>
<p>Opcja pozwala określić ścieżkę do gniazda programu Entropy Gathering Daemon
używanego do zainicjalizowania generatora ciągów pseudolosowych biblioteki
2017-03-28 10:18:03 +02:00
<strong>OpenSSL</strong>. Opcja jest dostępna z biblioteką <strong>OpenSSL 0.9.5a</strong> lub nowszą.</p>
2017-03-28 09:58:13 +02:00
</dd>
<dt><strong><a name="engine_auto_identyfikator_urz_dzenia" class="item"><strong>engine</strong> = auto | &lt;identyfikator urządzenia&gt;</a></strong></dt>
<dd>
<p>wybór sprzętowego urządzenia kryptograficznego</p>
<p>domyślnie: bez wykorzystania urządzeń kryptograficznych</p>
<p>Przykładowa konfiguracja umożliwiająca odczytanie klucza prywatnego z
urządzenia zgodnego z OpenSC:</p>
<pre>
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</pre>
<pre>
[service]
engineNum=1
key=id_45</pre>
</dd>
<dt><strong><a name="enginectrl_command_parameter" class="item"><strong>engineCtrl</strong> = &lt;command&gt;[:&lt;parameter&gt;]</a></strong></dt>
<dd>
<p>konfiguracja urządzenia kryptograficznego</p>
<p>Specjalne komendy &quot;LOAD&quot; i &quot;INIT&quot; pozwalają na załadowanie i inicjalizację
modułu kryptograficznego urządzenia.</p>
</dd>
<dt><strong><a name="fips_yes_no" class="item"><strong>fips</strong> = yes | no</a></strong></dt>
<dd>
<p>Włącz lub wyłącz tryb FIPS 140-2.</p>
2017-03-28 10:18:03 +02:00
<p>Opcja pozwala wyłączyć wejście w tryb FIPS, jeśli <strong>stunnel</strong> został
skompilowany ze wsparciem dla FIPS 140-2.</p>
2017-03-28 09:58:13 +02:00
<p>domyślnie: yes (pracuj w trybie FIPS 140-2)</p>
</dd>
<dt><strong><a name="no" class="item"><strong>foreground</strong> = yes | no (tylko Unix)</a></strong></dt>
<dd>
<p>tryb pierwszoplanowy</p>
2017-03-28 10:18:03 +02:00
<p>Użycie tej opcji powoduje, że <strong>stunnel</strong> nie przechodzi w tło logując
2017-03-28 09:58:13 +02:00
swoje komunikaty na konsolę zamiast przez <em>syslog</em> (o ile nie użyto
opcji <em>output</em>).</p>
</dd>
<dt><strong><a name="output_plik" class="item"><strong>output</strong> = plik</a></strong></dt>
<dd>
<p>plik, do którego dopisane zostaną logi</p>
<p>Użycie tej opcji powoduje dopisanie logów do podanego pliku.</p>
<p>Do kierowaniakomunikatów na standardowe wyjście (na przykład po to, żeby
zalogować je programem splogger z pakietu daemontools) można podać jako
parametr urządzenie /dev/stdout.</p>
</dd>
<dt><strong><strong>pid</strong> = plik (tylko Unix)</strong></dt>
<dd>
<p>położenie pliku z numerem procesu</p>
<p>Jeżeli argument jest pusty plik nie zostanie stworzony.</p>
<p>Jeżeli zdefiniowano katalog <em>chroot</em>, to ścieżka do <em>pid</em> jest określona
względem tego katalogu.</p>
</dd>
<dt><strong><a name="rndbytes_liczba_bajt_w" class="item"><strong>RNDbytes</strong> = liczba_bajtów</a></strong></dt>
<dd>
<p>liczba bajtów do zainicjowania generatora pseudolosowego</p>
2017-03-28 10:18:03 +02:00
<p>W wersjach biblioteki <strong>OpenSSL</strong> starszych niż <strong>0.9.5a</strong> opcja ta określa
2017-03-28 09:58:13 +02:00
również liczbę bajtów wystarczających do zainicjowania PRNG.
Nowsze wersje biblioteki mają wbudowaną funkcję określającą, czy
dostarczona ilość losowości jest wystarczająca do zainicjowania generatora.</p>
</dd>
<dt><strong><a name="rndfile_plik" class="item"><strong>RNDfile</strong> = plik</a></strong></dt>
<dd>
<p>ścieżka do pliku zawierającego losowe dane</p>
2017-03-28 10:18:03 +02:00
<p>Biblioteka <strong>OpenSSL</strong> użyje danych z tego pliku do zainicjowania
2017-03-28 09:58:13 +02:00
generatora pseudolosowego.</p>
</dd>
<dt><strong><a name="rndoverwrite_yes_no" class="item"><strong>RNDoverwrite</strong> = yes | no</a></strong></dt>
<dd>
<p>nadpisz plik nowymi wartościami pseudolosowymi</p>
<p>domyślnie: yes (nadpisz)</p>
</dd>
<dt><strong><a name="nazwa_serwisu" class="item"><strong>service</strong> = nazwa_serwisu (tylko Unix)</a></strong></dt>
<dd>
<p>użyj parametru jako nazwy serwisu dla biblioteki TCP Wrapper w trybie <em>inetd</em></p>
<p>domyślnie: stunnel</p>
</dd>
<dt><strong><a name="identyfikator_grupy" class="item"><strong>setgid</strong> = identyfikator_grupy (tylko Unix)</a></strong></dt>
<dd>
2017-03-28 10:18:03 +02:00
<p>grupa z której prawami pracował będzie <strong>stunnel</strong></p>
2017-03-28 09:58:13 +02:00
</dd>
<dt><strong><a name="ytkownika" class="item"><strong>setuid</strong> = identyfikator_użytkownika (tylko Unix)</a></strong></dt>
<dd>
2017-03-28 10:18:03 +02:00
<p>użytkownik, z którego prawami pracował będzie <strong>stunnel</strong></p>
2017-03-28 09:58:13 +02:00
</dd>
<dt><strong><a name="socket_a_l_r_option_value_value" class="item"><strong>socket</strong> = a|l|r:option=value[:value]</a></strong></dt>
<dd>
<p>ustaw opcję na akceptującym/lokalnym/zdalnym gnieździe</p>
<p>Dla opcji linger wartości mają postać l_onof:l_linger.
Dla opcji time wartości mają postać tv_sec:tv_usec.</p>
<p>Przykłady:</p>
<pre>
socket = l:SO_LINGER=1:60
ustaw jednominutowe przeterminowanie
przy zamykaniu lokalnego gniazda
socket = r:SO_OOBINLINE=yes
umieść dane pozapasmowe (out-of-band)
bezpośrednio w strumieniu danych
wejściowych dla zdalnych gniazd
socket = a:SO_REUSEADDR=no
zablokuj ponowne używanie portu
(domyślnie włączone)
socket = a:SO_BINDTODEVICE=lo
przyjmuj połączenia wyłącznie na
interfejsie zwrotnym (ang. loopback)</pre>
</dd>
<dt><strong><strong>syslog</strong> = yes | no (tylko Unix)</strong></dt>
<dd>
<p>włącz logowanie poprzez mechanizm syslog</p>
<p>domyślnie: yes (włącz)</p>
</dd>
<dt><strong><strong>taskbar</strong> = yes | no (tylko WIN32)</strong></dt>
<dd>
<p>włącz ikonkę w prawym dolnym rogu ekranu</p>
<p>domyślnie: yes (włącz)</p>
</dd>
</dl>
<p>
</p>
<h2><a name="opcje_us__ug">OPCJE USŁUG</a></h2>
<p>Każda sekcja konfiguracji usługi zaczyna się jej nazwą ujętą w nawias
kwadratowy. Nazwa usługi używana jest do kontroli dostępu przez
bibliotekę libwrap (TCP wrappers) oraz pozwala rozróżnić poszczególne
usługi w logach.</p>
<p>Jeżeli <strong>stunnel</strong> ma zostać użyty w trybie <em>inetd</em>, gdzie za odebranie
połączenia odpowiada osobny program (zwykle <em>inetd</em>, <em>xinetd</em>
lub <em>tcpserver</em>), należy przeczytać sekcję <em>TRYB INETD</em> poniżej.</p>
<dl>
<dt><strong><a name="accept_adres_port" class="item"><strong>accept</strong> = [adres:]port</a></strong></dt>
<dd>
<p>nasłuchuje na połączenia na podanym adresie i porcie</p>
2017-03-28 10:18:03 +02:00
<p>Jeżeli nie został podany adres, <strong>stunnel</strong> domyślnie nasłuchuje
2017-03-28 09:58:13 +02:00
na wszystkich adresach IPv4 lokalnych interfejsów.</p>
<p>Aby nasłuchiwać na wszystkich adresach IPv6 należy użyć:</p>
<pre>
accept = :::port</pre>
</dd>
<dt><strong><a name="capath_katalog_ca" class="item"><strong>CApath</strong> = katalog_CA</a></strong></dt>
<dd>
<p>katalog Centrum Certyfikacji</p>
<p>Opcja określa katalog, w którym <strong>stunnel</strong> będzie szukał certyfikatów,
jeżeli użyta została opcja <em>verify</em>. Pliki z certyfikatami muszą
posiadać specjalne nazwy XXXXXXXX.0, gdzie XXXXXXXX jest skrótem
kryptograficznym reprezentacji DER nazwy podmiotu certyfikatu.</p>
2017-03-28 10:18:03 +02:00
<p>Funkcja skrótu została zmieniona w <strong>OpenSSL 1.0.0</strong>.
Należy wykonać c_rehash przy zmianie <strong>OpenSSL 0.x.x</strong> na <strong>1.x.x</strong>.</p>
2017-03-28 09:58:13 +02:00
<p>Jeżeli zdefiniowano katalog <em>chroot</em>, to ścieżka do <em>CApath</em> jest określona
względem tego katalogu.</p>
</dd>
<dt><strong><a name="cafile_plik_ca" class="item"><strong>CAfile</strong> = plik_CA</a></strong></dt>
<dd>
<p>plik Centrum Certyfikacji</p>
<p>Opcja pozwala określić położenie pliku zawierającego certyfikaty używane
przez opcję <em>verify</em>.</p>
</dd>
<dt><strong><a name="cert_plik_pem" class="item"><strong>cert</strong> = plik_pem</a></strong></dt>
<dd>
<p>plik z łańcuchem certyfikatów</p>
<p>Opcja określa położenie pliku zawierającego certyfikaty używane przez
program <strong>stunnel</strong> do uwierzytelnienia się przed drugą stroną połączenia.
Certyfikat jest konieczny, aby używać programu w trybie serwera.
W trybie klienta certyfikat jest opcjonalny.</p>
</dd>
<dt><strong><a name="ciphers_lista_szyfr_w" class="item"><strong>ciphers</strong> = lista_szyfrów</a></strong></dt>
<dd>
<p>lista dozwolonych szyfrów SSL</p>
<p>Parametrem tej opcji jest lista szyfrów, które będą użyte przy
otwieraniu nowych połączeń SSL, np.: DES-CBC3-SHA:IDEA-CBC-MD5</p>
</dd>
<dt><strong><a name="client_yes_no" class="item"><strong>client</strong> = yes | no</a></strong></dt>
<dd>
<p>tryb kliencki (zdalna usługa używa SSL)</p>
<p>domyślnie: no (tryb serwerowy)</p>
</dd>
<dt><strong><a name="connect_adres_port" class="item"><strong>connect</strong> = [adres:]port</a></strong></dt>
<dd>
<p>połącz się ze zdalnym serwerem na podany port</p>
2017-03-28 10:18:03 +02:00
<p>Jeżeli nie został podany adres, <strong>stunnel</strong> domyślnie łączy się
2017-03-28 09:58:13 +02:00
z lokalnym serwerem.</p>
<p>Komenda może byc użyta wielokrotnie w pojedynczej sekcji
celem zapewnienia wysokiej niezawodności lub rozłożenia
ruchu pomiędzy wiele serwerów.</p>
</dd>
<dt><strong><a name="crlpath_katalog_crl" class="item"><strong>CRLpath</strong> = katalog_CRL</a></strong></dt>
<dd>
<p>katalog List Odwołanych Certyfikatów (CRL)</p>
<p>Opcja określa katalog, w którym <strong>stunnel</strong> będzie szukał list CRL,
jeżeli użyta została opcja <em>verify</em>. Pliki z listami CRL muszą
posiadać specjalne nazwy XXXXXXXX.r0, gdzie XXXXXXXX jest skrótem
listy CRL.</p>
2017-03-28 10:18:03 +02:00
<p>Funkcja skrótu została zmieniona <strong>OpenSSL 1.0.0</strong>.
Należy wykonać c_rehash przy zmianie <strong>OpenSSL 0.x.x</strong> na <strong>1.x.x</strong>.</p>
2017-03-28 09:58:13 +02:00
<p>Jeżeli zdefiniowano katalog <em>chroot</em>, to ścieżka do <em>CRLpath</em> jest określona
względem tego katalogu.</p>
</dd>
<dt><strong><a name="crlfile_plik_crl" class="item"><strong>CRLfile</strong> = plik_CRL</a></strong></dt>
<dd>
<p>plik List Odwołanych Certyfikatów (CRL)</p>
<p>Opcja pozwala określić położenie pliku zawierającego listy CRL używane
przez opcję <em>verify</em>.</p>
</dd>
<dt><strong><a name="curve_nid" class="item"><strong>curve</strong> = nid</a></strong></dt>
<dd>
<p>krzywa dla ECDH</p>
<p>Listę dostępnych krzywych można uzyskać poleceniem:</p>
<pre>
openssl ecparam -list_curves</pre>
<p>domyślnie: prime256v1</p>
</dd>
<dt><strong><a name="delay_yes_no" class="item"><strong>delay</strong> = yes | no</a></strong></dt>
<dd>
<p>opóźnij rozwinięcie adresu DNS podanego w opcji <em>connect</em></p>
<p>Opcja jest przydatna przy dynamicznym DNS, albo gdy usługa DNS nie jest
2017-03-28 10:18:03 +02:00
dostępna przy starcie programu <strong>stunnel</strong> (klient VPN, połączenie wdzwaniane).</p>
2017-03-28 09:58:13 +02:00
</dd>
<dt><strong><a name="enginenum_numer_urz_dzenia" class="item"><strong>engineNum</strong> = &lt;numer urządzenia&gt;</a></strong></dt>
<dd>
<p>wybierz urządzenie do odczyta klucza prywatnego</p>
<p>Urządzenia są numerowane od 1 w górę.</p>
</dd>
<dt><strong><a name="exec_cie_ka_do_programu" class="item"><strong>exec</strong> = ścieżka_do_programu</a></strong></dt>
<dd>
<p>wykonaj lokalny program przystosowany do pracy z superdemonem inetd</p>
<p>Jeżeli zdefiniowano katalog <em>chroot</em>, to ścieżka do <em>exec</em> jest określona
względem tego katalogu.</p>
</dd>
<dt><strong><a name="execargs_0_1_2" class="item"><strong>execargs</strong> = $0 $1 $2 ...</a></strong></dt>
<dd>
<p>argumenty do opcji <em>exec</em> włącznie z nazwą programu ($0)</p>
<p>Cytowanie nie jest wspierane w obecnej wersji programu.
Argumenty są rozdzielone dowolną liczbą białych znaków.</p>
</dd>
<dt><strong><a name="failover_rr_prio" class="item"><strong>failover</strong> = rr | prio</a></strong></dt>
<dd>
<p>Strategia wybierania serwerów wyspecyfikowanych parametrami &quot;connect&quot;.</p>
<pre>
rr (round robin) - sprawiedliwe rozłożenie obciążenia
prio (priority) - użyj kolejności opcji w pliku konfiguracyjnym</pre>
<p>domyślnie: rr</p>
</dd>
<dt><strong><a name="ident_nazwa_u_ytkownika" class="item"><strong>ident</strong> = nazwa_użytkownika</a></strong></dt>
<dd>
<p>weryfikuj nazwę zdalnego użytkownika korzystając z protokołu IDENT (<a href="http://www.ietf.org/rfc/rfc1413.txt" class="rfc">RFC 1413</a>)</p>
</dd>
<dt><strong><a name="key_plik_klucza" class="item"><strong>key</strong> = plik_klucza</a></strong></dt>
<dd>
<p>klucz prywatny do certyfikatu podanego w opcji <em>cert</em></p>
<p>Klucz prywatny jest potrzebny do uwierzytelnienia właściciela certyfikatu.
Ponieważ powinien on być zachowany w tajemnicy, prawa do jego odczytu
powinien mieć wyłącznie właściciel pliku. W systemie Unix można to osiągnąć
komendą:</p>
<pre>
chmod 600 keyfile</pre>
<p>domyślnie: wartość opcji <em>cert</em></p>
</dd>
<dt><strong><a name="libwrap_yes_no" class="item"><strong>libwrap</strong> = yes | no</a></strong></dt>
<dd>
<p>włącz lub wyłącz korzystanie z /etc/hosts.allow i /etc/hosts.deny.</p>
<p>domyślnie: yes</p>
</dd>
<dt><strong><a name="local_serwer" class="item"><strong>local</strong> = serwer</a></strong></dt>
<dd>
<p>IP źródła do nawiązywania zdalnych połączeń</p>
<p>Domyślnie używane jest IP najbardziej zewnętrznego interfejsu w stronę
serwera, do którego nawiązywane jest połączenie.</p>
</dd>
2017-03-28 10:18:03 +02:00
<dt><strong><a name="wzorzec_nazwy_serwera" class="item"><strong>sni</strong> = nazwa_usługi:wzorzec_nazwy_serwera (tryb serwera)</a></strong></dt>
2017-03-28 09:58:13 +02:00
<dd>
<p>Użyj usługi jako podrzędnej (virtualnego serwera) dla rozszerzenia TLS Server
Name Indication (<a href="http://www.ietf.org/rfc/rfc3546.txt" class="rfc">RFC 3546</a>).</p>
<p><em>nazwa_usługi</em> wskazuje usługę nadrzędną, która odbiera połączenia od klientów
2017-03-28 10:18:03 +02:00
przy pomocy opcji <em>accept</em>. <em>wzorzec_nazwy_serwera</em> wskazuje nazwę serwera
wirtualnego. Wzorzec może zaczynać się znakiem '*', np. '*.example.com&quot;.
Z pojedyńczą usługą nadrzędną powiązane jest zwykle wiele usług podrzędnych.
Opcja <em>sni</em> może być rownież użyta wielokrotnie w ramach jednej usługi
podrzędnej.</p>
2017-03-28 09:58:13 +02:00
<p>Zarówno usługa nadrzędna jak i podrzędna nie może być skonfigurowana w trybie
2017-03-28 10:18:03 +02:00
klienckim.</p>
<p>Opcja <em>connect</em> usługi podrzędnej jest ignorowana w połączeniu z opcją
<em>protocol</em>, gdyż połączenie do zdalnego serwera jest w tym wypadku nawiązywane
przed negocjacją TLS.</p>
<p>Uwierzytelnienie przy pomocy biblioteki libwrap jest realizowane dwukrotnie:
najpierw dla usługi nadrzędnej po odebraniu połączenia TCP, a następnie dla
usługi podrzędnej podczas negocjacji TLS.</p>
<p>Opcja <em>sni</em> jest dostępna począwszy od <strong>OpenSSL 1.0.0</strong>.</p>
2017-03-28 09:58:13 +02:00
</dd>
2017-03-28 10:18:03 +02:00
<dt><strong><a name="nazwa_serwera" class="item"><strong>sni</strong> = nazwa_serwera (tryb klienta)</a></strong></dt>
2017-03-28 09:58:13 +02:00
<dd>
<p>Użyj parametru jako wartości rozszerzenia TLS Server Name Indication
(<a href="http://www.ietf.org/rfc/rfc3546.txt" class="rfc">RFC 3546</a>).</p>
2017-03-28 10:18:03 +02:00
<p>Opcja <em>sni</em> jest dostępna począwszy od <strong>OpenSSL 1.0.0</strong>.</p>
2017-03-28 09:58:13 +02:00
</dd>
<dt><strong><a name="ocsp_url" class="item"><strong>OCSP</strong> = URL</a></strong></dt>
<dd>
<p>serwer OCSP do weryfikacji certyfikatów</p>
</dd>
<dt><strong><a name="ocspflag_flaga" class="item"><strong>OCSPflag</strong> = flaga</a></strong></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ć kilka flag należy użyć <em>OCSPflag</em> wielokrotnie.</p>
</dd>
<dt><strong><a name="options_opcje_ssl" class="item"><strong>options</strong> = opcje_SSL</a></strong></dt>
<dd>
2017-03-28 10:18:03 +02:00
<p>opcje biblioteki <strong>OpenSSL</strong></p>
2017-03-28 09:58:13 +02:00
<p>Parametrem jest nazwa opcji zgodnie z opisem w <em>SSL_CTX_set_options(3ssl)</em>,
ale bez przedrostka <em>SSL_OP_</em>.
Aby wyspecyfikować kilka opcji należy użyć <em>options</em> wielokrotnie.</p>
<p>Na przykład dla zachowania kompatybilności z błędami implementacji SSL
w programie Eudora można użyć opcji:</p>
<pre>
options = DONT_INSERT_EMPTY_FRAGMENTS</pre>
</dd>
<dt><strong><a name="protocol_protok" class="item"><strong>protocol</strong> = protokół</a></strong></dt>
<dd>
2017-03-28 10:18:03 +02:00
<p>negocjuj SSL podanym protokołem aplikacyjnym</p>
<p>Opcja ta włącza wstępną negocjację szyfrowania SSL dla wybranego protokołu
aplikacyjnego.
Opcji <em>protocol</em> nie należy używać z szyfrowaniem SSL na osobnym porcie.</p>
2017-03-28 09:58:13 +02:00
<p>Aktualnie wspierane protokoły:</p>
<dl>
<dt><strong><a name="cifs" class="item"><em>cifs</em></a></strong></dt>
<dd>
<p>Unieudokumentowane rozszerzenie protokołu CIFS wspierane przez serwer Samba.
Wsparcie dla tego rozrzeczenia zostało zarzucone w wersji 3.0.0 serwera Samba.</p>
</dd>
<dt><strong><a name="connect" class="item"><em>connect</em></a></strong></dt>
<dd>
<p>Negocjacja <a href="http://www.ietf.org/rfc/rfc2817.txt" class="rfc">RFC 2817</a> - <em>Upgrading to TLS Within HTTP/1.1</em>, rozdział 5.2 - <em>Requesting a Tunnel with CONNECT</em></p>
<p>Ten protokół jest wspierany wyłącznie w trybie klienckim.</p>
</dd>
<dt><strong><a name="imap" class="item"><em>imap</em></a></strong></dt>
<dd>
<p>Negocjacja <a href="http://www.ietf.org/rfc/rfc2595.txt" class="rfc">RFC 2595</a> - <em>Using TLS with IMAP, POP3 and ACAP</em></p>
</dd>
<dt><strong><a name="nntp" class="item"><em>nntp</em></a></strong></dt>
<dd>
<p>Negocjacja <a href="http://www.ietf.org/rfc/rfc4642.txt" class="rfc">RFC 4642</a> - <em>Using Transport Layer Security (TLS) with Network News Transfer Protocol (NNTP)</em></p>
<p>Ten protokół jest wspierany wyłącznie w trybie klienckim.</p>
</dd>
<dt><strong><a name="pgsql" class="item"><em>pgsql</em></a></strong></dt>
<dd>
<p>Negocjacja <a href="http://www.postgresql.org/docs/8.3/static/protocol-flow.html#AEN73982">http://www.postgresql.org/docs/8.3/static/protocol-flow.html#AEN73982</a></p>
</dd>
<dt><strong><a name="pop3" class="item"><em>pop3</em></a></strong></dt>
<dd>
<p>Negocjacja <a href="http://www.ietf.org/rfc/rfc2449.txt" class="rfc">RFC 2449</a> - <em>POP3 Extension Mechanism</em></p>
</dd>
<dt><strong><a name="proxy" class="item"><em>proxy</em></a></strong></dt>
<dd>
<p>Przekazywanie adresu IP haproxy <a href="http://haproxy.1wt.eu/download/1.5/doc/proxy-protocol.txt">http://haproxy.1wt.eu/download/1.5/doc/proxy-protocol.txt</a></p>
</dd>
<dt><strong><a name="smtp" class="item"><em>smtp</em></a></strong></dt>
<dd>
<p>Negocjacja <a href="http://www.ietf.org/rfc/rfc2487.txt" class="rfc">RFC 2487</a> - <em>SMTP Service Extension for Secure SMTP over TLS</em></p>
</dd>
</dl>
</dd>
<dt><strong><a name="protocolauthentication_uwierzytelnienie" class="item"><strong>protocolAuthentication</strong> = uwierzytelnienie</a></strong></dt>
<dd>
<p>rodzaj uwierzytelnienia do negocjacji protokołu</p>
<p>aktualnie wspierane: basic, NTLM</p>
<p>Obecnie typ uwierzytelnienia ma zastosowanie wyłącznie w protokole 'connect'.</p>
<p>domyślnie: basic</p>
</dd>
<dt><strong><a name="protocolhost_adres_port" class="item"><strong>protocolHost</strong> = adres:port</a></strong></dt>
<dd>
<p>adres docelowy do negocjacji protokołu</p>
2017-03-28 10:18:03 +02:00
<p><em>protocolHost</em> określa docelowy serwer SSL, do którego połączyć ma się proxy.
Nie jest to adres serwera proxy, do którego połączenie zestawia <strong>stunnel</strong>.
Adres serwera proxy powinien być określony przy pomocy opcji 'connect'.</p>
<p>W obecnej wersji adres docelowy protokołu ma zastosowanie wyłącznie w protokole
'connect'.</p>
2017-03-28 09:58:13 +02:00
</dd>
<dt><strong><a name="protocolpassword_has_o" class="item"><strong>protocolPassword</strong> = hasło</a></strong></dt>
<dd>
<p>hasło do negocjacji protokołu</p>
</dd>
<dt><strong><a name="protocolusername_u_ytkownik" class="item"><strong>protocolUsername</strong> = użytkownik</a></strong></dt>
<dd>
<p>nazwa użytkownika do negocjacji protokołu</p>
</dd>
<dt><strong><strong>pty</strong> = yes | no (tylko Unix)</strong></dt>
<dd>
<p>alokuj pseudoterminal dla programu uruchamianego w opcji 'exec'</p>
</dd>
2017-03-28 10:18:03 +02:00
<dt><strong><a name="renegotiation_yes_no" class="item"><strong>renegotiation</strong> = yes | no</a></strong></dt>
<dd>
<p>pozwalaj na renegocjację SSL</p>
<p>Wśród zastosowań renegocjacji SSL są niektóre scenariusze uwierzytelnienia,
oraz renegocjacja kluczy dla długotrwałych połączeń.</p>
<p>Z drugiej strony własność na może ułatwić trywialny atak DoS poprzez
wygenerowanie obciążenia procesora:</p>
<p><a href="http://vincent.bernat.im/en/blog/2011-ssl-dos-mitigation.html">http://vincent.bernat.im/en/blog/2011-ssl-dos-mitigation.html</a></p>
<p>Warto zauważyć, że zablokowanie renegocjacji SSL nie zebezpiecza w pełni
przed opisanym problemem.</p>
<p>domyślnie: yes (o ile wspierane przez <strong>OpenSSL</strong>)</p>
</dd>
<dt><strong><a name="reset_yes_no" class="item"><strong>reset</strong> = yes | no</a></strong></dt>
<dd>
<p>sygnalizuj wystąpienie błędu przy pomocy flagi TCP RST</p>
<p>Ta opcja nie jest wspierana na niektórych platformach.</p>
<p>domyślnie: yes</p>
</dd>
<dt><strong><a name="retry_yes_no" class="item"><strong>retry</strong> = yes | no</a></strong></dt>
2017-03-28 09:58:13 +02:00
<dd>
<p>połącz ponownie sekcję connect+exec po rozłączeniu</p>
<p>domyślnie: no</p>
</dd>
2017-03-28 10:18:03 +02:00
<dt><strong><a name="sessioncachesize_rozmiar" class="item"><strong>sessionCacheSize</strong> = rozmiar</a></strong></dt>
<dd>
<p>rozmiar pamięci podręcznej sesji SSL</p>
<p>Parametr określa maksymalną liczbę pozycji wewnętrznej pamięci podręcznej
sesji.</p>
<p>Wartość 0 oznacza brak ograniczenia rozmiaru. Nie jest to zalecane dla
systemów produkcyjnych z uwagi na ryzyko ataku DoS przez wyczerpanie pamięci
RAM.</p>
</dd>
<dt><strong><a name="sessioncachetimeout_czas" class="item"><strong>sessionCacheTimeout</strong> = czas</a></strong></dt>
2017-03-28 09:58:13 +02:00
<dd>
2017-03-28 10:18:03 +02:00
<p>przeterminowanie pamięci podręcznej sesji SSL</p>
<p>Parametr określa czas w sekundach, po którym sesja SSL zostanie usunięta z
pamięci podręcznej.</p>
2017-03-28 09:58:13 +02:00
</dd>
<dt><strong><a name="sessiond_adres_port" class="item"><strong>sessiond</strong> = adres:port</a></strong></dt>
<dd>
<p>adres sessiond - servera cache sesji SSL</p>
</dd>
<dt><strong><a name="sslversion_wersja" class="item"><strong>sslVersion</strong> = wersja</a></strong></dt>
<dd>
<p>wersja protokołu SSL</p>
2017-03-28 10:18:03 +02:00
<p>Dozwolone opcje: all, SSLv2, SSLv3, TLSv1, TLSv1.1, TLSv1.2</p>
2017-03-28 09:58:13 +02:00
</dd>
<dt><strong><a name="w" class="item"><strong>stack</strong> = liczba_bajtów (z wyjątkiem modelu FORK)</a></strong></dt>
<dd>
<p>rozmiar stosu procesora wątku</p>
</dd>
<dt><strong><a name="timeoutbusy_liczba_sekund" class="item"><strong>TIMEOUTbusy</strong> = liczba_sekund</a></strong></dt>
<dd>
<p>czas oczekiwania na spodziewane dane</p>
</dd>
<dt><strong><a name="timeoutclose_liczba_sekund" class="item"><strong>TIMEOUTclose</strong> = liczba_sekund</a></strong></dt>
<dd>
<p>czas oczekiwania na close_notify (ustaw na 0, jeżeli klientem jest MSIE)</p>
</dd>
<dt><strong><a name="timeoutconnect_liczba_sekund" class="item"><strong>TIMEOUTconnect</strong> = liczba_sekund</a></strong></dt>
<dd>
<p>czas oczekiwania na nawiązanie połączenia</p>
</dd>
<dt><strong><a name="timeoutidle_liczba_sekund" class="item"><strong>TIMEOUTidle</strong> = liczba_sekund</a></strong></dt>
<dd>
<p>maksymalny czas utrzymywania bezczynnego połączenia</p>
</dd>
<dt><strong><a name="both" class="item"><strong>transparent</strong> = none | source | destination | both (tylko Unix)</a></strong></dt>
<dd>
<p>tryb przezroczystego proxy na wspieranych platformach</p>
<p>Wspierane opcje:</p>
<dl>
<dt><strong><a name="none" class="item"><strong>none</strong></a></strong></dt>
<dd>
<p>Zablokuj wsparcie dla przezroczystago proxy. Jest to wartość domyślna.</p>
</dd>
<dt><strong><a name="source" class="item"><strong>source</strong></a></strong></dt>
<dd>
<p>Przepisz adres, aby nawiązywane połączenie wydawało się pochodzić
2017-03-28 10:18:03 +02:00
bezpośrednio od klienta, a nie od programu <strong>stunnel</strong>.</p>
2017-03-28 09:58:13 +02:00
<p>Opcja jest aktualnie obsługiwana w:</p>
<dl>
<dt><strong><a name="zdalnym" class="item">Trybie zdalnym (opcja <em>connect</em>) w systemie <em>Linux &gt;=2.6.28</em></a></strong></dt>
<dd>
<p>Konfiguracja wymaga następujących ustawień iptables oraz routingu
(na przykład w pliku /etc/rc.local lub analogicznym):</p>
<pre>
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</pre>
<p>Konfiguracja ta wymaga, aby <strong>stunnel</strong> był wykonywany jako root i bez opcji <em>setuid</em>.</p>
</dd>
<dt><strong>Trybie zdalnym (opcja <em>connect</em>) w systemie <em>Linux 2.2.x</em></strong></dt>
<dd>
<p>Konfiguracja ta wymaga skompilowania jądra z opcją <em>transparent proxy</em>.
Docelowa usługa musi być umieszczona na osobnej maszynie, do której routing
2017-03-28 10:18:03 +02:00
kierowany jest poprzez serwer <strong>stunnela</strong>.</p>
2017-03-28 09:58:13 +02:00
<p>Dodatkowo <strong>stunnel</strong> powinien być wykonywany jako root i bez opcji <em>setuid</em>.</p>
</dd>
<dt><strong>Trybie zdalnym (opcja <em>connect</em>) w systemie <em>FreeBSD &gt;=8.0</em></strong></dt>
<dd>
<p>Konfiguracja ta wymaga skonfigurowania firewalla i routingu.
<strong>stunnel</strong> musi być wykonywany jako root i bez opcji <em>setuid</em>.</p>
</dd>
<dt><strong><a name="lokalnym" class="item">Trybie lokalnym (opcja <em>exec</em>)</a></strong></dt>
<dd>
<p>Konfiguracja ta jest realizowana przy pomocy biblioteki <em>libstunnel.so</em>.
Do załadowania biblioteki wykorzystywana jest zmienna środowiskowa _RLD_LIST na
platformie Tru64 lub LD_PRELOAD na innych platformach.</p>
</dd>
</dl>
</dd>
<dt><strong><a name="destination" class="item"><em>destination</em></a></strong></dt>
<dd>
<p>Oryginalny adres docelowy jest używany zamiast opcji <em>connect</em>.</p>
<p>Przykładowana konfiguracja przezroczystego adresu docelowego:</p>
<pre>
[transparent]
client=yes
accept=&lt;port_stunnela&gt;
transparent=destination</pre>
<p>Konfiguracja wymaga następujących ustawień iptables
(na przykład w pliku /etc/rc.local lub analogicznym):</p>
<pre>
/sbin/iptables -I INPUT -i eth0 -p tcp --dport &lt;port_stunnela&gt; -j ACCEPT
/sbin/iptables -t nat -I PREROUTING -i eth0 -p tcp --dport &lt;port_przekierowany&gt; -j DNAT --to-destination &lt;lokalne_ip&gt;:&lt;port_stunnela&gt;</pre>
<p>Przezroczysty adres docelowy jest aktualnie wspierany wyłącznie w systemie Linux.</p>
</dd>
<dt><strong><em>both</em></strong></dt>
<dd>
<p>Użyj przezroczystego proxy zarówno dla adresu źródłowego jak i docelowego.</p>
</dd>
</dl>
<p>Dla zapewnienia kompatybilności z wcześniejszymim wersjami wspierane są dwie
dodatkowe opcje:</p>
<dl>
<dt><strong><a name="yes" class="item"><em>yes</em></a></strong></dt>
<dd>
<p>Opcja została przemianowana na <em>source</em>.</p>
</dd>
<dt><strong><em>no</em></strong></dt>
<dd>
<p>Opcja została przemianowana na <em>none</em>.</p>
</dd>
</dl>
</dd>
<dt><strong><a name="verify_poziom" class="item"><strong>verify</strong> = poziom</a></strong></dt>
<dd>
<p>weryfikuj certyfikat drugiej strony połączenia</p>
<dl>
2017-03-28 10:18:03 +02:00
<dt><strong><a name="poziom_0" class="item"><em>poziom 0</em></a></strong></dt>
2017-03-28 09:58:13 +02:00
2017-03-28 10:18:03 +02:00
<dd>
<p>zarządaj certyfikatu i zignoruj go</p>
</dd>
<dt><strong><a name="poziom_1" class="item"><em>poziom 1</em></a></strong></dt>
2017-03-28 09:58:13 +02:00
2017-03-28 10:18:03 +02:00
<dd>
<p>weryfikuj, jeżeli został przedstawiony</p>
</dd>
<dt><strong><a name="poziom_2" class="item"><em>poziom 2</em></a></strong></dt>
2017-03-28 09:58:13 +02:00
2017-03-28 10:18:03 +02:00
<dd>
<p>weryfikuj z zainstalowanym certyfikatem Centrum Certyfikacji</p>
</dd>
<dt><strong><a name="poziom_3" class="item"><em>poziom 3</em></a></strong></dt>
2017-03-28 09:58:13 +02:00
2017-03-28 10:18:03 +02:00
<dd>
<p>weryfikuj z lokalnie zainstalowanym certyfikatem drugiej strony</p>
</dd>
<dt><strong><a name="poziom_4" class="item"><em>poziom 4</em></a></strong></dt>
2017-03-28 09:58:13 +02:00
2017-03-28 10:18:03 +02:00
<dd>
<p>weryfikuj z certyfikatem drugiej strony ignorując łańcuch CA</p>
</dd>
<dt><strong><a name="domy_lnie" class="item"><em>domyślnie</em></a></strong></dt>
2017-03-28 09:58:13 +02:00
2017-03-28 10:18:03 +02:00
<dd>
<p>nie weryfikuj</p>
</dd>
2017-03-28 09:58:13 +02:00
</dl>
</dd>
</dl>
<p>
</p>
<hr />
<h1><a name="zwracana_warto____">ZWRACANA WARTOŚĆ</a></h1>
<p><strong>stunnel</strong> zwraca zero w przypadku sukcesu, lub wartość niezerową
w przypadku błędu.</p>
<p>
</p>
<hr />
<h1><a name="signa__y">SIGNAŁY</a></h1>
<p>Następujące sygnały mogą być użyte do sterowania programem w systemie Unix:</p>
<dl>
<dt><strong><a name="sighup" class="item">SIGHUP</a></strong></dt>
<dd>
<p>Załaduj ponownie plik konfiguracyjny.</p>
<p>Niektóre globalne opcje nie będą przeładowane:</p>
<ul>
2017-03-28 10:18:03 +02:00
<li>
<p>chroot</p>
2017-03-28 09:58:13 +02:00
</li>
2017-03-28 10:18:03 +02:00
<li>
<p>foreground</p>
2017-03-28 09:58:13 +02:00
</li>
2017-03-28 10:18:03 +02:00
<li>
<p>pid</p>
2017-03-28 09:58:13 +02:00
</li>
2017-03-28 10:18:03 +02:00
<li>
<p>setgid</p>
2017-03-28 09:58:13 +02:00
</li>
2017-03-28 10:18:03 +02:00
<li>
<p>setuid</p>
2017-03-28 09:58:13 +02:00
</li>
</ul>
2017-03-28 10:18:03 +02:00
<p>Jeżeli wykorzystywana jest opcja 'setuid' <strong>stunnel</strong> nie będzie mógł załadować
2017-03-28 09:58:13 +02:00
ponownie konfiguracji wykorzystującej uprzywilejowane (&lt;1024) porty.</p>
2017-03-28 10:18:03 +02:00
<p>Jeżeli wykorzystywana jest opcja 'chroot' <strong>stunnel</strong> będzie szukał wszystkich
2017-03-28 09:58:13 +02:00
potrzebnych plików (łącznie z plikiem konfiguracyjnym, certyfikatami, logiem i
plikiem pid) wewnątrz katalogu wskazanego przez 'chroot'.</p>
</dd>
<dt><strong><a name="sigusr1" class="item">SIGUSR1</a></strong></dt>
<dd>
<p>Zamknij i otwórz ponownie log.
2017-03-28 10:18:03 +02:00
Funkcja ta może zostać użyta w skrypcie rotującym log programu <strong>stunnel</strong>.</p>
2017-03-28 09:58:13 +02:00
</dd>
<dt><strong><a name="sigterm_sigquit_sigint" class="item">SIGTERM, SIGQUIT, SIGINT</a></strong></dt>
<dd>
<p>Zakończ działanie programu.</p>
</dd>
</dl>
<p>Skutek wysłania innych sygnałów jest niezdefiniowany.</p>
<p>
</p>
<hr />
<h1><a name="przyk__ady">PRZYKŁADY</a></h1>
<p>Szyfrowanie połączeń do lokalnego serwera <em>imapd</em> można użyć:</p>
<pre>
[imapd]
accept = 993
exec = /usr/sbin/imapd
execargs = imapd</pre>
<p>albo w trybie zdalnym:</p>
<pre>
[imapd]
accept = 993
connect = 143</pre>
<p>W połączeniu z programem <em>pppd</em> <strong>stunnel</strong> pozwala zestawić prosty VPN.
Po stronie serwera nasłuchującego na porcie 2020 jego konfiguracja
może wyglądać następująco:</p>
<pre>
[vpn]
accept = 2020
exec = /usr/sbin/pppd
execargs = pppd local
pty = yes</pre>
<p>Poniższy plik konfiguracyjny może być wykorzystany do uruchomienia
programu <strong>stunnel</strong> w trybie <em>inetd</em>. Warto zauważyć, że w pliku
konfiguracyjnym nie ma sekcji <em>[nazwa_usługi]</em>.</p>
<pre>
exec = /usr/sbin/imapd
execargs = imapd</pre>
<p>
</p>
<hr />
<h1><a name="notki">NOTKI</a></h1>
<p>
</p>
<h2><a name="ograniczenia">OGRANICZENIA</a></h2>
2017-03-28 10:18:03 +02:00
<p><strong>stunnel</strong> nie może być używany do szyfrowania protokołu <em>FTP</em>,
2017-03-28 09:58:13 +02:00
ponieważ do przesyłania poszczególnych plików używa on dodatkowych
połączeń otwieranych na portach o dynamicznie przydzielanych numerach.
Istnieją jednak specjalne wersje klientów i serwerów FTP pozwalające
na szyfrowanie przesyłanych danych przy pomocy protokołu <em>SSL</em>.</p>
<p>
</p>
<h2><a name="tryb_inetd__tylko_unix_">TRYB INETD (tylko Unix)</a></h2>
<p>W większości zastosowań <strong>stunnel</strong> samodzielnie nasłuchuje na porcie
podanym w pliku konfiguracyjnym i tworzy połączenie z innym portem
podanym w opcji <em>connect</em> lub nowym programem podanym w opcji <em>exec</em>.
Niektórzy wolą jednak wykorzystywać oddzielny program, który odbiera
połączenia, po czym uruchamia program <strong>stunnel</strong>. Przykładami takich
programów są inetd, xinetd i tcpserver.</p>
<p>Przykładowa linia pliku /etc/inetd.conf może wyglądać tak:</p>
<pre>
imaps stream tcp nowait root /usr/bin/stunnel
stunnel /etc/stunnel/imaps.conf</pre>
<p>Ponieważ w takich przypadkach połączenie na zdefiniowanym porcie
(tutaj <em>imaps</em>) nawiązuje osobny program (tutaj <em>inetd</em>), <strong>stunnel</strong>
nie może używać opcji <em>accept</em>. W pliku konfiguracyjnym nie może
być również zdefiniowana żadna usługa (<em>[nazwa_usługi]</em>), ponieważ
konfiguracja taka pozwala na nawiązanie tylko jednego połączenia.
Wszystkie <em>OPCJE USŁUG</em> powinny być umieszczone razem z opcjami
globalnymi. Przykład takiej konfiguracji znajduje się w sekcji
<em>PRZYKŁADY</em>.</p>
<p>
</p>
<h2><a name="certyfikaty">CERTYFIKATY</a></h2>
<p>Protokół SSL wymaga, aby każdy serwer przedstawiał się nawiązującemu
połączenie klientowi prawidłowym certyfikatem X.509.
Potwierdzenie tożsamości serwera polega na wykazaniu, że posiada on
odpowiadający certyfikatowi klucz prywatny.
2017-03-28 10:18:03 +02:00
Najprostszą metodą uzyskania certyfikatu jest wygenerowanie go przy pomocy
wolnego pakietu <strong>OpenSSL</strong>. Więcej informacji na temat generowania
certyfikatów można znaleźć na umieszczonych poniżej stronach.</p>
2017-03-28 09:58:13 +02:00
<p>Istotną kwestią jest kolejność zawartości pliku <em>.pem</em>.
W pierwszej kolejności powinien on zawierać klucz prywatny,
a dopiero za nim podpisany certyfikat (nie żądanie certyfikatu).
Po certyfikacie i kluczu prywatnym powinny znajdować się puste linie.
Jeżeli przed certyfikatem znajdują się dodatkowe informacje tekstowe,
to powinny one zostać usunięte. Otrzymany plik powinien mieć
następującą postać:</p>
<pre>
-----BEGIN RSA PRIVATE KEY-----
[zakodowany klucz]
-----END RSA PRIVATE KEY-----
[pusta linia]
-----BEGIN CERTIFICATE-----
[zakodowany certyfikat]
-----END CERTIFICATE-----
[pusta linia]</pre>
<p>
</p>
<h2><a name="losowo____">LOSOWOŚĆ</a></h2>
<p><strong>stunnel</strong> potrzebuje zainicjować PRNG (generator liczb pseudolosowych),
gdyż protokół SSL wymaga do bezpieczeństwa kryptograficznego źródła
dobrej losowości. Następujące źródła są kolejno odczytywane aż do
uzyskania wystarczającej ilości entropii:</p>
<ul>
2017-03-28 10:18:03 +02:00
<li>
<p>Zawartość pliku podanego w opcji <em>RNDfile</em>.</p>
2017-03-28 09:58:13 +02:00
</li>
2017-03-28 10:18:03 +02:00
<li>
<p>Zawartość pliku o nazwie określonej przez zmienną środowiskową
RANDFILE, o ile jest ona ustawiona.</p>
2017-03-28 09:58:13 +02:00
</li>
2017-03-28 10:18:03 +02:00
<li>
<p>Plik .rnd umieszczony w katalogu domowym użytkownika,
jeżeli zmienna RANDFILE nie jest ustawiona.</p>
2017-03-28 09:58:13 +02:00
</li>
2017-03-28 10:18:03 +02:00
<li>
<p>Plik podany w opcji '--with-random' w czasie konfiguracji programu.</p>
2017-03-28 09:58:13 +02:00
</li>
2017-03-28 10:18:03 +02:00
<li>
<p>Zawartość ekranu w systemie Windows.</p>
2017-03-28 09:58:13 +02:00
</li>
2017-03-28 10:18:03 +02:00
<li>
<p>Gniazdo egd, jeżeli użyta została opcja <em>EGD</em>.</p>
2017-03-28 09:58:13 +02:00
</li>
2017-03-28 10:18:03 +02:00
<li>
<p>Gniazdo egd podane w opcji '--with-egd-socket' w czasie konfiguracji
programu.</p>
2017-03-28 09:58:13 +02:00
</li>
2017-03-28 10:18:03 +02:00
<li>
<p>Urządzenie /dev/urandom.</p>
2017-03-28 09:58:13 +02:00
</li>
</ul>
2017-03-28 10:18:03 +02:00
<p>Współczesne (<strong>0.9.5a</strong> lub nowsze) wersje biblioteki <strong>OpenSSL</strong> automatycznie
2017-03-28 09:58:13 +02:00
zaprzestają ładowania kolejnych danych w momencie uzyskania wystarczającej
ilości entropii. Wcześniejsze wersje biblioteki wykorzystają wszystkie
2017-03-28 10:18:03 +02:00
powyższe źródła, gdyż nie istnieje tam funkcja pozwalająca określić, czy
uzyskano już wystarczająco dużo danych.</p>
2017-03-28 09:58:13 +02:00
<p>Warto zwrócić uwagę, że na maszynach z systemem Windows, na których
konsoli nie pracuje użytkownik, zawartość ekranu nie jest wystarczająco
zmienna, aby zainicjować PRNG. W takim przypadku do zainicjowania
generatora należy użyć opcji <em>RNDfile</em>.</p>
<p>Plik <em>RNDfile</em> powinien zawierać dane losowe -- również w tym sensie,
że powinny być one inne przy każdym uruchomieniu programu <strong>stunnel</strong>.
O ile nie użyta została opcja <em>RNDoverwrite</em> jest to robione
automatycznie. Do ręcznego uzyskania takiego pliku użyteczna
może być komenda <em>openssl rand</em> dostarczana ze współczesnymi
2017-03-28 10:18:03 +02:00
wersjami pakietu <strong>OpenSSL</strong>.</p>
2017-03-28 09:58:13 +02:00
<p>Jeszcze jedna istotna informacja -- jeżeli dostępne jest urządzenie
2017-03-28 10:18:03 +02:00
<em>/dev/urandom</em> biblioteka <strong>OpenSSL</strong> ma zwyczaj zasilania nim PRNG w trakcie
2017-03-28 09:58:13 +02:00
sprawdzania stanu generatora. W systemach z <em>/dev/urandom</em> urządzenie
to będzie najprawdopodobniej użyte, pomimo że znajduje się na samym końcu
2017-03-28 10:18:03 +02:00
powyższej listy. Jest to właściwość biblioteki <strong>OpenSSL</strong>, a nie programu
<strong>stunnel</strong>.</p>
2017-03-28 09:58:13 +02:00
<p>
</p>
<h2><a name="parametry_dh">PARAMETRY DH</a></h2>
2017-03-28 10:18:03 +02:00
<p>Począwszy od wersji 4.40 <strong>stunnel</strong> zawiera w kodzie programu 2048-bitowe
2017-03-28 09:58:13 +02:00
parametry DH.</p>
<p>Alternatywnie parametry DH można umieścić w pliku razem z certyfikatem:</p>
<pre>
openssl dhparam 2048 &gt;&gt; stunnel.pem</pre>
<p>Wygenerowanie parametrów DH może zająć nawet wiele minut.</p>
<p>
</p>
<hr />
<h1><a name="pliki">PLIKI</a></h1>
<dl>
<dt><strong><a name="stunnel_conf" class="item"><em class="file">stunnel.conf</em></a></strong></dt>
<dd>
<p>plik konfiguracyjny programu</p>
</dd>
</dl>
<p>
</p>
<hr />
<h1><a name="b____dy">BŁĘDY</a></h1>
2017-03-28 10:18:03 +02:00
<p>Opcja <em>execargs</em> oraz linia komend Win32 nie obsługuje cytowania.</p>
2017-03-28 09:58:13 +02:00
<p>
</p>
<hr />
<h1><a name="zobacz_r__wnie__">ZOBACZ RÓWNIEŻ</a></h1>
<dl>
<dt><strong><a name="tcpd" class="item"><a href="#tcpd">tcpd(8)</a></a></strong></dt>
<dd>
<p>biblioteka kontroli dostępu do usług internetowych</p>
</dd>
<dt><strong><a name="inetd" class="item"><a href="#inetd">inetd(8)</a></a></strong></dt>
<dd>
<p>'super-serwer' internetowy</p>
</dd>
<dt><strong><a name="http_www_stunnel_org" class="item"><em class="file"><a href="http://www.stunnel.org/">http://www.stunnel.org/</a></em></a></strong></dt>
<dd>
2017-03-28 10:18:03 +02:00
<p>strona domowa programu <strong>stunnel</strong></p>
2017-03-28 09:58:13 +02:00
</dd>
<dt><strong><a name="http_www_openssl_org" class="item"><em class="file"><a href="http://www.openssl.org/">http://www.openssl.org/</a></em></a></strong></dt>
<dd>
2017-03-28 10:18:03 +02:00
<p>strona projektu <strong>OpenSSL</strong></p>
2017-03-28 09:58:13 +02:00
</dd>
</dl>
<p>
</p>
<hr />
<h1><a name="autor">AUTOR</a></h1>
<dl>
<dt><strong><a name="micha_trojnara" class="item">Michał Trojnara</a></strong></dt>
<dd>
<p>&lt;<em class="file"><a href="mailto:Michal.Trojnara@mirt.net">Michal.Trojnara@mirt.net</a></em>&gt;</p>
</dd>
</dl>
</body>
</html>