Provided by: stunnel4_4.21-1_i386 bug

NAZWA

       stunnel - uniwersalny tunel protokołu SSL

SKŁADNIA

       Unix:
           stunnel [<plik>] | -fd n | -help | -version | -sockets

       WIN32:
           stunnel [ [-install | -uninstall | -start | -stop ]
               [-quiet] [<plik>] ] | -help | -version | -sockets

OPIS

       Program stunnel został zaprojektowany do opakowywania w protokół SSL
       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 SSL
       poprzez bezpieczne kanały SSL.

       stunnel pozwala dodać funkcjonalność SSL 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

       -install (tylko NT/2000/XP)
           instaluj serwis NT

       -uninstall (tylko NT/2000/XP)
           odinstaluj serwis NT

       -start (tylko NT/2000/XP)
           uruchom serwis NT

       -stop (tylko NT/2000/XP)
           zatrzymaj serwis NT

       -quiet (tylko NT/2000/XP)
           nie wyświetlaj okienka informującego o pomyślnym zainstalowaniu lub
           odinstalowaniu

PLIK KONFIGURACYJNY

       Linia w pliku konfiguracyjnym może być:

       o   pusta (ignorowana)

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

       o   parą 'nazwa_opcji = wartość_opcji'

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

       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.

           W przypadku wykorzystania kontroli dostępu przy pomocy biblioteki
           libwrap (TCP wrappers) jej pliki konfiguracyjne (/etc/hosts.allow i
           /etc/hosts.deny) muszą zostać skopiowane do podkatalogu etc/
           umieszczonego wewnątrz katalogu podanego w opcji chroot.

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

           domyślnie: bez kompresji

       debug = poziom[.podsystem]
           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.  Opcja jest dostępna z
           biblioteką OpenSSL 0.9.5a lub nowszą.

       engine = auto | <identyfikator urządzenia>
           wybór sprzętowego urządzenia kryptograficznego

           domyślnie: bez wykorzystania urządzeń kryptograficznych

           Przykład wykorzystania w sekcji 'PRZYKŁADY'.

       engineCtrl = <command>[:<parameter>]
           konfiguracja urządzenia kryptograficznego

           Specjalne komendy "LOAD" i "INIT" pozwalają na załadowanie i
           inicjalizację modułu kryptograficznego urządzenia.

       foreground = yes | no (tylko Unix)
           tryb pierwszoplanowy

           Użycie tej opcji powoduje, że stunnel nie przechodzi w tło logując
           swoje komunikaty na konsolę zamiast przez syslog (o ile nie użyto
           opcji output).

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

           Użycie tej opcji zmienia domyślne zachowanie programu polegające na
           logowaniu swoich komunikatów poprzez syslog.

           Do przekierowania 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

           W wersjach biblioteki OpenSSL starszych niż 0.9.5a opcja ta określa
           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.

       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 = nazwa_serwisu
           użyj parametru jako nazwy serwisu

           Unix: nazwa serwisu dla biblioteki TCP Wrapper w trybie inetd.

           NT/2000/XP: nazwa serwisu NT w Panelu Sterowania.

           domyślnie: stunnel

       setgid = identyfikator_grupy (tylko Unix)
           grupa z której prawami pracował będzie stunnel

       setuid = identyfikator_użytkownika (tylko Unix)
           użytkownik, z którego prawami pracował będzie stunnel

       socket = a|l|r:option=value[:value]
           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:TCP_NODELAY=1
                   wyłącz algorytm Nagle'a na zdalnych
                   gniazdach
               socket = r:SO_OOBINLINE=1
                   umieść dane pozapasmowe (out-of-band)
                   bezpośrednio w strumieniu danych
                   wejściowych dla zdalnych gniazd
               socket = a:SO_REUSEADDR=0
                   zablokuj ponowne używanie portu
                   (domyślnie włączone)
               socket = a:SO_BINDTODEVICE=lo
                   przyjmuj połączenia wyłącznie na
                   interfejsie zwrotnym (ang. loopback)

       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 = [adres:]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 IP lokalnych interfejsów.

       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 verify.  Pliki z certyfikatami muszą
           posiadać specjalne nazwy XXXXXXXX.0, gdzie XXXXXXXX jest skrótem
           kryptograficznym reprezentacji DER nazwy podmiotu certyfikatu (4
           pierwsze bajty skrótu MD5 począwszy od najmniej znaczacego).

           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ę verify.

       cert = plik_pem
           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.  Certyfikat jest konieczny, aby używać programu w
           trybie serwera.  W trybie klienta certyfikat jest opcjonalny.

       ciphers = lista_szyfrów
           lista dozwolonych szyfrów SSL

           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

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

           domyślnie: no (tryb serwerowy)

       connect = [adres:]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 byc 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,
           jeżeli użyta została opcja verify.  Pliki z listami CRL muszą
           posiadać specjalne nazwy XXXXXXXX.0, gdzie XXXXXXXX jest skrótem
           listy CRL.

           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 opcję verify.

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

       engineNum = <numer urządzenia>
           wybierz urządzenie do odczyta klucza prywatnego

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

       exec = ścieżka_do_programu (tylko Unix)
           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.

       execargs = $0 $1 $2 ... (tylko Unix)
           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.

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

       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

           domyślnie: wartość opcji cert

       local = serwer
           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
           serwer OCSP do weryfikacji certyfikatów

       OCSPflag = flaga
           flaga serwera 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.

       options = opcje_SSL
           opcje biblioteki OpenSSL

           Parametrem jest nazwa opcji zgodnie z opisem w
           SSL_CTX_set_options(3ssl), ale bez przedrostka SSL_OP_.  Aby
           wyspecyfikować kilka opcji należy użyć options wielokrotnie.

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

               options = DONT_INSERT_EMPTY_FRAGMENTS

       protocol = protokół
           negocjuj SSL podanym protokołem aplikacyjnym

           aktualnie wspierane protokoły: cifs, connect, imap, nntp, pop3,
           smtp

       protocolAuthentication = uwierzytelnienie
           rodzaj uwierzytelnienia do negocjacji protokołu

           aktualnie wspierane: basic, NTLM

           Obecnie typ uwierzytelnienia ma zastosowanie wyłącznie w protokole
           'connect'.

           domyślnie: basic

       protocolHost = adres:port
           adres docelowy do negocjacji protokołu

       protocolPassword = hasło
           hasło do negocjacji protokołu

       protocolUsername = użytkownik
           nazwa użytkownika do negocjacji protokołu

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

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

           domyślnie: no

       session = przeterminowanie_pamięci_podręcznej_sesji
           czas w sekundach, po którym sesja SSL zostanie usunięta z pamięci
           podręcznej

       sslVersion = wersja
           wybierz wersję protokołu SSL

           Dozwolone opcje: all, SSLv2, SSLv3, TLSv1

       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 = yes | no (tylko Unix)
           tryb przezroczystego proxy

           Przepisz adres, aby nawiązywane połączenie wydawało się pochodzić
           bezpośrednio od klienta, a nie od programu stunnel.  Opcja działa
           tylko w trybie lokalnym (opcja exec) przez załadowanie przy pomocy
           LD_PRELOAD biblioteki env.so, albo w trybie zdalnym (opcja connect)
           na systemie Linux 2.2 z włączoną opcją transparent proxy.

       verify = poziom
           weryfikuj certyfikat drugiej strony połączenia

               poziom 1 - weryfikuj, jeżeli został
                   przedstawiony
               poziom 2 - weryfikuj z zainstalowanym
                   certyfikatem Centrum Certyfikacji
               poziom 3 - weryfikuj z lokalnie
                   zainstalowanym certyfikatem drugiej strony
               domyślnie - nie weryfikuj

