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