Provided by: stunnel4_5.44-1ubuntu3_amd64 bug

NAZWA

       stunnel - uniwersalny tunel protokołu TLS

SKŁADNIA

       Unix:
           stunnel [PLIK] | -fd N | -help | -version | -sockets | -options

       WIN32:
           stunnel [ [ -install | -uninstall | -start | -stop |
               -reload | -reopen | -exit ] [-quiet] [PLIK] ] |
               -help | -version | -sockets | -options

OPIS

       Program stunnel został zaprojektowany do opakowywania w protokół TLS połączeń pomiędzy
       zdalnymi klientami a lokalnymi lub zdalnymi serwerami.  Przez serwer lokalny rozumiana
       jest aplikacja przeznaczona do uruchamiania przy pomocy inetd.  Stunnel pozwala na proste
       zestawienie komunikacji serwerów nie posiadających funkcjonalności TLS poprzez bezpieczne
       kanały TLS.

       stunnel pozwala dodać funkcjonalność TLS do powszechnie stosowanych demonów inetd, np.
       pop3 lub imap, do samodzielnych demonów, np. nntp, smtp lub http, a nawet tunelować ppp
       poprzez gniazda sieciowe bez zmian w kodzie źródłowym.

OPCJE

       PLIK
           użyj podanego pliku konfiguracyjnego

       -fd N (tylko Unix)
           wczytaj konfigurację z podanego deskryptora pliku

       -help
           drukuj listę wspieranych opcji

       -version
           drukuj wersję programu i domyślne wartości parametrów

       -sockets
           drukuj domyślne opcje gniazd

       -options
           drukuj wspierane opcje TLS

       -install (tylko Windows NT lub nowszy)
           instaluj serwis NT

       -uninstall (tylko Windows NT lub nowszy)
           odinstaluj serwis NT

       -start (tylko Windows NT lub nowszy)
           uruchom serwis NT

       -stop (tylko Windows NT lub nowszy)
           zatrzymaj serwis NT

       -reload (tylko Windows NT lub nowszy)
           przeładuj plik konfiguracyjny uruchomionego serwisu NT

       -reopen (tylko Windows NT lub nowszy)
           otwórz ponownie log uruchomionego serwisu NT

       -exit (tylko Win32)
           zatrzymaj uruchomiony program

       -quiet (tylko Win32)
           nie wyświetlaj okienek z komunikatami

