| =head1 NAZWA |
| |
| =encoding utf8 |
| |
| stunnel - uniwersalny tunel protokołu SSL |
| |
| |
| =head1 SKŁADNIA |
| |
| =over 4 |
| |
| =item B<Unix:> |
| |
| B<stunnel> [S<PLIK>] | S<-fd N> | S<-help> | S<-version> | S<-sockets> | S<-options> |
| |
| =item B<WIN32:> |
| |
| B<stunnel> [ [ S<-install> | S<-uninstall> | S<-start> | S<-stop> | |
| S<-reload> | S<-reopen> | S<-exit> ] [S<-quiet>] [S<PLIK>] ] | |
| S<-help> | S<-version> | S<-sockets> | S<-options> |
| |
| =back |
| |
| |
| =head1 OPIS |
| |
| Program B<stunnel> został zaprojektowany do opakowywania w protokół I<SSL> |
| połączeń pomiędzy zdalnymi klientami a lokalnymi lub zdalnymi serwerami. |
| Przez serwer lokalny rozumiana jest aplikacja przeznaczona do uruchamiania |
| przy pomocy I<inetd>. |
| Stunnel pozwala na proste zestawienie komunikacji serwerów nie posiadających |
| funkcjonalności I<SSL> poprzez bezpieczne kanały I<SSL>. |
| |
| B<stunnel> pozwala dodać funkcjonalność I<SSL> do powszechnie stosowanych |
| demonów I<inetd>, np. I<pop3> lub I<imap>, do samodzielnych demonów, |
| np. I<nntp>, I<smtp> lub I<http>, a nawet tunelować ppp poprzez gniazda sieciowe |
| bez zmian w kodzie źródłowym. |
| |
| |
| =head1 OPCJE |
| |
| =over 4 |
| |
| =item B<PLIK> |
| |
| użyj podanego pliku konfiguracyjnego |
| |
| =item B<-fd N> (tylko Unix) |
| |
| wczytaj konfigurację z podanego deskryptora pliku |
| |
| =item B<-help> |
| |
| drukuj listę wspieranych opcji |
| |
| =item B<-version> |
| |
| drukuj wersję programu i domyślne wartości parametrów |
| |
| =item B<-sockets> |
| |
| drukuj domyślne opcje gniazd |
| |
| =item B<-options> |
| |
| drukuj wspierane opcje SSL |
| |
| =item B<-install> (tylko Windows NT lub nowszy) |
| |
| instaluj serwis NT |
| |
| =item B<-uninstall> (tylko Windows NT lub nowszy) |
| |
| odinstaluj serwis NT |
| |
| =item B<-start> (tylko Windows NT lub nowszy) |
| |
| uruchom serwis NT |
| |
| =item B<-stop> (tylko Windows NT lub nowszy) |
| |
| zatrzymaj serwis NT |
| |
| =item B<-reload> (tylko Windows NT lub nowszy) |
| |
| przeładuj plik konfiguracyjny uruchomionego serwisu NT |
| |
| =item B<-reopen> (tylko Windows NT lub nowszy) |
| |
| otwórz ponownie log uruchomionego serwisu NT |
| |
| =item B<-exit> (tylko Win32) |
| |
| zatrzymaj uruchomiony program |
| |
| =item B<-quiet> (tylko Win32) |
| |
| nie wyświetlaj okienek z komunikatami |
| |
| =back |
| |
| |
| =head1 PLIK KONFIGURACYJNY |
| |
| Linia w pliku konfiguracyjnym może być: |
| |
| =over 4 |
| |
| =item * |
| |
| pusta (ignorowana) |
| |
| =item * |
| |
| komentarzem rozpoczynającym się znakiem ';' (ignorowana) |
| |
| =item * |
| |
| parą 'nazwa_opcji = wartość_opcji' |
| |
| =item * |
| |
| tekstem '[nazwa_usługi]' wskazującym początek definicji usługi |
| |
| =back |
| |
| Parametr adres może być: |
| |
| =over 4 |
| |
| =item * |
| |
| numerem portu |
| |
| =item * |
| |
| oddzieloną średnikiem parą adresu (IPv4, IPv6, lub nazwą domenową) i numeru portu |
| |
| =item * |
| |
| ścieżką do gniazda Unix (tylko Unix) |
| |
| =back |
| |
| =head2 OPCJE GLOBALNE |
| |
| =over 4 |
| |
| =item B<chroot> = KATALOG (tylko Unix) |
| |
| katalog roboczego korzenia systemu plików |
| |
| Opcja określa katalog, w którym uwięziony zostanie proces programu |
| B<stunnel> tuż po jego inicjalizacji, a przed rozpoczęciem odbierania |
| połączeń. Ścieżki podane w opcjach I<CApath>, I<CRLpath>, I<pid> |
| oraz I<exec> muszą być umieszczone wewnątrz katalogu podanego w opcji |
| I<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: |
| |
| =over 4 |
| |
| =item * |
| |
| opóźnione rozwinięcie adresów DNS typowo wymaga /etc/nsswitch.conf i /etc/resolv.conf |
| |
| =item * |
| |
| lokalizacja strefy czasowej w logach wymaga pliku /etc/timezone |
| |
| =item * |
| |
| niektóre inne pliki mogą potrzebować plików urządzeń, np. /dev/zero lub /dev/null |
| |
| =back |
| |
| =item B<compression> = deflate | zlib |
| |
| wybór algorytmu kompresji przesyłanych danych |
| |
| domyślnie: bez kompresji |
| |
| Algorytm deflate jest standardową metodą kompresji zgodnie z RFC 1951. |
| |
| Kompresja zlib zaimplementowana w B<OpenSSL 0.9.8> i nowszych nie jest |
| kompatybilna implementacją B<OpenSSL 0.9.7>. |
| |
| =item B<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 |
| I<debug = debug> lub I<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. |
| |
| =item B<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 |
| B<OpenSSL>. Opcja jest dostępna z biblioteką B<OpenSSL 0.9.5a> lub nowszą. |
| |
| =item B<engine> = auto | IDENTYFIKATOR_URZĄDZENIA |
| |
| wybór sprzętowego urządzenia kryptograficznego |
| |
| domyślnie: bez wykorzystania urządzeń kryptograficznych |
| |
| 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 |
| |
| =item B<engineCtrl> = KOMENDA[:PARAMETR] |
| |
| konfiguracja urządzenia kryptograficznego |
| |
| Specjalne komendy "LOAD" i "INIT" pozwalają na załadowanie i inicjalizację |
| modułu kryptograficznego urządzenia. |
| |
| =item B<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. |
| |
| =item B<fips> = yes | no |
| |
| tryb FIPS 140-2 |
| |
| Opcja pozwala wyłączyć wejście w tryb FIPS, jeśli B<stunnel> został |
| skompilowany ze wsparciem dla FIPS 140-2. |
| |
| domyślnie: no (od wersji 5.00) |
| |
| =item B<foreground> = yes | no (tylko Unix) |
| |
| tryb pierwszoplanowy |
| |
| Użycie tej opcji powoduje, że B<stunnel> nie przechodzi w tło logując |
| swoje komunikaty na konsolę zamiast przez I<syslog> (o ile nie użyto |
| opcji I<output>). |
| |
| =item B<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. |
| |
| =item B<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. |
| |
| =item B<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. |
| |
| =item B<log> = append | overwrite |
| |
| log file handling |
| |
| This option allows to choose whether the log file (specified with the I<output> |
| option) is appended or overwritten when opened or re-opened. |
| |
| domyślnie: append |
| |
| =item B<output> = PLIK |
| |
| plik, do którego dopisane zostaną logi |
| |
| Użycie tej opcji powoduje dopisanie logów do podanego pliku. |
| |
| 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. |
| |
| =item B<pid> = PLIK (tylko Unix) |
| |
| położenie pliku z numerem procesu |
| |
| Jeżeli argument jest pusty plik nie zostanie stworzony. |
| |
| Jeżeli zdefiniowano katalog I<chroot>, to ścieżka do I<pid> jest określona |
| względem tego katalogu. |
| |
| =item B<RNDbytes> = LICZBA_BAJTÓW |
| |
| liczba bajtów do zainicjowania generatora pseudolosowego |
| |
| W wersjach biblioteki B<OpenSSL> starszych niż B<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. |
| |
| =item B<RNDfile> = PLIK |
| |
| ścieżka do pliku zawierającego losowe dane |
| |
| Biblioteka B<OpenSSL> użyje danych z tego pliku do zainicjowania |
| generatora pseudolosowego. |
| |
| =item B<RNDoverwrite> = yes | no |
| |
| nadpisz plik nowymi wartościami pseudolosowymi |
| |
| domyślnie: yes (nadpisz) |
| |
| =item B<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 I<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 |
| |
| =item B<setgid> = IDENTYFIKATOR_GRUPY (tylko Unix) |
| |
| grupa z której prawami pracował będzie B<stunnel> |
| |
| =item B<setuid> = IDENTYFIKATOR_UŻYTKOWNIKA (tylko Unix) |
| |
| użytkownik, z którego prawami pracował będzie B<stunnel> |
| |
| =item B<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) |
| |
| =item B<syslog> = yes | no (tylko Unix) |
| |
| włącz logowanie poprzez mechanizm syslog |
| |
| domyślnie: yes (włącz) |
| |
| =item B<taskbar> = yes | no (tylko WIN32) |
| |
| włącz ikonkę w prawym dolnym rogu ekranu |
| |
| domyślnie: yes (włącz) |
| |
| =back |
| |
| |
| =head2 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 B<stunnel> ma zostać użyty w trybie I<inetd>, gdzie za odebranie |
| połączenia odpowiada osobny program (zwykle I<inetd>, I<xinetd> |
| lub I<tcpserver>), należy przeczytać sekcję I<TRYB INETD> poniżej. |
| |
| =over 4 |
| |
| =item B<accept> = [HOST:]PORT |
| |
| nasłuchuje na połączenia na podanym adresie i porcie |
| |
| Jeżeli nie został podany adres, B<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 |
| |
| =item B<CApath> = KATALOG_CA |
| |
| katalog Centrum Certyfikacji |
| |
| Opcja określa katalog, w którym B<stunnel> będzie szukał certyfikatów, |
| jeżeli użyta została opcja I<verify>. 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 B<OpenSSL 1.0.0>. |
| Należy wykonać c_rehash przy zmianie B<OpenSSL 0.x.x> na B<1.x.x>. |
| |
| Jeżeli zdefiniowano katalog I<chroot>, to ścieżka do I<CApath> jest określona |
| względem tego katalogu. |
| |
| =item B<CAfile> = PLIK_CA |
| |
| plik Centrum Certyfikacji |
| |
| Opcja pozwala określić położenie pliku zawierającego certyfikaty używane |
| przez opcję I<verify>. |
| |
| =item B<cert> = PLIK_PEM |
| |
| plik z łańcuchem certyfikatów |
| |
| Opcja określa położenie pliku zawierającego certyfikaty używane przez |
| program B<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. |
| |
| =item B<checkEmail> = EMAIL |
| |
| adres email przedstawionego certyfikatu |
| |
| Pojedyncza sekcja może zawierać wiele wystąpień opcji B<checkEmail>. |
| Certyfikaty są akceptowane, jeżeli sekcja nie zawiera opcji B<checkEmail>, |
| albo adres email przedstawionego certyfikatu pasuje do jednego z adresów |
| email określonych przy pomocy B<checkEmail>. |
| |
| =item B<checkHost> = NAZWA_SERWERA |
| |
| nazwa serwera przedstawionego certyfikatu |
| |
| Pojedyncza sekcja może zawierać wiele wystąpień opcji B<checkHost>. |
| Certyfikaty są akceptowane, jeżeli sekcja nie zawiera opcji B<checkHost>, albo |
| nazwa serwera przedstawionego certyfikatu pasuje do jednego nazw określonych |
| przy pomocy B<checkHost>. |
| |
| =item B<checkIP> = IP |
| |
| adres IP przedstawionego certyfikatu |
| |
| Pojedyncza sekcja może zawierać wiele wystąpień opcji B<checkIP>. Certyfikaty |
| są akceptowane, jeżeli sekcja nie zawiera opcji B<checkIP>, albo adres IP |
| przedstawionego certyfikatu pasuje do jednego z adresów IP określonych przy |
| pomocy B<checkIP>. |
| |
| =item B<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 |
| |
| =item B<client> = yes | no |
| |
| tryb kliencki (zdalna usługa używa SSL) |
| |
| domyślnie: no (tryb serwerowy) |
| |
| =item B<connect> = [HOST:]PORT |
| |
| połącz się ze zdalnym serwerem na podany port |
| |
| Jeżeli nie został podany adres, B<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. |
| |
| =item B<CRLpath> = KATALOG_CRL |
| |
| katalog List Odwołanych Certyfikatów (CRL) |
| |
| Opcja określa katalog, w którym B<stunnel> będzie szukał list CRL, |
| jeżeli użyta została opcja I<verify>. Pliki z listami CRL muszą |
| posiadać specjalne nazwy XXXXXXXX.r0, gdzie XXXXXXXX jest skrótem |
| listy CRL. |
| |
| Funkcja skrótu została zmieniona B<OpenSSL 1.0.0>. |
| Należy wykonać c_rehash przy zmianie B<OpenSSL 0.x.x> na B<1.x.x>. |
| |
| Jeżeli zdefiniowano katalog I<chroot>, to ścieżka do I<CRLpath> jest określona |
| względem tego katalogu. |
| |
| =item B<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ę I<verify>. |
| |
| =item B<curve> = NID |
| |
| krzywa dla ECDH |
| |
| Listę dostępnych krzywych można uzyskać poleceniem: |
| |
| openssl ecparam -list_curves |
| |
| domyślnie: prime256v1 |
| |
| =item B<logId> = TYP |
| |
| typ identyfikatora połączenia klienta |
| |
| Identyfikator ten pozwala rozróżnić wpisy w logu wygenerowane dla |
| poszczególnych połączeń. |
| |
| Aktualnie wspierane typy: |
| |
| =over 4 |
| |
| =item I<sequential> |
| |
| Kolejny numer połączenia jest unikalny jedynie w obrębie pojedynczej instancji |
| programu B<stunnel>, ale bardzo krótki. Jest on szczególnie użytczny przy |
| ręcznej analizie logów. |
| |
| =item I<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. |
| |
| =item I<thread> |
| |
| Identyfikator wątku systemu operacyjnego nie jest ani unikalny (nawet w obrębie |
| pojedynczej instancji programu B<stunnel>), ani krótki. Jest on szczególnie |
| użyteczny przy diagnozowaniu problemów z oprogramowaniem lub konfiguracją. |
| |
| =back |
| |
| domyślnie: sequential |
| |
| =item B<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 |
| I<debug = debug> lub I<debug = 7>. Domyślnym poziomem jest notice (5). |
| |
| =item B<delay> = yes | no |
| |
| opóźnij rozwinięcie adresu DNS podanego w opcji I<connect> |
| |
| Opcja jest przydatna przy dynamicznym DNS, albo gdy usługa DNS nie jest |
| dostępna przy starcie programu B<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 I<connect> dla danej |
| usługi. |
| |
| Opóźnione rozwijanie adresu automatycznie aktywuje I<failover = prio>. |
| |
| default: no |
| |
| =item B<engineId> = NUMER_URZĄDZENIA |
| |
| wybierz urządzenie dla usługi |
| |
| =item B<engineNum> = NUMER_URZĄDZENIA |
| |
| wybierz urządzenie dla usługi |
| |
| Urządzenia są numerowane od 1 w górę. |
| |
| =item B<exec> = ŚCIEŻKA_DO_PROGRAMU |
| |
| wykonaj lokalny program przystosowany do pracy z superdemonem inetd |
| |
| Jeżeli zdefiniowano katalog I<chroot>, to ścieżka do I<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. |
| |
| =item B<execArgs> = $0 $1 $2 ... |
| |
| argumenty do opcji I<exec> włącznie z nazwą programu ($0) |
| |
| Cytowanie nie jest wspierane w obecnej wersji programu. |
| Argumenty są rozdzielone dowolną liczbą białych znaków. |
| |
| =item B<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 |
| |
| =item B<ident> = NAZWA_UŻYTKOWNIKA |
| |
| weryfikuj nazwę zdalnego użytkownika korzystając z protokołu IDENT (RFC 1413) |
| |
| =item B<include> = KATALOG |
| |
| wczytaj fragmenty plików konfiguracyjnych z podanego katalogu |
| |
| Pliki są wczytywane w rosnącej kolejności alfabetycznej ich nazw. |
| |
| =item B<key> = PLIK_KLUCZA |
| |
| klucz prywatny do certyfikatu podanego w opcji I<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 I<cert> |
| |
| =item B<libwrap> = yes | no |
| |
| włącz lub wyłącz korzystanie z /etc/hosts.allow i /etc/hosts.deny. |
| |
| domyślnie: no (od wersji 5.00) |
| |
| =item B<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. |
| |
| =item B<sni> = USŁUGA:WZORZEC_NAZWY_SERWERA (tryb serwera) |
| |
| Użyj usługi jako podrzędnej (virtualnego serwera) dla rozszerzenia TLS Server |
| Name Indication (RFC 3546). |
| |
| I<nazwa_usługi> wskazuje usługę nadrzędną, która odbiera połączenia od klientów |
| przy pomocy opcji I<accept>. I<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 I<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 I<connect> usługi podrzędnej jest ignorowana w połączeniu z opcją |
| I<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 I<sni> jest dostępna począwszy od B<OpenSSL 1.0.0>. |
| |
| =item B<sni> = HOST (tryb klienta) |
| |
| Użyj parametru jako wartości rozszerzenia TLS Server Name Indication |
| (RFC 3546). |
| |
| Opcja I<sni> jest dostępna począwszy od B<OpenSSL 1.0.0>. |
| |
| =item B<OCSP> = URL |
| |
| serwer OCSP do weryfikacji certyfikatów |
| |
| =item B<OCSPaia> = yes | no |
| |
| weryfikuj certyfikaty przy użyciu respondertów AIA |
| |
| Opcja I<OCSPaia> pozwala na weryfikowanie certyfikatów przy pomocy listy URLi |
| serwerów OCSP przesłanych w rozszerzeniach AIA (Authority Information Access). |
| |
| =item B<OCSPflag> = FLAGA_OCSP |
| |
| 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ć I<OCSPflag> wielokrotnie. |
| |
| =item B<options> = OPCJE_SSL |
| |
| opcje biblioteki B<OpenSSL> |
| |
| Parametrem jest nazwa opcji zgodnie z opisem w I<SSL_CTX_set_options(3ssl)>, |
| ale bez przedrostka I<SSL_OP_>. |
| I<stunnel -options> wyświetla opcje dozwolone w aktualnej kombinacji |
| programu I<stunnel> i biblioteki I<OpenSSL>. |
| |
| Aby wyspecyfikować kilka opcji należy użyć I<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 SSL |
| w programie Eudora, można użyć opcji: |
| |
| options = DONT_INSERT_EMPTY_FRAGMENTS |
| |
| domyślnie: |
| |
| options = NO_SSLv2 |
| options = NO_SSLv3 |
| |
| =item B<protocol> = PROTOKÓŁ |
| |
| negocjuj SSL podanym protokołem aplikacyjnym |
| |
| Opcja ta włącza wstępną negocjację szyfrowania SSL dla wybranego protokołu |
| aplikacyjnego. |
| Opcji I<protocol> nie należy używać z szyfrowaniem SSL na osobnym porcie. |
| |
| Aktualnie wspierane protokoły: |
| |
| =over 4 |
| |
| =item I<cifs> |
| |
| Unieudokumentowane rozszerzenie protokołu CIFS wspierane przez serwer Samba. |
| Wsparcie dla tego rozrzeczenia zostało zarzucone w wersji 3.0.0 serwera Samba. |
| |
| =item I<connect> |
| |
| Negocjacja RFC 2817 - I<Upgrading to TLS Within HTTP/1.1>, rozdział 5.2 - I<Requesting a Tunnel with CONNECT> |
| |
| Ten protokół jest wspierany wyłącznie w trybie klienckim. |
| |
| =item I<imap> |
| |
| Negocjacja RFC 2595 - I<Using TLS with IMAP, POP3 and ACAP> |
| |
| =item I<nntp> |
| |
| Negocjacja RFC 4642 - I<Using Transport Layer Security (TLS) with Network News Transfer Protocol (NNTP)> |
| |
| Ten protokół jest wspierany wyłącznie w trybie klienckim. |
| |
| =item I<pgsql> |
| |
| Negocjacja http://www.postgresql.org/docs/8.3/static/protocol-flow.html#AEN73982 |
| |
| =item I<pop3> |
| |
| Negocjacja RFC 2449 - I<POP3 Extension Mechanism> |
| |
| =item I<proxy> |
| |
| Przekazywanie adresu IP haproxy http://haproxy.1wt.eu/download/1.5/doc/proxy-protocol.txt |
| |
| =item I<smtp> |
| |
| Negocjacja RFC 2487 - I<SMTP Service Extension for Secure SMTP over TLS> |
| |
| =item I<socks> |
| |
| Wspierany jest protokół SOCKS w wersjach 4, 4a i 5. |
| Protokół SOCKS enkapsulowany jest w protokole SSL/TLS, więc adres serwera |
| docelowego nie jest widoczny dla napastnika przechwytującego ruch sieciowy. |
| |
| F<http://www.openssh.com/txt/socks4.protocol> |
| |
| F<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. |
| |
| =back |
| |
| =item B<protocolAuthentication> = basic | ntlm |
| |
| rodzaj uwierzytelnienia do negocjacji protokołu |
| |
| Obecnie typ uwierzytelnienia ma zastosowanie wyłącznie w protokole 'connect'. |
| |
| domyślnie: basic |
| |
| =item B<protocolHost> = HOST:PORT |
| |
| adres docelowy do negocjacji protokołu |
| |
| I<protocolHost> 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 B<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'. |
| |
| =item B<protocolPassword> = HASŁO |
| |
| hasło do negocjacji protokołu |
| |
| =item B<protocolUsername> = UŻYTKOWNIK |
| |
| nazwa użytkownika do negocjacji protokołu |
| |
| =item B<PSKidentity> = TOŻSAMOŚĆ |
| |
| tożsamość klienta PSK |
| |
| I<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 I<PSKsecrets> |
| |
| =item B<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. |
| |
| =item B<pty> = yes | no (tylko Unix) |
| |
| alokuj pseudoterminal dla programu uruchamianego w opcji 'exec' |
| |
| =item B<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ą I<redirect>. |
| |
| =item B<renegotiation> = yes | no |
| |
| pozwalaj na renegocjację SSL |
| |
| Wśród zastosowań renegocjacji SSL są niektóre scenariusze uwierzytelnienia, |
| oraz renegocjacja 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 SSL nie zebezpiecza w pełni |
| przed opisanym problemem. |
| |
| domyślnie: yes (o ile wspierane przez B<OpenSSL>) |
| |
| =item B<reset> = yes | no |
| |
| sygnalizuj wystąpienie błędu przy pomocy flagi TCP RST |
| |
| Opcja nie jest wspierana na niektórych platformach. |
| |
| domyślnie: yes |
| |
| =item B<retry> = yes | no |
| |
| połącz ponownie sekcję connect+exec po rozłączeniu |
| |
| domyślnie: no |
| |
| =item B<sessionCacheSize> = LICZBA_POZYCJI_CACHE |
| |
| rozmiar pamięci podręcznej sesji SSL |
| |
| 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. |
| |
| =item B<sessionCacheTimeout> = LICZBA_SEKUND |
| |
| przeterminowanie pamięci podręcznej sesji SSL |
| |
| Parametr określa czas w sekundach, po którym sesja SSL zostanie usunięta z |
| pamięci podręcznej. |
| |
| =item B<sessiond> = HOST:PORT |
| |
| adres sessiond - servera cache sesji SSL |
| |
| =item B<sslVersion> = WERSJA_SSL |
| |
| wersja protokołu SSL |
| |
| 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 B<options>. |
| |
| =item B<stack> = LICZBA_BAJTÓW (z wyjątkiem modelu FORK) |
| |
| rozmiar stosu procesora wątku |
| |
| =item B<TIMEOUTbusy> = LICZBA_SEKUND |
| |
| czas oczekiwania na spodziewane dane |
| |
| =item B<TIMEOUTclose> = LICZBA_SEKUND |
| |
| czas oczekiwania na close_notify (ustaw na 0, jeżeli klientem jest MSIE) |
| |
| =item B<TIMEOUTconnect> = LICZBA_SEKUND |
| |
| czas oczekiwania na nawiązanie połączenia |
| |
| =item B<TIMEOUTidle> = LICZBA_SEKUND |
| |
| maksymalny czas utrzymywania bezczynnego połączenia |
| |
| =item B<transparent> = none | source | destination | both (tylko Unix) |
| |
| tryb przezroczystego proxy na wspieranych platformach |
| |
| Wspierane opcje: |
| |
| =over 4 |
| |
| =item B<none> |
| |
| Zablokuj wsparcie dla przezroczystago proxy. Jest to wartość domyślna. |
| |
| =item B<source> |
| |
| Przepisz adres, aby nawiązywane połączenie wydawało się pochodzić |
| bezpośrednio od klienta, a nie od programu B<stunnel>. |
| |
| Opcja jest aktualnie obsługiwana w: |
| |
| =over 4 |
| |
| =item Trybie zdalnym (opcja I<connect>) w systemie I<Linux E<gt>=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 B<stunnel> był wykonywany jako root i bez opcji I<setuid>. |
| |
| =item Trybie zdalnym (opcja I<connect>) w systemie I<Linux 2.2.x> |
| |
| Konfiguracja ta wymaga skompilowania jądra z opcją I<transparent proxy>. |
| Docelowa usługa musi być umieszczona na osobnej maszynie, do której routing |
| kierowany jest poprzez serwer B<stunnela>. |
| |
| Dodatkowo B<stunnel> powinien być wykonywany jako root i bez opcji I<setuid>. |
| |
| =item Trybie zdalnym (opcja I<connect>) w systemie I<FreeBSD E<gt>=8.0> |
| |
| Konfiguracja ta wymaga skonfigurowania firewalla i routingu. |
| B<stunnel> musi być wykonywany jako root i bez opcji I<setuid>. |
| |
| =item Trybie lokalnym (opcja I<exec>) |
| |
| Konfiguracja ta jest realizowana przy pomocy biblioteki I<libstunnel.so>. |
| Do załadowania biblioteki wykorzystywana jest zmienna środowiskowa _RLD_LIST na |
| platformie Tru64 lub LD_PRELOAD na innych platformach. |
| |
| =back |
| |
| =item I<destination> |
| |
| Oryginalny adres docelowy jest używany zamiast opcji I<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. |
| |
| =item I<both> |
| |
| Użyj przezroczystego proxy zarówno dla adresu źródłowego jak i docelowego. |
| |
| =back |
| |
| Dla zapewnienia kompatybilności z wcześniejszymim wersjami wspierane są dwie |
| dodatkowe opcje: |
| |
| =over 4 |
| |
| =item I<yes> |
| |
| Opcja została przemianowana na I<source>. |
| |
| =item I<no> |
| |
| Opcja została przemianowana na I<none>. |
| |
| =back |
| |
| =item B<verify> = POZIOM |
| |
| weryfikuj certyfikat drugiej strony połączenia |
| |
| =over 4 |
| |
| =item I<poziom 0> |
| |
| zarządaj certyfikatu i zignoruj go |
| |
| =item I<poziom 1> |
| |
| weryfikuj, jeżeli został przedstawiony |
| |
| =item I<poziom 2> |
| |
| weryfikuj z zainstalowanym certyfikatem Centrum Certyfikacji |
| |
| =item I<poziom 3> |
| |
| weryfikuj z lokalnie zainstalowanym certyfikatem drugiej strony |
| |
| =item I<poziom 4> |
| |
| weryfikuj z certyfikatem drugiej strony ignorując łańcuch CA |
| |
| =item I<domyślnie> |
| |
| nie weryfikuj |
| |
| =back |
| |
| =back |
| |
| |
| =head1 ZWRACANA WARTOŚĆ |
| |
| B<stunnel> zwraca zero w przypadku sukcesu, lub wartość niezerową |
| w przypadku błędu. |
| |
| |
| =head1 SIGNAŁY |
| |
| Następujące sygnały mogą być użyte do sterowania programem w systemie Unix: |
| |
| =over 4 |
| |
| =item SIGHUP |
| |
| Załaduj ponownie plik konfiguracyjny. |
| |
| Niektóre globalne opcje nie będą przeładowane: |
| |
| =over 4 |
| |
| =item * |
| |
| chroot |
| |
| =item * |
| |
| foreground |
| |
| =item * |
| |
| pid |
| |
| =item * |
| |
| setgid |
| |
| =item * |
| |
| setuid |
| |
| =back |
| |
| Jeżeli wykorzystywana jest opcja 'setuid' B<stunnel> nie będzie mógł załadować |
| ponownie konfiguracji wykorzystującej uprzywilejowane (<1024) porty. |
| |
| Jeżeli wykorzystywana jest opcja 'chroot' B<stunnel> będzie szukał wszystkich |
| potrzebnych plików (łącznie z plikiem konfiguracyjnym, certyfikatami, logiem i |
| plikiem pid) wewnątrz katalogu wskazanego przez 'chroot'. |
| |
| =item SIGUSR1 |
| |
| Zamknij i otwórz ponownie log. |
| Funkcja ta może zostać użyta w skrypcie rotującym log programu B<stunnel>. |
| |
| =item SIGTERM, SIGQUIT, SIGINT |
| |
| Zakończ działanie programu. |
| |
| =back |
| |
| Skutek wysłania innych sygnałów jest niezdefiniowany. |
| |
| |
| =head1 PRZYKŁADY |
| |
| Szyfrowanie połączeń do lokalnego serwera I<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 |
| I<imapd> przez SSL 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 I<pppd> B<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 B<stunnel> w trybie I<inetd>. Warto zauważyć, że w pliku |
| konfiguracyjnym nie ma sekcji I<[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 |
| verify = 4 |
| 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/ |
| |
| =head1 NOTKI |
| |
| =head2 OGRANICZENIA |
| |
| B<stunnel> nie może być używany do szyfrowania protokołu I<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 I<SSL>. |
| |
| =head2 TRYB INETD (tylko Unix) |
| |
| W większości zastosowań B<stunnel> samodzielnie nasłuchuje na porcie |
| podanym w pliku konfiguracyjnym i tworzy połączenie z innym portem |
| podanym w opcji I<connect> lub nowym programem podanym w opcji I<exec>. |
| Niektórzy wolą jednak wykorzystywać oddzielny program, który odbiera |
| połączenia, po czym uruchamia program B<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 @bindir@/stunnel |
| stunnel @sysconfdir@/stunnel/imaps.conf |
| |
| Ponieważ w takich przypadkach połączenie na zdefiniowanym porcie |
| (tutaj I<imaps>) nawiązuje osobny program (tutaj I<inetd>), B<stunnel> |
| nie może używać opcji I<accept>. W pliku konfiguracyjnym nie może |
| być również zdefiniowana żadna usługa (I<[nazwa_usługi]>), ponieważ |
| konfiguracja taka pozwala na nawiązanie tylko jednego połączenia. |
| Wszystkie I<OPCJE USŁUG> powinny być umieszczone razem z opcjami |
| globalnymi. Przykład takiej konfiguracji znajduje się w sekcji |
| I<PRZYKŁADY>. |
| |
| =head2 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 B<OpenSSL>. Więcej informacji na temat generowania |
| certyfikatów można znaleźć na umieszczonych poniżej stronach. |
| |
| Istotną kwestią jest kolejność zawartości pliku I<.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] |
| |
| =head2 LOSOWOŚĆ |
| |
| B<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: |
| |
| =over 4 |
| |
| =item * |
| |
| Zawartość pliku podanego w opcji I<RNDfile>. |
| |
| =item * |
| |
| Zawartość pliku o nazwie określonej przez zmienną środowiskową |
| RANDFILE, o ile jest ona ustawiona. |
| |
| =item * |
| |
| Plik .rnd umieszczony w katalogu domowym użytkownika, |
| jeżeli zmienna RANDFILE nie jest ustawiona. |
| |
| =item * |
| |
| Plik podany w opcji '--with-random' w czasie konfiguracji programu. |
| |
| =item * |
| |
| Zawartość ekranu w systemie Windows. |
| |
| =item * |
| |
| Gniazdo egd, jeżeli użyta została opcja I<EGD>. |
| |
| =item * |
| |
| Gniazdo egd podane w opcji '--with-egd-socket' w czasie konfiguracji |
| programu. |
| |
| =item * |
| |
| Urządzenie /dev/urandom. |
| |
| =back |
| |
| Współczesne (B<0.9.5a> lub nowsze) wersje biblioteki B<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 I<RNDfile>. |
| |
| Plik I<RNDfile> powinien zawierać dane losowe -- również w tym sensie, |
| że powinny być one inne przy każdym uruchomieniu programu B<stunnel>. |
| O ile nie użyta została opcja I<RNDoverwrite> jest to robione |
| automatycznie. Do ręcznego uzyskania takiego pliku użyteczna |
| może być komenda I<openssl rand> dostarczana ze współczesnymi |
| wersjami pakietu B<OpenSSL>. |
| |
| Jeszcze jedna istotna informacja -- jeżeli dostępne jest urządzenie |
| I</dev/urandom> biblioteka B<OpenSSL> ma zwyczaj zasilania nim PRNG w trakcie |
| sprawdzania stanu generatora. W systemach z I</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 B<OpenSSL>, a nie programu |
| B<stunnel>. |
| |
| =head2 PARAMETRY DH |
| |
| Począwszy od wersji 4.40 B<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 |
| |
| |
| =head1 PLIKI |
| |
| =over 4 |
| |
| =item F<@sysconfdir@/stunnel/stunnel.conf> |
| |
| plik konfiguracyjny programu |
| |
| =back |
| |
| |
| =head1 BŁĘDY |
| |
| Opcja I<execArgs> oraz linia komend Win32 nie obsługuje cytowania. |
| |
| |
| =head1 ZOBACZ RÓWNIEŻ |
| |
| =over 4 |
| |
| =item L<tcpd(8)> |
| |
| biblioteka kontroli dostępu do usług internetowych |
| |
| =item L<inetd(8)> |
| |
| 'super-serwer' internetowy |
| |
| =item F<http://www.stunnel.org/> |
| |
| strona domowa programu B<stunnel> |
| |
| =item F<http://www.openssl.org/> |
| |
| strona projektu B<OpenSSL> |
| |
| =back |
| |
| |
| =head1 AUTOR |
| |
| =over 4 |
| |
| =item Michał Trojnara |
| |
| <F<Michal.Trojnara@mirt.net>> |
| |
| =back |
| |
| =for comment |
| vim:spelllang=pl:spell |