ZWRACANA WARTOŚĆ

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

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

       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_usugi].

           exec = /usr/sbin/imapd
           execargs = imapd

       Przykładowa konfiguracja umożliwiająca odczytanie klucza prywatnego z
       urządzenia zgodnego z OpenSC

           engine=dynamic
           engineCtrl=SO_PATH:/usr/lib/opensc/engine_pkcs11.so
           engineCtrl=ID:pkcs11
           engineCtrl=LIST_ADD:1
           engineCtrl=LOAD
           engineCtrl=MODULE_PATH:/usr/lib/pkcs11/opensc-pkcs11.so
           engineCtrl=INIT

           [service]
           engineNum=1
           key=id_45

PLIKI

       stunnel.conf
           plik konfiguracyjny programu

       stunnel.pem
           certyfikat i klucz prywatny

BŁĘDY

       Opcja execargs nie obsługuje cytowania.

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

NOTKI

       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_usugi]), ponieważ konfiguracja taka
       pozwala na nawiązanie tylko jednego połączenia.  Wszystkie OPCJE USUG
       powinny być umieszczone razem z opcjami globalnymi.  Przykład takiej
       konfiguracji znajduje się w sekcji PRZYKADY.

       CERTYFIKATY

       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.  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ół 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:

       o   Zawartość pliku podanego w opcji RNDfile.

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

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

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

       o   Zawartość ekranu w systemie Windows.

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

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

       o   Urządzenie /dev/urandom.

       Współczesne (>=0.9.5a) wersje biblioteki OpenSSL automatycznie
       zaprzestają ładowania kolejnych danych w momencie uzyskania
       wystarczającej ilości entropii.  Wcześniejsze wersje biblioteki
       wykorzystają wszystkie powyższe źródła, gdyż nie istnieje tam funkcja
       pozwalająca określić, czy uzyskano już wystarczająco dużo danych.

       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.

ZOBACZ RÓWNIEŻ

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

       inetd(8)
           'super-serwer' internetowy

       http://stunnel.mirt.net/
           strona domowa programu stunnel

       http://www.stunnel.org/
           najczęściej zadawane pytania na temat programu stunnel

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

AUTOR

       Michał Trojnara
           <Michal.Trojnara@mirt.net>