PLIK KONFIGURACYJNY

       Linia w pliku konfiguracyjnym może być:

       •   pusta (ignorowana)

       •   komentarzem rozpoczynającym się znakiem ';' (ignorowana)

       •   parą 'nazwa_opcji = wartość_opcji'

       •   tekstem '[nazwa_usługi]' wskazującym początek definicji usługi

       Parametr adres może być:

       •   numerem portu

       •   oddzieloną średnikiem parą adresu (IPv4, IPv6, lub nazwą domenową) i numeru portu

       •   ścieżką do gniazda Unix (tylko Unix)

   OPCJE GLOBALNE
       chroot = KATALOG (tylko Unix)
           katalog roboczego korzenia systemu plików

           Opcja określa katalog, w którym uwięziony zostanie proces programu stunnel tuż po jego
           inicjalizacji, a przed rozpoczęciem odbierania połączeń.  Ścieżki podane w opcjach
           CApath, CRLpath, pid oraz exec muszą być umieszczone wewnątrz katalogu podanego w
           opcji chroot i określone względem tego katalogu.

           Niektóre funkcje systemu operacyjnego mogą wymagać dodatkowych plików umieszczonych w
           katalogu podanego w parametrze chroot:

           •   opóźnione rozwinięcie adresów DNS typowo wymaga /etc/nsswitch.conf i
               /etc/resolv.conf

           •   lokalizacja strefy czasowej w logach wymaga pliku /etc/timezone

           •   niektóre inne pliki mogą potrzebować plików urządzeń, np. /dev/zero lub /dev/null

       compression = deflate | zlib
           wybór algorytmu kompresji przesyłanych danych

           domyślnie: bez kompresji

           Algorytm deflate jest standardową metodą kompresji zgodnie z RFC 1951.

       debug = [PODSYSTEM].POZIOM
           szczegółowość logowania

           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 debug = debug lub debug = 7.
           Domyślnym poziomem jest notice (5).

           O ile nie wyspecyfikowano podsystemu użyty będzie domyślny: daemon.  Podsystemy nie są
           wspierane przez platformę Win32.

           Wielkość liter jest ignorowana zarówno dla poziomu jak podsystemu.

       EGD = ŚCIEŻKA_DO_EGD (tylko Unix)
           ścieżka do gniazda programu Entropy Gathering Daemon

           Opcja pozwala określić ścieżkę do gniazda programu Entropy Gathering Daemon używanego
           do zainicjalizowania generatora ciągów pseudolosowych biblioteki OpenSSL.

       engine = auto | IDENTYFIKATOR_URZĄDZENIA
           wybór sprzętowego urządzenia kryptograficznego

           domyślnie: bez wykorzystania urządzeń kryptograficznych

           Sekcja PRZYKŁADY zawiera przykładowe konfiguracje wykorzystujące urządzenia
           kryptograficzne.

       engineCtrl = KOMENDA[:PARAMETR]
           konfiguracja urządzenia kryptograficznego

       engineDefault = LISTA_ZADAŃ
           lista zadań OpenSSL oddelegowanych do bieżącego urządzenia

           Parametrem jest lista oddzielonych przecinkami zadań OpenSSL, które mają zostać
           oddelegowane do bieżącego urządzenia kryptograficznego.

           W zależności od konkretnego urządzenia dostępne mogą być następujące zadania: ALL,
           RSA, DSA, ECDH, ECDSA, DH, RAND, CIPHERS, DIGESTS, PKEY, PKEY_CRYPTO, PKEY_ASN1.

       fips = yes | no
           tryb FIPS 140-2

           Opcja pozwala wyłączyć wejście w tryb FIPS, jeśli stunnel został skompilowany ze
           wsparciem dla FIPS 140-2.

           domyślnie: no (od wersji 5.00)

       foreground = yes | quiet | no (tylko Unix)
           tryb pierwszoplanowy

           Użycie tej opcji powoduje, że stunnel nie przechodzi w tło.

           Parametr yes powoduje dodatkowo, że komunikaty diagnostyczne logowane są na
           standardowy strumień błędów (stderr) oprócz wyjść zdefiniowanych przy pomocy opcji
           syslog i output.

       iconActive = PLIK_Z_IKONKĄ (tylko GUI)
           ikonka wyświetlana przy obecności aktywnych połączeń do usługi

           W systemie Windows ikonka to plik .ico zawierający obrazek 16x16 pikseli.

       iconError = PLIK_Z_IKONKĄ (tylko GUI)
           ikonka wyświetlana, jeżeli nie został załadowany poprawny plik konfiguracyjny

           W systemie Windows ikonka to plik .ico zawierający obrazek 16x16 pikseli.

       iconIdle = PLIK_Z_IKONKĄ (tylko GUI)
           ikonka wyświetlana przy braku aktywnych połączeń do usługi

           W systemie Windows ikonka to plik .ico zawierający obrazek 16x16 pikseli.

       log = append | overwrite
           obsługa logów

           Ta opcja pozwala określić, czy nowe logi w pliku (określonym w opcji output) będą
           dodawane czy nadpisywane.

           domyślnie: append

       output = PLIK
           plik, do którego dopisane zostaną logi

           Użycie tej opcji powoduje dopisanie logów do podanego pliku.

           Do kierowania komunikató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.

       pid = PLIK (tylko Unix)
           położenie pliku z numerem procesu

           Jeżeli argument jest pusty, plik nie zostanie stworzony.

           Jeżeli zdefiniowano katalog chroot, to ścieżka do pid jest określona względem tego
           katalogu.

       RNDbytes = LICZBA_BAJTÓW
           liczba bajtów do zainicjowania generatora pseudolosowego

       RNDfile = PLIK
           ścieżka do pliku zawierającego losowe dane

           Biblioteka OpenSSL użyje danych z tego pliku do zainicjowania generatora
           pseudolosowego.

       RNDoverwrite = yes | no
           nadpisz plik nowymi wartościami pseudolosowymi

           domyślnie: yes (nadpisz)

       service = SERWIS (tylko Unix)
           nazwa usługi

           Podana nazwa usługi będzie używana jako nazwa usługi dla inicjalizacji sysloga, oraz
           dla biblioteki TCP Wrapper w trybie inetd.  Chociaż technicznie można użyć tej opcji w
           trybie w sekcji usług, to jest ona użyteczna jedynie w opcjach globalnych.

           domyślnie: stunnel

       socket = a|l|r:OPCJA=WARTOŚĆ[:WARTOŚĆ]
           ustaw opcję na akceptującym/lokalnym/zdalnym gnieździe

           Dla opcji linger wartości mają postać l_onof:l_linger.  Dla opcji time wartości mają
           postać tv_sec:tv_usec.

           Przykłady:

               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)

       syslog = yes | no (tylko Unix)
           włącz logowanie poprzez mechanizm syslog

           domyślnie: yes (włącz)

       taskbar = yes | no (tylko WIN32)
           włącz ikonkę w prawym dolnym rogu ekranu

           domyślnie: yes (włącz)

   OPCJE USŁUG
       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.

       Jeżeli stunnel ma zostać użyty w trybie inetd, gdzie za odebranie połączenia odpowiada
       osobny program (zwykle inetd, xinetd lub tcpserver), należy przeczytać sekcję TRYB INETD
       poniżej.

       accept = [HOST:]PORT
           nasłuchuje na połączenia na podanym adresie i porcie

           Jeżeli nie został podany adres, stunnel domyślnie nasłuchuje na wszystkich adresach
           IPv4 lokalnych interfejsów.

           Aby nasłuchiwać na wszystkich adresach IPv6 należy użyć:

               accept = :::port

       CApath = KATALOG_CA
           katalog Centrum Certyfikacji

           Opcja określa katalog, w którym stunnel będzie szukał certyfikatów, jeżeli użyta
           została opcja verifyChain lub verifyPeer.  Pliki z certyfikatami muszą posiadać
           specjalne nazwy XXXXXXXX.0, gdzie XXXXXXXX jest skrótem kryptograficznym reprezentacji
           DER nazwy podmiotu certyfikatu.

           Funkcja skrótu została zmieniona w OpenSSL 1.0.0.  Należy wykonać c_rehash przy
           zmianie OpenSSL 0.x.x na 1.x.x.

           Jeżeli zdefiniowano katalog chroot, to ścieżka do CApath jest określona względem tego
           katalogu.

       CAfile = PLIK_CA
           plik Centrum Certyfikacji

           Opcja pozwala określić położenie pliku zawierającego certyfikaty używane przez opcję
           verifyChain lub verifyPeer.

       cert = PLIK_CERT
           plik z łańcuchem certyfikatów

           Opcja określa położenie pliku zawierającego certyfikaty używane przez program stunnel
           do uwierzytelnienia się przed drugą stroną połączenia.  Plik powinien zawierać
           kompletny łańcuch certyfikatów począwszy od certyfikatu klienta/serwera, a skończywszy
           na samopodpisanym certyfikacie głównego CA.  Obsługiwane są pliki w formacie PEM lub
           P12.

           Certyfikat jest konieczny, aby używać programu w trybie serwera.  W trybie klienta
           certyfikat jest opcjonalny.

           Jeżeli używane jest sprzętowe urządzenie kryptograficzne, to opcja cert pozwala wybrać
           identyfikator używanego certyfikatu.

       checkEmail = EMAIL
           adres email przedstawionego certyfikatu

           Pojedyncza sekcja może zawierać wiele wystąpień opcji checkEmail.  Certyfikaty są
           akceptowane, jeżeli sekcja nie zawiera opcji checkEmail, albo adres email
           przedstawionego certyfikatu pasuje do jednego z adresów email określonych przy pomocy
           checkEmail.

           Opcja ta wymaga biblioteki OpenSSL w wersji 1.0.2 lub nowszej.

       checkHost = NAZWA_SERWERA
           nazwa serwera przedstawionego certyfikatu

           Pojedyncza sekcja może zawierać wiele wystąpień opcji checkHost.  Certyfikaty są
           akceptowane, jeżeli sekcja nie zawiera opcji checkHost, albo nazwa serwera
           przedstawionego certyfikatu pasuje do jednego nazw określonych przy pomocy checkHost.

           Opcja ta wymaga biblioteki OpenSSL w wersji 1.0.2 lub nowszej.

       checkIP = IP
           adres IP przedstawionego certyfikatu

           Pojedyncza sekcja może zawierać wiele wystąpień opcji checkIP.  Certyfikaty są
           akceptowane, jeżeli sekcja nie zawiera opcji checkIP, albo adres IP przedstawionego
           certyfikatu pasuje do jednego z adresów IP określonych przy pomocy checkIP.

           Opcja ta wymaga biblioteki OpenSSL w wersji 1.0.2 lub nowszej.

       ciphers = LISTA_SZYFRÓW
           lista dozwolonych szyfrów TLS

           Parametrem tej opcji jest lista szyfrów, które będą użyte przy otwieraniu nowych
           połączeń TLS, np.:  DES-CBC3-SHA:IDEA-CBC-MD5

       client = yes | no
           tryb kliencki (zdalna usługa używa TLS)

           domyślnie: no (tryb serwerowy)

       config = KOMENDA[:PARAMETR]
           komenda konfiguracyjna OpenSSL

           Komenda konfiguracyjna OpenSSL zostaje wykonana z podanym parametrem.  Pozwala to na
           wydawanie komend konfiguracyjnych OpenSSL z pliku konfiguracyjnego stunnela.  Dostępne
           komendy opisane są w manualu SSL_CONF_cmd(3ssl).

           Możliwe jest wyspecyfikowanie wielu opcji OpenSSL przez wielokrotne użycie komendy
           config.

           Opcja ta wymaga biblioteki OpenSSL w wersji 1.0.2 lub nowszej.

       connect = [HOST:]PORT
           połącz się ze zdalnym serwerem na podany port

           Jeżeli nie został podany adres, stunnel domyślnie łączy się z lokalnym serwerem.

           Komenda może być użyta wielokrotnie w pojedynczej sekcji celem zapewnienia wysokiej
           niezawodności lub rozłożenia ruchu pomiędzy wiele serwerów.

       CRLpath = KATALOG_CRL
           katalog List Odwołanych Certyfikatów (CRL)

           Opcja określa katalog, w którym stunnel będzie szukał list CRL używanych przez opcje
           verifyChain i verifyPeer.  Pliki z listami CRL muszą posiadać specjalne nazwy
           XXXXXXXX.r0, gdzie XXXXXXXX jest skrótem listy CRL.

           Funkcja skrótu została zmieniona OpenSSL 1.0.0.  Należy wykonać c_rehash przy zmianie
           OpenSSL 0.x.x na 1.x.x.

           Jeżeli zdefiniowano katalog chroot, to ścieżka do CRLpath jest określona względem tego
           katalogu.

       CRLfile = PLIK_CRL
           plik List Odwołanych Certyfikatów (CRL)

           Opcja pozwala określić położenie pliku zawierającego listy CRL używane przez opcje
           verifyChain i verifyPeer.

       curve = NID
           krzywa dla ECDH

           Listę dostępnych krzywych można uzyskać poleceniem:

               openssl ecparam -list_curves

           domyślnie: prime256v1

       logId = TYP
           typ identyfikatora połączenia klienta

           Identyfikator ten pozwala rozróżnić wpisy w logu wygenerowane dla poszczególnych
           połączeń.

           Aktualnie wspierane typy:

           sequential
               Kolejny numer połączenia jest unikalny jedynie w obrębie pojedynczej instancji
               programu stunnel, ale bardzo krótki.  Jest on szczególnie użyteczny przy ręcznej
               analizie logów.

           unique
               Ten rodzaj identyfikatora jest globalnie unikalny, ale znacznie dłuższy, niż
               kolejny numer połączenia.  Jest on szczególnie użyteczny przy zautomatyzowanej
               analizie logów.

           thread
               Identyfikator wątku systemu operacyjnego nie jest ani unikalny (nawet w obrębie
               pojedynczej instancji programu stunnel), ani krótki.  Jest on szczególnie
               użyteczny przy diagnozowaniu problemów z oprogramowaniem lub konfiguracją.

           process
               Identyfikator procesu (PID) może być użyteczny w trybie inetd.

           domyślnie: sequential

       debug = POZIOM
           szczegółowość logowania

           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 debug = debug lub debug = 7.
           Domyślnym poziomem jest notice (5).

       delay = yes | no
           opóźnij rozwinięcie adresu DNS podanego w opcji connect

           Opcja jest przydatna przy dynamicznym DNS, albo gdy usługa DNS nie jest dostępna przy
           starcie programu stunnel (klient VPN, połączenie wdzwaniane).

           Opóźnione rozwijanie adresu DNS jest włączane automatycznie, jeżeli nie powiedzie się
           rozwinięcie któregokolwiek z adresów connect dla danej usługi.

           Opóźnione rozwijanie adresu automatycznie aktywuje failover = prio.

           default: no

       engineId = NUMER_URZĄDZENIA
           wybierz urządzenie dla usługi

       engineNum = NUMER_URZĄDZENIA
           wybierz urządzenie dla usługi

           Urządzenia są numerowane od 1 w górę.

       exec = ŚCIEŻKA_DO_PROGRAMU
           wykonaj lokalny program przystosowany do pracy z superdemonem inetd

           Jeżeli zdefiniowano katalog chroot, to ścieżka do exec jest określona względem tego
           katalogu.

           Na platformach Unix ustawiane są następujące zmienne środowiskowe: REMOTE_HOST,
           REMOTE_PORT, SSL_CLIENT_DN, SSL_CLIENT_I_DN.

       execArgs = $0 $1 $2 ...
           argumenty do opcji exec włącznie z nazwą programu ($0)

           Cytowanie nie jest wspierane w obecnej wersji programu.  Argumenty są rozdzielone
           dowolną liczbą białych znaków.

       failover = rr | prio
           Strategia wybierania serwerów wyspecyfikowanych parametrami "connect".

           rr  round robin - sprawiedliwe rozłożenie obciążenia

           prio
               priority - użyj kolejności opcji w pliku konfiguracyjnym

           domyślnie: rr

       ident = NAZWA_UŻYTKOWNIKA
           weryfikuj nazwę zdalnego użytkownika korzystając z protokołu IDENT (RFC 1413)

       include = KATALOG
           wczytaj fragmenty plików konfiguracyjnych z podanego katalogu

           Pliki są wczytywane w rosnącej kolejności alfabetycznej ich nazw.

       key = PLIK_KLUCZA
           klucz prywatny do certyfikatu podanego w opcji cert

           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ą:

               chmod 600 keyfile

           Jeżeli używane jest sprzętowe urządzenie kryptograficzne, to opcja key pozwala wybrać
           identyfikator używanego klucza prywatnego.

           domyślnie: wartość opcji cert

       libwrap = yes | no
           włącz lub wyłącz korzystanie z /etc/hosts.allow i /etc/hosts.deny.

           domyślnie: no (od wersji 5.00)

       local = HOST
           IP źródła do nawiązywania zdalnych połączeń

           Domyślnie używane jest IP najbardziej zewnętrznego interfejsu w stronę serwera, do
           którego nawiązywane jest połączenie.

       OCSP = URL
           responder OCSP do weryfikacji certyfikatów

       OCSPaia = yes | no
           weryfikuj certyfikaty przy użyciu respondertów AIA

           Opcja OCSPaia pozwala na weryfikowanie certyfikatów przy pomocy listy URLi responderów
           OCSP przesłanych w rozszerzeniach AIA (Authority Information Access).

       OCSPflag = FLAGA_OCSP
           flaga respondera OCSP

           Aktualnie wspierane flagi: NOCERTS, NOINTERN, NOSIGS, NOCHAIN, NOVERIFY, NOEXPLICIT,
           NOCASIGN, NODELEGATED, NOCHECKS, TRUSTOTHER, RESPID_KEY, NOTIME

           Aby wyspecyfikować kilka flag należy użyć OCSPflag wielokrotnie.

       OCSPnonce = yes | no
           wysyłaj i weryfikuj OCSP nonce

           Opcja OCSPnonce zabezpiecza protokół OCSP przed atakami powtórzeniowymi.  Ze względu
           na złożoność obliczeniową rozszerzenie nonce jest zwykle wspierane jedynie przez
           wewnętrzne (np. korporacyjne), a nie przez publiczne respondery OCSP.

       options = OPCJE_SSL
           opcje biblioteki OpenSSL

           Parametrem jest nazwa opcji zgodnie z opisem w SSL_CTX_set_options(3ssl), ale bez
           przedrostka SSL_OP_.  stunnel -options wyświetla opcje dozwolone w aktualnej
           kombinacji programu stunnel i biblioteki OpenSSL.

           Aby wyspecyfikować kilka opcji należy użyć options wielokrotnie.  Nazwa opcji może być
           poprzedzona myślnikiem ("-") celem wyłączenia opcji.

           Na przykład, dla zachowania kompatybilności z błędami implementacji TLS w programie
           Eudora, można użyć opcji:

               options = DONT_INSERT_EMPTY_FRAGMENTS

           domyślnie:

               options = NO_SSLv2
               options = NO_SSLv3

       protocol = PROTOKÓŁ
           negocjuj TLS podanym protokołem aplikacyjnym

           Opcja ta włącza wstępną negocjację szyfrowania TLS dla wybranego protokołu
           aplikacyjnego.  Opcji protocol nie należy używać z szyfrowaniem TLS na osobnym porcie.

           Aktualnie wspierane protokoły:

           cifs
               Nieudokumentowane rozszerzenie protokołu CIFS wspierane przez serwer Samba.
               Wsparcie dla tego rozrzeczenia zostało zarzucone w wersji 3.0.0 serwera Samba.

           connect
               Negocjacja RFC 2817 - Upgrading to TLS Within HTTP/1.1, rozdział 5.2 - Requesting
               a Tunnel with CONNECT

               Ten protokół jest wspierany wyłącznie w trybie klienckim.

           imap
               Negocjacja RFC 2595 - Using TLS with IMAP, POP3 and ACAP

           nntp
               Negocjacja RFC 4642 - Using Transport Layer Security (TLS) with Network News
               Transfer Protocol (NNTP)

               Ten protokół jest wspierany wyłącznie w trybie klienckim.

           pgsql
               Negocjacja http://www.postgresql.org/docs/8.3/static/protocol-flow.html#AEN73982

           pop3
               Negocjacja RFC 2449 - POP3 Extension Mechanism

           proxy
               Przekazywanie adresu IP haproxy
               http://haproxy.1wt.eu/download/1.5/doc/proxy-protocol.txt

           smtp
               Negocjacja RFC 2487 - SMTP Service Extension for Secure SMTP over TLS

           socks
               Wspierany jest protokół SOCKS w wersjach 4, 4a i 5.  Protokół SOCKS enkapsulowany
               jest w protokole TLS, więc adres serwera docelowego nie jest widoczny dla
               napastnika przechwytującego ruch sieciowy.

               http://www.openssh.com/txt/socks4.protocol

               http://www.openssh.com/txt/socks4a.protocol

               Nie jest wspierana komenda BIND protokołu SOCKS.  Przesłana wartość parametru
               USERID jest ignorowana.

               Sekcja PRZYKŁADY zawiera przykładowe pliki konfiguracyjne VPNa zbudowanego w
               oparciu o szyfrowany protokół SOCKS.

       protocolAuthentication = UWIERZYTELNIENIE
           rodzaj uwierzytelnienia do negocjacji protokołu

           Opcja ta jest wpierana wyłącznie w klienckich protokołach 'connect' i 'smtp'.

           W protokole 'connect' wspierane jest uwierzytelnienie 'basic' oraz 'ntlm'.  Domyślnym
           rodzajem uwierzytelnienia protokołu 'connect' jest 'basic'.

           W protokole 'smtp' wspierane jest uwierzytelnienie 'plain' oraz 'login'.  Domyślnym
           rodzajem uwierzytelnienia protokołu 'smtp' jest 'plain'.

       protocolDomain = DOMENA
           domena do negocjacji protokołu

           W obecnej wersji wybrana domena ma zastosowanie wyłącznie w protokole 'connect'.

       protocolHost = HOST:PORT
           adres docelowy do negocjacji protokołu

           protocolHost określa docelowy serwer TLS, do którego połączyć ma się proxy.  Nie jest
           to adres serwera proxy, do którego połączenie zestawia stunnel.  Adres serwera proxy
           powinien być określony przy pomocy opcji 'connect'.

           W obecnej wersji adres docelowy protokołu ma zastosowanie wyłącznie w protokole
           'connect'.

       protocolPassword = HASŁO
           hasło do negocjacji protokołu

           Opcja ta jest wspierana wyłącznie w klienckich protokołach 'connect' i 'smtp'.

       protocolUsername = UŻYTKOWNIK
           nazwa użytkownika do negocjacji protokołu

           Opcja ta jest wspierana wyłącznie w klienckich protokołach 'connect' i 'smtp'.

       PSKidentity = TOŻSAMOŚĆ
           tożsamość klienta PSK

           PSKidentity może zostać użyte w sekcjach klienckich do wybrania tożsamości użytej do
           uwierzytelnienia PSK.  Opcja jest ignorowana w sekcjach serwerowych.

           domyślnie: pierwsza tożsamość zdefiniowana w pliku PSKsecrets

       PSKsecrets = PLIK
           plik z tożsamościami i kluczami PSK

           Każda linia pliku jest w następującym formacie:

               TOŻSAMOŚĆ:KLUCZ

           Klucz musi być mieć przynajmniej 20 znaków.  Należy ograniczyć dostęp do czytania lub
           pisania do tego pliku.

       pty = yes | no (tylko Unix)
           alokuj pseudoterminal dla programu uruchamianego w opcji 'exec'

       redirect = [HOST:]PORT
           przekieruj klienta, któremu nie udało się poprawnie uwierzytelnić przy pomocy
           certyfikatu

           Opcja działa wyłącznie w trybie serwera.  Część negocjacji protokołów jest
           niekompatybilna z opcją redirect.

       renegotiation = yes | no
           pozwalaj na renegocjację TLS

           Zastosowania renegocjacji TLS zawierają niektóre scenariusze uwierzytelniania oraz
           renegocjację kluczy dla długotrwałych połączeń.

           Z drugiej strony własność na może ułatwić trywialny atak DoS poprzez wygenerowanie
           obciążenia procesora:

           http://vincent.bernat.im/en/blog/2011-ssl-dos-mitigation.html

           Warto zauważyć, że zablokowanie renegocjacji TLS nie zebezpiecza w pełni przed
           opisanym problemem.

           domyślnie: yes (o ile wspierane przez OpenSSL)

       reset = yes | no
           sygnalizuj wystąpienie błędu przy pomocy flagi TCP RST

           Opcja nie jest wspierana na niektórych platformach.

           domyślnie: yes

       retry = yes | no
           połącz ponownie sekcję connect+exec po rozłączeniu

           domyślnie: no

       requireCert = yes | no
           wymagaj certyfikatu klienta dla verifyChain lub verifyPeer

           Przy opcji requireCert ustawionej na no, stunnel akceptuje połączenia klientów, które
           nie wysłały certyfikatu.

           Zarówno verifyChain = yes jak i verifyPeer = yes automatycznie ustawiają requireCert
           na yes.

           domyślnie: no

       setgid = IDENTYFIKATOR_GRUPY (tylko Unix)
           identyfikator grupy Unix

           Jako opcja globalna: grupa, z której prawami pracował będzie stunnel.

           Jako opcja usługi: grupa gniazda Unix utworzonego przy pomocy opcji "accept".

       setuid = IDENTYFIKATOR_UŻYTKOWNIKA (tylko Unix)
           identyfikator użytkownika Unix

           Jako opcja globalna: użytkownik, z którego prawami pracował będzie stunnel.

           Jako opcja usługi: właściciel gniazda Unix utworzonego przy pomocy opcji "accept".

       sessionCacheSize = LICZBA_POZYCJI_CACHE
           rozmiar pamięci podręcznej sesji TLS

           Parametr określa maksymalną liczbę pozycji wewnętrznej pamięci podręcznej sesji.

           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.

       sessionCacheTimeout = LICZBA_SEKUND
           przeterminowanie pamięci podręcznej sesji TLS

           Parametr określa czas w sekundach, po którym sesja TLS zostanie usunięta z pamięci
           podręcznej.

       sessiond = HOST:PORT
           adres sessiond - servera cache sesji TLS

       sni = NAZWA_USŁUGI:WZORZEC_NAZWY_SERWERA (tryb serwera)
           Użyj usługi jako podrzędnej (virtualnego serwera) dla rozszerzenia TLS Server Name
           Indication (RFC 3546).

           NAZWA_USŁUGI wskazuje usługę nadrzędną, która odbiera połączenia od klientów przy
           pomocy opcji accept.  WZORZEC_NAZWY_SERWERA wskazuje nazwę serwera wirtualnego.
           Wzorzec może zaczynać się znakiem '*', np. '*.example.com".  Z pojedyńczą usługą
           nadrzędną powiązane jest zwykle wiele usług podrzędnych.  Opcja sni może być rownież
           użyta wielokrotnie w ramach jednej usługi podrzędnej.

           Zarówno usługa nadrzędna jak i podrzędna nie może być skonfigurowana w trybie
           klienckim.

           Opcja connect usługi podrzędnej jest ignorowana w połączeniu z opcją protocol, gdyż
           połączenie do zdalnego serwera jest w tym wypadku nawiązywane przed negocjacją TLS.

           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.

           Opcja sni jest dostępna począwszy od OpenSSL 1.0.0.

       sni = NAZWA_SERWERA (tryb klienta)
           Użyj parametru jako wartości rozszerzenia TLS Server Name Indication (RFC 3546).

           Pusta wartość parametru NAZWA_SERWERA wyłącza wysyłanie rozszerzenia SNI.

           Opcja sni jest dostępna począwszy od OpenSSL 1.0.0.

       sslVersion = WERSJA_SSL
           wersja protokołu TLS

           Wspierane opcje: all, SSLv2, SSLv3, TLSv1, TLSv1.1, TLSv1.2

           Dostępność konkretnych protokołów zależy od użytej wersji OpenSSL.  Starsze wersje
           OpenSSL nie wspierają TLSv1.1 i TLSv1.2.  Nowsze wersje OpenSSL nie wspierają SSLv2.

           Przestarzałe protokoły SSLv2 i SSLv3 są domyślnie wyłączone.  Szczegółowe informacje
           dostępne są w opisie opcji options.

       stack = LICZBA_BAJTÓW (z wyjątkiem modelu FORK)
           rozmiar stosu procesora wątku

       TIMEOUTbusy = LICZBA_SEKUND
           czas oczekiwania na spodziewane dane

       TIMEOUTclose = LICZBA_SEKUND
           czas oczekiwania na close_notify (ustaw na 0, jeżeli klientem jest MSIE)

       TIMEOUTconnect = LICZBA_SEKUND
           czas oczekiwania na nawiązanie połączenia

       TIMEOUTidle = LICZBA_SEKUND
           maksymalny czas utrzymywania bezczynnego połączenia

       transparent = none | source | destination | both (tylko Unix)
           tryb przezroczystego proxy na wspieranych platformach

           Wspierane opcje:

           none
               Zablokuj wsparcie dla przezroczystago proxy.  Jest to wartość domyślna.

           source
               Przepisz adres, aby nawiązywane połączenie wydawało się pochodzić bezpośrednio od
               klienta, a nie od programu stunnel.

               Opcja jest aktualnie obsługiwana w:

               Trybie zdalnym (opcja connect) w systemie Linux >=2.6.28
                   Konfiguracja wymaga następujących ustawień iptables oraz routingu (na przykład
                   w pliku /etc/rc.local lub analogicznym):

                       iptables -t mangle -N DIVERT
                       iptables -t mangle -A PREROUTING -p tcp -m socket -j DIVERT
                       iptables -t mangle -A DIVERT -j MARK --set-mark 1
                       iptables -t mangle -A DIVERT -j ACCEPT
                       ip rule add fwmark 1 lookup 100
                       ip route add local 0.0.0.0/0 dev lo table 100
                       echo 0 >/proc/sys/net/ipv4/conf/lo/rp_filter

                   Konfiguracja ta wymaga, aby stunnel był wykonywany jako root i bez opcji
                   setuid.

               Trybie zdalnym (opcja connect) w systemie Linux 2.2.x
                   Konfiguracja ta wymaga skompilowania jądra z opcją transparent proxy.
                   Docelowa usługa musi być umieszczona na osobnej maszynie, do której routing
                   kierowany jest poprzez serwer stunnela.

                   Dodatkowo stunnel powinien być wykonywany jako root i bez opcji setuid.

               Trybie zdalnym (opcja connect) w systemie FreeBSD >=8.0
                   Konfiguracja ta wymaga skonfigurowania firewalla i routingu.  stunnel musi być
                   wykonywany jako root i bez opcji setuid.

               Trybie lokalnym (opcja exec)
                   Konfiguracja ta jest realizowana przy pomocy biblioteki libstunnel.so.  Do
                   załadowania biblioteki wykorzystywana jest zmienna środowiskowa _RLD_LIST na
                   platformie Tru64 lub LD_PRELOAD na innych platformach.

           destination
               Oryginalny adres docelowy jest używany zamiast opcji connect.

               Przykładowana konfiguracja przezroczystego adresu docelowego:

                   [transparent]
                   client = yes
                   accept = <port_stunnela>
                   transparent = destination

               Konfiguracja wymaga ustawień iptables, na przykład w pliku /etc/rc.local lub
               analogicznym.

               W przypadku docelowej usługi umieszczonej na tej samej maszynie:

                   /sbin/iptables -t nat -I OUTPUT -p tcp --dport <port_przekierowany> \
                       -m ! --uid-owner <identyfikator_użytkownika_stunnela> \
                       -j DNAT --to-destination <lokalne_ip>:<lokalny_port>

               W przypadku docelowej usługi umieszczonej na zdalnej maszynie:

                   /sbin/iptables -I INPUT -i eth0 -p tcp --dport <port_stunnela> -j ACCEPT
                   /sbin/iptables -t nat -I PREROUTING -p tcp --dport <port_przekierowany> \
                       -i eth0 -j DNAT --to-destination <lokalne_ip>:<port_stunnela>

               Przezroczysty adres docelowy jest aktualnie wspierany wyłącznie w systemie Linux.

           both
               Użyj przezroczystego proxy zarówno dla adresu źródłowego jak i docelowego.

           Dla zapewnienia kompatybilności z wcześniejszymim wersjami wspierane są dwie dodatkowe
           opcje:

           yes Opcja została przemianowana na source.

           no  Opcja została przemianowana na none.

       verify = POZIOM
           weryfikuj certyfikat drugiej strony połączenia

           Opcja ta jest przestarzała i należy ją zastąpić przez opcje verifyChain i verifyPeer.

           poziom 0
               zarządaj certyfikatu i zignoruj go

           poziom 1
               weryfikuj, jeżeli został przedstawiony

           poziom 2
               weryfikuj z zainstalowanym certyfikatem Centrum Certyfikacji

           poziom 3
               weryfikuj z lokalnie zainstalowanym certyfikatem drugiej strony

           poziom 4
               weryfikuj z certyfikatem drugiej strony ignorując łańcuch CA

           domyślnie
               nie weryfikuj

       verifyChain = yes | no
           weryfikuj łańcuch certyfikatów drugiej strony

           Do weryfikacji certyfikatu serwera kluczowe jest, aby wymagać również konkretnego
           certyfikatu przy pomocy checkHost lub checkIP.

           Samopodpisany certyfikat głównego CA należy umieścić  albo w pliku podanym w opcji
           CAfile, albo w katalogu podanym w opcji CApath.

           domyślnie: no

       verifyPeer = yes | no
           weryfikuj certyfikat drugiej strony

           Certyfikat drugiej strony należy umieścić  albo w pliku podanym w opcji CAfile, albo w
           katalogu podanym w opcji CApath.

           domyślnie: no

ZWRACANA WARTOŚĆ

       stunnel zwraca zero w przypadku sukcesu, lub wartość niezerową w przypadku błędu.

SIGNAŁY

       Następujące sygnały mogą być użyte do sterowania programem w systemie Unix:

       SIGHUP
           Załaduj ponownie plik konfiguracyjny.

           Niektóre globalne opcje nie będą przeładowane:

           •   chroot

           •   foreground

           •   pid

           •   setgid

           •   setuid

           Jeżeli wykorzystywana jest opcja 'setuid' stunnel nie będzie mógł załadować ponownie
           konfiguracji wykorzystującej uprzywilejowane (<1024) porty.

           Jeżeli wykorzystywana jest opcja 'chroot' stunnel będzie szukał wszystkich potrzebnych
           plików (łącznie z plikiem konfiguracyjnym, certyfikatami, logiem i plikiem pid)
           wewnątrz katalogu wskazanego przez 'chroot'.

       SIGUSR1
           Zamknij i otwórz ponownie log.  Funkcja ta może zostać użyta w skrypcie rotującym log
           programu stunnel.

       SIGTERM, SIGQUIT, SIGINT
           Zakończ działanie programu.

       Skutek wysłania innych sygnałów jest niezdefiniowany.

PRZYKŁADY

       Szyfrowanie połączeń do lokalnego serwera imapd można użyć:

           [imapd]
           accept = 993
           exec = /usr/sbin/imapd
           execArgs = imapd

       albo w trybie zdalnym:

           [imapd]
           accept = 993
           connect = 143

       Aby umożliwić lokalnemu klientowi poczty elektronicznej korzystanie z serwera imapd przez
       TLS należy skonfigurować pobieranie poczty z adresu localhost i portu 119, oraz użyć
       następującej konfiguracji:

           [imap]
           client = yes
           accept = 143
           connect = serwer:993

       W połączeniu z programem pppd stunnel pozwala zestawić prosty VPN.  Po stronie serwera
       nasłuchującego na porcie 2020 jego konfiguracja może wyglądać następująco:

           [vpn]
           accept = 2020
           exec = /usr/sbin/pppd
           execArgs = pppd local
           pty = yes

       Poniższy plik konfiguracyjny może być wykorzystany do uruchomienia programu stunnel w
       trybie inetd.  Warto zauważyć, że w pliku konfiguracyjnym nie ma sekcji [nazwa_usługi].

           exec = /usr/sbin/imapd
           execArgs = imapd

       Aby skonfigurować VPN można użyć następującej konfiguracji klienta:

           [socks_client]
           client = yes
           accept = 127.0.0.1:1080
           connect = vpn_server:9080
           verifyPeer = yes
           CAfile = stunnel.pem

       Odpowiadająca jej konfiguracja serwera vpn_server:

           [socks_server]
           protocol = socks
           accept = 9080
           cert = stunnel.pem
           key = stunnel.key

       Do przetestowania konfiguracji można wydać na maszynie klienckiej komendę:

           curl --socks4a localhost http://www.example.com/

       Przykładowa konfiguracja serwera SNI:

           [virtual]
           ; usługa nadrzędna
           accept = 443
           cert =  default.pem
           connect = default.internal.mydomain.com:8080

           [sni1]
           ; usługa podrzędna 1
           sni = virtual:server1.mydomain.com
           cert = server1.pem
           connect = server1.internal.mydomain.com:8081

           [sni2]
           ; usługa podrzędna 2
           sni = virtual:server2.mydomain.com
           cert = server2.pem
           connect = server2.internal.mydomain.com:8082
           verifyPeer = yes
           CAfile = server2-allowed-clients.pem

       Przykładowa konfiguracja umożliwiająca uwierzytelnienie z użyciem klucza prywatnego
       przechowywanego w Windows Certificate Store (tylko Windows).  W przypadku użycia silnika
       CAPI, nie należy ustawiać opcji cert, gdyż klucz klienta zostanie automatycznie pobrany z
       Certificate Store na podstawie zaufanych certyfikatów CA przedstawionych przez serwer.

           engine = capi

           [service]
           engineId = capi
           client = yes
           accept = 127.0.0.1:8080
           connect = example.com:8443

       Przykładowa konfiguracja umożliwiająca użycie certyfikatu i klucza prywatnego z urządzenia
       zgodnego z pkcs11:

           engine = pkcs11
           engineCtrl = MODULE_PATH:opensc-pkcs11.so
           engineCtrl = PIN:123456

           [service]
           engineId = pkcs11
           client = yes
           accept = 127.0.0.1:8080
           connect = example.com:843
           cert = pkcs11:token=MyToken;object=MyCert
           key = pkcs11:token=MyToken;object=MyKey

       Przykładowa konfiguracja umożliwiająca użycie certyfikatu i klucza prywatnego
       umieszczonego na tokenie SoftHSM

           engine = pkcs11
           engineCtrl = MODULE_PATH:softhsm2.dll
           engineCtrl = PIN:12345

           [service]
           engineId = pkcs11
           client = yes
           accept = 127.0.0.1:8080
           connect = example.com:843
           cert = pkcs11:token=MyToken;object=KeyCert

NOTKI

   OGRANICZENIA
       stunnel nie może być używany do szyfrowania protokołu FTP, 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 TLS.

   TRYB INETD (tylko Unix)
       W większości zastosowań stunnel samodzielnie nasłuchuje na porcie podanym w pliku
       konfiguracyjnym i tworzy połączenie z innym portem podanym w opcji connect lub nowym
       programem podanym w opcji exec.  Niektórzy wolą jednak wykorzystywać oddzielny program,
       który odbiera połączenia, po czym uruchamia program stunnel.  Przykładami takich programów
       są inetd, xinetd i tcpserver.

       Przykładowa linia pliku /etc/inetd.conf może wyglądać tak:

           imaps stream tcp nowait root /usr/bin/stunnel
               stunnel /etc/stunnel/imaps.conf

       Ponieważ w takich przypadkach połączenie na zdefiniowanym porcie (tutaj imaps) nawiązuje
       osobny program (tutaj inetd), stunnel nie może używać opcji accept.  W pliku
       konfiguracyjnym nie może być również zdefiniowana żadna usługa ([nazwa_usługi]), ponieważ
       konfiguracja taka pozwala na nawiązanie tylko jednego połączenia.  Wszystkie OPCJE USŁUG
       powinny być umieszczone razem z opcjami globalnymi.  Przykład takiej konfiguracji znajduje
       się w sekcji PRZYKŁADY.

   CERTYFIKATY
       Protokół TLS 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.  Najprostszą metodą uzyskania
       certyfikatu jest wygenerowanie go przy pomocy wolnego pakietu OpenSSL.  Więcej informacji
       na temat generowania certyfikatów można znaleźć na umieszczonych poniżej stronach.

       Istotną kwestią jest kolejność zawartości pliku .pem.  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ć:

           -----BEGIN RSA PRIVATE KEY-----
           [zakodowany klucz]
           -----END RSA PRIVATE KEY-----
           [pusta linia]
           -----BEGIN CERTIFICATE-----
           [zakodowany certyfikat]
           -----END CERTIFICATE-----
           [pusta linia]

   LOSOWOŚĆ
       stunnel potrzebuje zainicjować PRNG (generator liczb pseudolosowych), gdyż protokół TLS
       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:

       •   Zawartość pliku podanego w opcji RNDfile.

       •   Zawartość pliku o nazwie określonej przez zmienną środowiskową RANDFILE, o ile jest
           ona ustawiona.

       •   Plik .rnd umieszczony w katalogu domowym użytkownika, jeżeli zmienna RANDFILE nie jest
           ustawiona.

       •   Plik podany w opcji '--with-random' w czasie konfiguracji programu.

       •   Zawartość ekranu w systemie Windows.

       •   Gniazdo egd, jeżeli użyta została opcja EGD.

       •   Gniazdo egd podane w opcji '--with-egd-socket' w czasie konfiguracji programu.

       •   Urządzenie /dev/urandom.

       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 RNDfile.

       Plik RNDfile powinien zawierać dane losowe -- również w tym sensie, że powinny być one
       inne przy każdym uruchomieniu programu stunnel.  O ile nie użyta została opcja
       RNDoverwrite jest to robione automatycznie.  Do ręcznego uzyskania takiego pliku użyteczna
       może być komenda openssl rand dostarczana ze współczesnymi wersjami pakietu OpenSSL.

       Jeszcze jedna istotna informacja -- jeżeli dostępne jest urządzenie /dev/urandom
       biblioteka OpenSSL ma zwyczaj zasilania nim PRNG w trakcie sprawdzania stanu generatora.
       W systemach z /dev/urandom urządzenie to będzie najprawdopodobniej użyte, pomimo że
       znajduje się na samym końcu powyższej listy.  Jest to właściwość biblioteki OpenSSL, a nie
       programu stunnel.

   PARAMETRY DH
       Począwszy od wersji 4.40 stunnel zawiera w kodzie programu 2048-bitowe parametry DH.  Od
       wersji 5.18 te początkowe wartości parametrów DH są wymieniane na autogenerowane parametry
       tymczasowe.  Wygenerowanie parametrów DH może zająć nawet wiele minut.

       Alternatywnie parametry DH można umieścić w pliku razem z certyfikatem, co wyłącza
       generowanie parametrów tymczasowych:

           openssl dhparam 2048 >> stunnel.pem

PLIKI

       @sysconfdir@/stunnel/stunnel.conf
           plik konfiguracyjny programu

BŁĘDY

       Opcja execArgs oraz linia komend Win32 nie obsługuje cytowania.

ZOBACZ RÓWNIEŻ

       tcpd(8)
           biblioteka kontroli dostępu do usług internetowych

       inetd(8)
           'super-serwer' internetowy

       http://www.stunnel.org/
           strona domowa programu stunnel

       http://www.openssl.org/
           strona projektu OpenSSL

AUTOR

       Michał Trojnara
           <Michal.Trojnara@stunnel.org>