stunnel4/doc/stunnel.pl.8

1033 lines
38 KiB
Groff
Raw Normal View History

2017-03-28 09:58:13 +02:00
.\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.07)
.\"
.\" Standard preamble:
.\" ========================================================================
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Vb \" Begin verbatim text
.ft CW
.nf
.ne \\$1
..
.de Ve \" End verbatim text
.ft R
.fi
..
.\" Set up some character translations and predefined strings. \*(-- will
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
.\" double quote, and \*(R" will give a right double quote. \*(C+ will
.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
.\" nothing in troff, for use with C<>.
.tr \(*W-
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
.ie n \{\
. ds -- \(*W-
. ds PI pi
. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
. ds L" ""
. ds R" ""
. ds C` ""
. ds C' ""
'br\}
.el\{\
. ds -- \|\(em\|
. ds PI \(*p
. ds L" ``
. ds R" ''
'br\}
.\"
.\" Escape single quotes in literal strings from groff's Unicode transform.
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\"
.\" If the F register is turned on, we'll generate index entries on stderr for
.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
.\" entries marked with X<> in POD. Of course, you'll have to process the
.\" output yourself in some meaningful fashion.
.ie \nF \{\
. de IX
. tm Index:\\$1\t\\n%\t"\\$2"
..
. nr % 0
. rr F
.\}
.el \{\
. de IX
..
.\}
.\" ========================================================================
.\"
.IX Title "STUNNEL.PL 8"
2017-03-28 10:18:03 +02:00
.TH STUNNEL.PL 8 "2013.03.22" "4.56" "stunnel"
2017-03-28 09:58:13 +02:00
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
.nh
.SH "NAZWA"
.IX Header "NAZWA"
stunnel \- uniwersalny tunel protokołu \s-1SSL\s0
.SH "SKŁADNIA"
.IX Header "SKŁADNIA"
.IP "\fBUnix:\fR" 4
.IX Item "Unix:"
\&\fBstunnel\fR [<plik>] | \-fd n | \-help | \-version | \-sockets
.IP "\fB\s-1WIN32:\s0\fR" 4
.IX Item "WIN32:"
\&\fBstunnel\fR [ [\-install | \-uninstall | \-start | \-stop ] | \-exit]
[\-quiet] [<plik>] ] | \-help | \-version | \-sockets
.SH "OPIS"
.IX Header "OPIS"
Program \fBstunnel\fR został zaprojektowany do opakowywania w protokół \fI\s-1SSL\s0\fR
połączeń pomiędzy zdalnymi klientami a lokalnymi lub zdalnymi serwerami.
Przez serwer lokalny rozumiana jest aplikacja przeznaczona do uruchamiania
przy pomocy \fIinetd\fR.
Stunnel pozwala na proste zestawienie komunikacji serwerów nie posiadających
funkcjonalności \fI\s-1SSL\s0\fR poprzez bezpieczne kanały \fI\s-1SSL\s0\fR.
.PP
\&\fBstunnel\fR pozwala dodać funkcjonalność \fI\s-1SSL\s0\fR do powszechnie stosowanych
demonów \fIinetd\fR, np. \fIpop3\fR lub \fIimap\fR, do samodzielnych demonów,
np. \fInntp\fR, \fIsmtp\fR lub \fIhttp\fR, a nawet tunelować ppp poprzez gniazda sieciowe
bez zmian w kodzie źródłowym.
.SH "OPCJE"
.IX Header "OPCJE"
.IP "<\fBplik\fR>" 4
.IX Item "<plik>"
użyj podanego pliku konfiguracyjnego
.IP "\fB\-fd n\fR (tylko Unix)" 4
.IX Item "-fd n (tylko Unix)"
wczytaj konfigurację z podanego deskryptora pliku
.IP "\fB\-help\fR" 4
.IX Item "-help"
drukuj listę wspieranych opcji
.IP "\fB\-version\fR" 4
.IX Item "-version"
drukuj wersję programu i domyślne wartości parametrów
.IP "\fB\-sockets\fR" 4
.IX Item "-sockets"
drukuj domyślne opcje gniazd
.IP "\fB\-install\fR (tylko \s-1NT/2000/XP\s0)" 4
.IX Item "-install (tylko NT/2000/XP)"
instaluj serwis \s-1NT\s0
.IP "\fB\-uninstall\fR (tylko \s-1NT/2000/XP\s0)" 4
.IX Item "-uninstall (tylko NT/2000/XP)"
odinstaluj serwis \s-1NT\s0
.IP "\fB\-start\fR (tylko \s-1NT/2000/XP\s0)" 4
.IX Item "-start (tylko NT/2000/XP)"
uruchom serwis \s-1NT\s0
.IP "\fB\-stop\fR (tylko \s-1NT/2000/XP\s0)" 4
.IX Item "-stop (tylko NT/2000/XP)"
zatrzymaj serwis \s-1NT\s0
.IP "\fB\-exit\fR (tylko Win32)" 4
.IX Item "-exit (tylko Win32)"
zatrzymaj uruchomiony program
.IP "\fB\-quiet\fR (tylko \s-1NT/2000/XP\s0)" 4
.IX Item "-quiet (tylko NT/2000/XP)"
nie wyświetlaj okienka informującego o pomyślnym zainstalowaniu lub
odinstalowaniu
.SH "PLIK KONFIGURACYJNY"
.IX Header "PLIK KONFIGURACYJNY"
Linia w pliku konfiguracyjnym może być:
.IP "\(bu" 4
pusta (ignorowana)
.IP "\(bu" 4
komentarzem rozpoczynającym się znakiem ';' (ignorowana)
.IP "\(bu" 4
parą 'nazwa_opcji = wartość_opcji'
.IP "\(bu" 4
tekstem '[nazwa_usługi]' wskazującym początek definicji usługi
.PP
Parametr adres może być:
.IP "\(bu" 4
numerem portu
.IP "\(bu" 4
oddzieloną średnikiem parą adresu (IPv4, IPv6, lub nazwą domenową) i numeru portu
.IP "\(bu" 4
ścieżką do gniazda Unix (tylko Unix)
.SS "\s-1OPCJE\s0 \s-1GLOBALNE\s0"
.IX Subsection "OPCJE GLOBALNE"
.IP "\fBchroot\fR = katalog (tylko Unix)" 4
.IX Item "chroot = katalog (tylko Unix)"
katalog roboczego korzenia systemu plików
.Sp
Opcja określa katalog, w którym uwięziony zostanie proces programu
\&\fBstunnel\fR tuż po jego inicjalizacji, a przed rozpoczęciem odbierania
połączeń. Ścieżki podane w opcjach \fICApath\fR, \fICRLpath\fR, \fIpid\fR
oraz \fIexec\fR muszą być umieszczone wewnątrz katalogu podanego w opcji
\&\fIchroot\fR i określone względem tego katalogu.
2017-03-28 10:18:03 +02:00
.Sp
Niektóre funkcje systemu operacyjnego mogą wymagać dodatkowych plików umieszczonych w katalogu podanego w parametrze chroot:
.RS 4
.IP "\(bu" 4
opóźnione rozwinięcie adresów \s-1DNS\s0 typowo wymaga /etc/nsswitch.conf i /etc/resolv.conf
.IP "\(bu" 4
lokalizacja strefy czasowej w logach wymaga pliku /etc/timezone
.IP "\(bu" 4
niektóre inne pliki mogą potrzebować plików urządzeń, np. /dev/zero lub /dev/null
.RE
.RS 4
.RE
2017-03-28 09:58:13 +02:00
.IP "\fBcompression\fR = deflate | zlib | rle" 4
.IX Item "compression = deflate | zlib | rle"
wybór algorytmu kompresji przesyłanych danych
.Sp
domyślnie: bez kompresji
.Sp
Algorytm deflate jest standardową metodą kompresji zgodnie z \s-1RFC\s0 1951.
.Sp
2017-03-28 10:18:03 +02:00
Kompresja zlib zaimplementowana w \fBOpenSSL 0.9.8\fR i nowszych nie jest
kompatybilna implementacją \fBOpenSSL 0.9.7\fR.
2017-03-28 09:58:13 +02:00
.Sp
2017-03-28 10:18:03 +02:00
Kompresja rle nie jest zaimplementowana w aktualnych wersjach \fBOpenSSL\fR.
2017-03-28 09:58:13 +02:00
.IP "\fBdebug\fR = poziom[.podsystem]" 4
.IX Item "debug = poziom[.podsystem]"
szczegółowość logowania
.Sp
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
\&\fIdebug = debug\fR lub \fIdebug = 7\fR. Domyślnym poziomem jest notice (5).
.Sp
O ile nie wyspecyfikowano podsystemu użyty będzie domyślny: daemon.
Podsystemy nie są wspierane przez platformę Win32.
.Sp
Wielkość liter jest ignorowana zarówno dla poziomu jak podsystemu.
.IP "\fB\s-1EGD\s0\fR = ścieżka_do_EGD (tylko Unix)" 4
.IX Item "EGD = ścieżka_do_EGD (tylko Unix)"
ścieżka do gniazda programu Entropy Gathering Daemon
.Sp
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
\&\fBOpenSSL\fR. Opcja jest dostępna z biblioteką \fBOpenSSL 0.9.5a\fR lub nowszą.
2017-03-28 09:58:13 +02:00
.IP "\fBengine\fR = auto | <identyfikator urządzenia>" 4
.IX Item "engine = auto | <identyfikator urządzenia>"
wybór sprzętowego urządzenia kryptograficznego
.Sp
domyślnie: bez wykorzystania urządzeń kryptograficznych
.Sp
Przykładowa konfiguracja umożliwiająca odczytanie klucza prywatnego z
urządzenia zgodnego z OpenSC:
.Sp
.Vb 7
\& 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
.Ve
.IP "\fBengineCtrl\fR = <command>[:<parameter>]" 4
.IX Item "engineCtrl = <command>[:<parameter>]"
konfiguracja urządzenia kryptograficznego
.Sp
Specjalne komendy \*(L"\s-1LOAD\s0\*(R" i \*(L"\s-1INIT\s0\*(R" pozwalają na załadowanie i inicjalizację
modułu kryptograficznego urządzenia.
.IP "\fBfips\fR = yes | no" 4
.IX Item "fips = yes | no"
Włącz lub wyłącz tryb \s-1FIPS\s0 140\-2.
.Sp
2017-03-28 10:18:03 +02:00
Opcja pozwala wyłączyć wejście w tryb \s-1FIPS\s0, jeśli \fBstunnel\fR został
skompilowany ze wsparciem dla \s-1FIPS\s0 140\-2.
2017-03-28 09:58:13 +02:00
.Sp
domyślnie: yes (pracuj w trybie \s-1FIPS\s0 140\-2)
.IP "\fBforeground\fR = yes | no (tylko Unix)" 4
.IX Item "foreground = yes | no (tylko Unix)"
tryb pierwszoplanowy
.Sp
2017-03-28 10:18:03 +02:00
Użycie tej opcji powoduje, że \fBstunnel\fR nie przechodzi w tło logując
2017-03-28 09:58:13 +02:00
swoje komunikaty na konsolę zamiast przez \fIsyslog\fR (o ile nie użyto
opcji \fIoutput\fR).
.IP "\fBoutput\fR = plik" 4
.IX Item "output = plik"
plik, do którego dopisane zostaną logi
.Sp
Użycie tej opcji powoduje dopisanie logów do podanego pliku.
.Sp
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.
.IP "\fBpid\fR = plik (tylko Unix)" 4
.IX Item "pid = plik (tylko Unix)"
położenie pliku z numerem procesu
.Sp
Jeżeli argument jest pusty plik nie zostanie stworzony.
.Sp
Jeżeli zdefiniowano katalog \fIchroot\fR, to ścieżka do \fIpid\fR jest określona
względem tego katalogu.
.IP "\fBRNDbytes\fR = liczba_bajtów" 4
.IX Item "RNDbytes = liczba_bajtów"
liczba bajtów do zainicjowania generatora pseudolosowego
.Sp
2017-03-28 10:18:03 +02:00
W wersjach biblioteki \fBOpenSSL\fR starszych niż \fB0.9.5a\fR opcja ta określa
2017-03-28 09:58:13 +02:00
również liczbę bajtów wystarczających do zainicjowania \s-1PRNG\s0.
Nowsze wersje biblioteki mają wbudowaną funkcję określającą, czy
dostarczona ilość losowości jest wystarczająca do zainicjowania generatora.
.IP "\fBRNDfile\fR = plik" 4
.IX Item "RNDfile = plik"
ścieżka do pliku zawierającego losowe dane
.Sp
2017-03-28 10:18:03 +02:00
Biblioteka \fBOpenSSL\fR użyje danych z tego pliku do zainicjowania
2017-03-28 09:58:13 +02:00
generatora pseudolosowego.
.IP "\fBRNDoverwrite\fR = yes | no" 4
.IX Item "RNDoverwrite = yes | no"
nadpisz plik nowymi wartościami pseudolosowymi
.Sp
domyślnie: yes (nadpisz)
.IP "\fBservice\fR = nazwa_serwisu (tylko Unix)" 4
.IX Item "service = nazwa_serwisu (tylko Unix)"
użyj parametru jako nazwy serwisu dla biblioteki \s-1TCP\s0 Wrapper w trybie \fIinetd\fR
.Sp
domyślnie: stunnel
.IP "\fBsetgid\fR = identyfikator_grupy (tylko Unix)" 4
.IX Item "setgid = identyfikator_grupy (tylko Unix)"
2017-03-28 10:18:03 +02:00
grupa z której prawami pracował będzie \fBstunnel\fR
2017-03-28 09:58:13 +02:00
.IP "\fBsetuid\fR = identyfikator_użytkownika (tylko Unix)" 4
.IX Item "setuid = identyfikator_użytkownika (tylko Unix)"
2017-03-28 10:18:03 +02:00
użytkownik, z którego prawami pracował będzie \fBstunnel\fR
2017-03-28 09:58:13 +02:00
.IP "\fBsocket\fR = a|l|r:option=value[:value]" 4
.IX Item "socket = a|l|r:option=value[:value]"
ustaw opcję na akceptującym/lokalnym/zdalnym gnieździe
.Sp
Dla opcji linger wartości mają postać l_onof:l_linger.
Dla opcji time wartości mają postać tv_sec:tv_usec.
.Sp
Przykłady:
.Sp
.Vb 10
\& 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)
.Ve
.IP "\fBsyslog\fR = yes | no (tylko Unix)" 4
.IX Item "syslog = yes | no (tylko Unix)"
włącz logowanie poprzez mechanizm syslog
.Sp
domyślnie: yes (włącz)
.IP "\fBtaskbar\fR = yes | no (tylko \s-1WIN32\s0)" 4
.IX Item "taskbar = yes | no (tylko WIN32)"
włącz ikonkę w prawym dolnym rogu ekranu
.Sp
domyślnie: yes (włącz)
.SS "\s-1OPCJE\s0 USŁUG"
.IX Subsection "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 (\s-1TCP\s0 wrappers) oraz pozwala rozróżnić poszczególne
usługi w logach.
.PP
Jeżeli \fBstunnel\fR ma zostać użyty w trybie \fIinetd\fR, gdzie za odebranie
połączenia odpowiada osobny program (zwykle \fIinetd\fR, \fIxinetd\fR
lub \fItcpserver\fR), należy przeczytać sekcję \fI\s-1TRYB\s0 \s-1INETD\s0\fR poniżej.
.IP "\fBaccept\fR = [adres:]port" 4
.IX Item "accept = [adres:]port"
nasłuchuje na połączenia na podanym adresie i porcie
.Sp
2017-03-28 10:18:03 +02:00
Jeżeli nie został podany adres, \fBstunnel\fR domyślnie nasłuchuje
2017-03-28 09:58:13 +02:00
na wszystkich adresach IPv4 lokalnych interfejsów.
.Sp
Aby nasłuchiwać na wszystkich adresach IPv6 należy użyć:
.Sp
.Vb 1
\& accept = :::port
.Ve
.IP "\fBCApath\fR = katalog_CA" 4
.IX Item "CApath = katalog_CA"
katalog Centrum Certyfikacji
.Sp
Opcja określa katalog, w którym \fBstunnel\fR będzie szukał certyfikatów,
jeżeli użyta została opcja \fIverify\fR. Pliki z certyfikatami muszą
posiadać specjalne nazwy \s-1XXXXXXXX\s0.0, gdzie \s-1XXXXXXXX\s0 jest skrótem
kryptograficznym reprezentacji \s-1DER\s0 nazwy podmiotu certyfikatu.
.Sp
2017-03-28 10:18:03 +02:00
Funkcja skrótu została zmieniona w \fBOpenSSL 1.0.0\fR.
Należy wykonać c_rehash przy zmianie \fBOpenSSL 0.x.x\fR na \fB1.x.x\fR.
2017-03-28 09:58:13 +02:00
.Sp
Jeżeli zdefiniowano katalog \fIchroot\fR, to ścieżka do \fICApath\fR jest określona
względem tego katalogu.
.IP "\fBCAfile\fR = plik_CA" 4
.IX Item "CAfile = plik_CA"
plik Centrum Certyfikacji
.Sp
Opcja pozwala określić położenie pliku zawierającego certyfikaty używane
przez opcję \fIverify\fR.
.IP "\fBcert\fR = plik_pem" 4
.IX Item "cert = plik_pem"
plik z łańcuchem certyfikatów
.Sp
Opcja określa położenie pliku zawierającego certyfikaty używane przez
program \fBstunnel\fR do uwierzytelnienia się przed drugą stroną połączenia.
Certyfikat jest konieczny, aby używać programu w trybie serwera.
W trybie klienta certyfikat jest opcjonalny.
.IP "\fBciphers\fR = lista_szyfrów" 4
.IX Item "ciphers = lista_szyfrów"
lista dozwolonych szyfrów \s-1SSL\s0
.Sp
Parametrem tej opcji jest lista szyfrów, które będą użyte przy
otwieraniu nowych połączeń \s-1SSL\s0, np.: \s-1DES\-CBC3\-SHA:IDEA\-CBC\-MD5\s0
.IP "\fBclient\fR = yes | no" 4
.IX Item "client = yes | no"
tryb kliencki (zdalna usługa używa \s-1SSL\s0)
.Sp
domyślnie: no (tryb serwerowy)
.IP "\fBconnect\fR = [adres:]port" 4
.IX Item "connect = [adres:]port"
połącz się ze zdalnym serwerem na podany port
.Sp
2017-03-28 10:18:03 +02:00
Jeżeli nie został podany adres, \fBstunnel\fR domyślnie łączy się
2017-03-28 09:58:13 +02:00
z lokalnym serwerem.
.Sp
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.
.IP "\fBCRLpath\fR = katalog_CRL" 4
.IX Item "CRLpath = katalog_CRL"
katalog List Odwołanych Certyfikatów (\s-1CRL\s0)
.Sp
Opcja określa katalog, w którym \fBstunnel\fR będzie szukał list \s-1CRL\s0,
jeżeli użyta została opcja \fIverify\fR. Pliki z listami \s-1CRL\s0 muszą
posiadać specjalne nazwy \s-1XXXXXXXX\s0.r0, gdzie \s-1XXXXXXXX\s0 jest skrótem
listy \s-1CRL\s0.
.Sp
2017-03-28 10:18:03 +02:00
Funkcja skrótu została zmieniona \fBOpenSSL 1.0.0\fR.
Należy wykonać c_rehash przy zmianie \fBOpenSSL 0.x.x\fR na \fB1.x.x\fR.
2017-03-28 09:58:13 +02:00
.Sp
Jeżeli zdefiniowano katalog \fIchroot\fR, to ścieżka do \fICRLpath\fR jest określona
względem tego katalogu.
.IP "\fBCRLfile\fR = plik_CRL" 4
.IX Item "CRLfile = plik_CRL"
plik List Odwołanych Certyfikatów (\s-1CRL\s0)
.Sp
Opcja pozwala określić położenie pliku zawierającego listy \s-1CRL\s0 używane
przez opcję \fIverify\fR.
.IP "\fBcurve\fR = nid" 4
.IX Item "curve = nid"
krzywa dla \s-1ECDH\s0
.Sp
Listę dostępnych krzywych można uzyskać poleceniem:
.Sp
.Vb 1
\& openssl ecparam \-list_curves
.Ve
.Sp
domyślnie: prime256v1
.IP "\fBdelay\fR = yes | no" 4
.IX Item "delay = yes | no"
opóźnij rozwinięcie adresu \s-1DNS\s0 podanego w opcji \fIconnect\fR
.Sp
Opcja jest przydatna przy dynamicznym \s-1DNS\s0, albo gdy usługa \s-1DNS\s0 nie jest
2017-03-28 10:18:03 +02:00
dostępna przy starcie programu \fBstunnel\fR (klient \s-1VPN\s0, połączenie wdzwaniane).
2017-03-28 09:58:13 +02:00
.IP "\fBengineNum\fR = <numer urządzenia>" 4
.IX Item "engineNum = <numer urządzenia>"
wybierz urządzenie do odczyta klucza prywatnego
.Sp
Urządzenia są numerowane od 1 w górę.
.IP "\fBexec\fR = ścieżka_do_programu" 4
.IX Item "exec = ścieżka_do_programu"
wykonaj lokalny program przystosowany do pracy z superdemonem inetd
.Sp
Jeżeli zdefiniowano katalog \fIchroot\fR, to ścieżka do \fIexec\fR jest określona
względem tego katalogu.
.ie n .IP "\fBexecargs\fR = $0 $1 $2 ..." 4
.el .IP "\fBexecargs\fR = \f(CW$0\fR \f(CW$1\fR \f(CW$2\fR ..." 4
.IX Item "execargs = $0 $1 $2 ..."
argumenty do opcji \fIexec\fR włącznie z nazwą programu ($0)
.Sp
Cytowanie nie jest wspierane w obecnej wersji programu.
Argumenty są rozdzielone dowolną liczbą białych znaków.
.IP "\fBfailover\fR = rr | prio" 4
.IX Item "failover = rr | prio"
Strategia wybierania serwerów wyspecyfikowanych parametrami \*(L"connect\*(R".
.Sp
.Vb 2
\& rr (round robin) \- sprawiedliwe rozłożenie obciążenia
\& prio (priority) \- użyj kolejności opcji w pliku konfiguracyjnym
.Ve
.Sp
domyślnie: rr
.IP "\fBident\fR = nazwa_użytkownika" 4
.IX Item "ident = nazwa_użytkownika"
weryfikuj nazwę zdalnego użytkownika korzystając z protokołu \s-1IDENT\s0 (\s-1RFC\s0 1413)
.IP "\fBkey\fR = plik_klucza" 4
.IX Item "key = plik_klucza"
klucz prywatny do certyfikatu podanego w opcji \fIcert\fR
.Sp
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ą:
.Sp
.Vb 1
\& chmod 600 keyfile
.Ve
.Sp
domyślnie: wartość opcji \fIcert\fR
.IP "\fBlibwrap\fR = yes | no" 4
.IX Item "libwrap = yes | no"
włącz lub wyłącz korzystanie z /etc/hosts.allow i /etc/hosts.deny.
.Sp
domyślnie: yes
.IP "\fBlocal\fR = serwer" 4
.IX Item "local = serwer"
\&\s-1IP\s0 źródła do nawiązywania zdalnych połączeń
.Sp
Domyślnie używane jest \s-1IP\s0 najbardziej zewnętrznego interfejsu w stronę
serwera, do którego nawiązywane jest połączenie.
2017-03-28 10:18:03 +02:00
.IP "\fBsni\fR = nazwa_usługi:wzorzec_nazwy_serwera (tryb serwera)" 4
.IX Item "sni = nazwa_usługi:wzorzec_nazwy_serwera (tryb serwera)"
2017-03-28 09:58:13 +02:00
Użyj usługi jako podrzędnej (virtualnego serwera) dla rozszerzenia \s-1TLS\s0 Server
Name Indication (\s-1RFC\s0 3546).
.Sp
\&\fInazwa_usługi\fR wskazuje usługę nadrzędną, która odbiera połączenia od klientów
2017-03-28 10:18:03 +02:00
przy pomocy opcji \fIaccept\fR. \fIwzorzec_nazwy_serwera\fR 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 \fIsni\fR może być rownież użyta wielokrotnie w ramach jednej usługi
podrzędnej.
2017-03-28 09:58:13 +02:00
.Sp
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.
.Sp
Opcja \fIconnect\fR usługi podrzędnej jest ignorowana w połączeniu z opcją
\&\fIprotocol\fR, gdyż połączenie do zdalnego serwera jest w tym wypadku nawiązywane
przed negocjacją \s-1TLS\s0.
.Sp
Uwierzytelnienie przy pomocy biblioteki libwrap jest realizowane dwukrotnie:
najpierw dla usługi nadrzędnej po odebraniu połączenia \s-1TCP\s0, a następnie dla
usługi podrzędnej podczas negocjacji \s-1TLS\s0.
.Sp
Opcja \fIsni\fR jest dostępna począwszy od \fBOpenSSL 1.0.0\fR.
2017-03-28 09:58:13 +02:00
.IP "\fBsni\fR = nazwa_serwera (tryb klienta)" 4
.IX Item "sni = nazwa_serwera (tryb klienta)"
Użyj parametru jako wartości rozszerzenia \s-1TLS\s0 Server Name Indication
(\s-1RFC\s0 3546).
.Sp
2017-03-28 10:18:03 +02:00
Opcja \fIsni\fR jest dostępna począwszy od \fBOpenSSL 1.0.0\fR.
2017-03-28 09:58:13 +02:00
.IP "\fB\s-1OCSP\s0\fR = \s-1URL\s0" 4
.IX Item "OCSP = URL"
serwer \s-1OCSP\s0 do weryfikacji certyfikatów
.IP "\fBOCSPflag\fR = flaga" 4
.IX Item "OCSPflag = flaga"
flaga serwera \s-1OCSP\s0
.Sp
aktualnie wspierane flagi: \s-1NOCERTS\s0, \s-1NOINTERN\s0 \s-1NOSIGS\s0, \s-1NOCHAIN\s0, \s-1NOVERIFY\s0,
\&\s-1NOEXPLICIT\s0, \s-1NOCASIGN\s0, \s-1NODELEGATED\s0, \s-1NOCHECKS\s0, \s-1TRUSTOTHER\s0, \s-1RESPID_KEY\s0, \s-1NOTIME\s0
.Sp
Aby wyspecyfikować kilka flag należy użyć \fIOCSPflag\fR wielokrotnie.
.IP "\fBoptions\fR = opcje_SSL" 4
.IX Item "options = opcje_SSL"
2017-03-28 10:18:03 +02:00
opcje biblioteki \fBOpenSSL\fR
2017-03-28 09:58:13 +02:00
.Sp
Parametrem jest nazwa opcji zgodnie z opisem w \fI\fISSL_CTX_set_options\fI\|(3ssl)\fR,
ale bez przedrostka \fI\s-1SSL_OP_\s0\fR.
Aby wyspecyfikować kilka opcji należy użyć \fIoptions\fR wielokrotnie.
.Sp
Na przykład dla zachowania kompatybilności z błędami implementacji \s-1SSL\s0
w programie Eudora można użyć opcji:
.Sp
.Vb 1
\& options = DONT_INSERT_EMPTY_FRAGMENTS
.Ve
.IP "\fBprotocol\fR = protokół" 4
.IX Item "protocol = protokół"
2017-03-28 10:18:03 +02:00
negocjuj \s-1SSL\s0 podanym protokołem aplikacyjnym
2017-03-28 09:58:13 +02:00
.Sp
2017-03-28 10:18:03 +02:00
Opcja ta włącza wstępną negocjację szyfrowania \s-1SSL\s0 dla wybranego protokołu
aplikacyjnego.
2017-03-28 09:58:13 +02:00
Opcji \fIprotocol\fR nie należy używać z szyfrowaniem \s-1SSL\s0 na osobnym porcie.
.Sp
Aktualnie wspierane protokoły:
.RS 4
.IP "\fIcifs\fR" 4
.IX Item "cifs"
Unieudokumentowane rozszerzenie protokołu \s-1CIFS\s0 wspierane przez serwer Samba.
Wsparcie dla tego rozrzeczenia zostało zarzucone w wersji 3.0.0 serwera Samba.
.IP "\fIconnect\fR" 4
.IX Item "connect"
Negocjacja \s-1RFC\s0 2817 \- \fIUpgrading to \s-1TLS\s0 Within \s-1HTTP/1\s0.1\fR, rozdział 5.2 \- \fIRequesting a Tunnel with \s-1CONNECT\s0\fR
.Sp
Ten protokół jest wspierany wyłącznie w trybie klienckim.
.IP "\fIimap\fR" 4
.IX Item "imap"
Negocjacja \s-1RFC\s0 2595 \- \fIUsing \s-1TLS\s0 with \s-1IMAP\s0, \s-1POP3\s0 and \s-1ACAP\s0\fR
.IP "\fInntp\fR" 4
.IX Item "nntp"
Negocjacja \s-1RFC\s0 4642 \- \fIUsing Transport Layer Security (\s-1TLS\s0) with Network News Transfer Protocol (\s-1NNTP\s0)\fR
.Sp
Ten protokół jest wspierany wyłącznie w trybie klienckim.
.IP "\fIpgsql\fR" 4
.IX Item "pgsql"
Negocjacja http://www.postgresql.org/docs/8.3/static/protocol\-flow.html#AEN73982
.IP "\fIpop3\fR" 4
.IX Item "pop3"
Negocjacja \s-1RFC\s0 2449 \- \fI\s-1POP3\s0 Extension Mechanism\fR
.IP "\fIproxy\fR" 4
.IX Item "proxy"
Przekazywanie adresu \s-1IP\s0 haproxy http://haproxy.1wt.eu/download/1.5/doc/proxy\-protocol.txt
.IP "\fIsmtp\fR" 4
.IX Item "smtp"
Negocjacja \s-1RFC\s0 2487 \- \fI\s-1SMTP\s0 Service Extension for Secure \s-1SMTP\s0 over \s-1TLS\s0\fR
.RE
.RS 4
.RE
.IP "\fBprotocolAuthentication\fR = uwierzytelnienie" 4
.IX Item "protocolAuthentication = uwierzytelnienie"
rodzaj uwierzytelnienia do negocjacji protokołu
.Sp
aktualnie wspierane: basic, \s-1NTLM\s0
.Sp
Obecnie typ uwierzytelnienia ma zastosowanie wyłącznie w protokole 'connect'.
.Sp
domyślnie: basic
.IP "\fBprotocolHost\fR = adres:port" 4
.IX Item "protocolHost = adres:port"
adres docelowy do negocjacji protokołu
2017-03-28 10:18:03 +02:00
.Sp
\&\fIprotocolHost\fR określa docelowy serwer \s-1SSL\s0, do którego połączyć ma się proxy.
Nie jest to adres serwera proxy, do którego połączenie zestawia \fBstunnel\fR.
Adres serwera proxy powinien być określony przy pomocy opcji 'connect'.
.Sp
W obecnej wersji adres docelowy protokołu ma zastosowanie wyłącznie w protokole
\&'connect'.
2017-03-28 09:58:13 +02:00
.IP "\fBprotocolPassword\fR = hasło" 4
.IX Item "protocolPassword = hasło"
hasło do negocjacji protokołu
.IP "\fBprotocolUsername\fR = użytkownik" 4
.IX Item "protocolUsername = użytkownik"
nazwa użytkownika do negocjacji protokołu
.IP "\fBpty\fR = yes | no (tylko Unix)" 4
.IX Item "pty = yes | no (tylko Unix)"
alokuj pseudoterminal dla programu uruchamianego w opcji 'exec'
2017-03-28 10:18:03 +02:00
.IP "\fBrenegotiation\fR = yes | no" 4
.IX Item "renegotiation = yes | no"
pozwalaj na renegocjację \s-1SSL\s0
.Sp
Wśród zastosowań renegocjacji \s-1SSL\s0 są niektóre scenariusze uwierzytelnienia,
oraz renegocjacja kluczy dla długotrwałych połączeń.
.Sp
Z drugiej strony własność na może ułatwić trywialny atak DoS poprzez
wygenerowanie obciążenia procesora:
.Sp
http://vincent.bernat.im/en/blog/2011\-ssl\-dos\-mitigation.html
.Sp
Warto zauważyć, że zablokowanie renegocjacji \s-1SSL\s0 nie zebezpiecza w pełni
przed opisanym problemem.
.Sp
domyślnie: yes (o ile wspierane przez \fBOpenSSL\fR)
.IP "\fBreset\fR = yes | no" 4
.IX Item "reset = yes | no"
sygnalizuj wystąpienie błędu przy pomocy flagi \s-1TCP\s0 \s-1RST\s0
.Sp
Ta opcja nie jest wspierana na niektórych platformach.
.Sp
domyślnie: yes
.IP "\fBretry\fR = yes | no" 4
.IX Item "retry = yes | no"
2017-03-28 09:58:13 +02:00
połącz ponownie sekcję connect+exec po rozłączeniu
.Sp
domyślnie: no
2017-03-28 10:18:03 +02:00
.IP "\fBsessionCacheSize\fR = rozmiar" 4
.IX Item "sessionCacheSize = rozmiar"
rozmiar pamięci podręcznej sesji \s-1SSL\s0
.Sp
Parametr określa maksymalną liczbę pozycji wewnętrznej pamięci podręcznej
sesji.
.Sp
Wartość 0 oznacza brak ograniczenia rozmiaru. Nie jest to zalecane dla
systemów produkcyjnych z uwagi na ryzyko ataku DoS przez wyczerpanie pamięci
\&\s-1RAM\s0.
.IP "\fBsessionCacheTimeout\fR = czas" 4
.IX Item "sessionCacheTimeout = czas"
przeterminowanie pamięci podręcznej sesji \s-1SSL\s0
.Sp
Parametr określa czas w sekundach, po którym sesja \s-1SSL\s0 zostanie usunięta z
pamięci podręcznej.
2017-03-28 09:58:13 +02:00
.IP "\fBsessiond\fR = adres:port" 4
.IX Item "sessiond = adres:port"
adres sessiond \- servera cache sesji \s-1SSL\s0
.IP "\fBsslVersion\fR = wersja" 4
.IX Item "sslVersion = wersja"
wersja protokołu \s-1SSL\s0
.Sp
2017-03-28 10:18:03 +02:00
Dozwolone opcje: all, SSLv2, SSLv3, TLSv1, TLSv1.1, TLSv1.2
2017-03-28 09:58:13 +02:00
.IP "\fBstack\fR = liczba_bajtów (z wyjątkiem modelu \s-1FORK\s0)" 4
.IX Item "stack = liczba_bajtów (z wyjątkiem modelu FORK)"
rozmiar stosu procesora wątku
.IP "\fBTIMEOUTbusy\fR = liczba_sekund" 4
.IX Item "TIMEOUTbusy = liczba_sekund"
czas oczekiwania na spodziewane dane
.IP "\fBTIMEOUTclose\fR = liczba_sekund" 4
.IX Item "TIMEOUTclose = liczba_sekund"
czas oczekiwania na close_notify (ustaw na 0, jeżeli klientem jest \s-1MSIE\s0)
.IP "\fBTIMEOUTconnect\fR = liczba_sekund" 4
.IX Item "TIMEOUTconnect = liczba_sekund"
czas oczekiwania na nawiązanie połączenia
.IP "\fBTIMEOUTidle\fR = liczba_sekund" 4
.IX Item "TIMEOUTidle = liczba_sekund"
maksymalny czas utrzymywania bezczynnego połączenia
.IP "\fBtransparent\fR = none | source | destination | both (tylko Unix)" 4
.IX Item "transparent = none | source | destination | both (tylko Unix)"
tryb przezroczystego proxy na wspieranych platformach
.Sp
Wspierane opcje:
.RS 4
.IP "\fBnone\fR" 4
.IX Item "none"
Zablokuj wsparcie dla przezroczystago proxy. Jest to wartość domyślna.
.IP "\fBsource\fR" 4
.IX Item "source"
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 \fBstunnel\fR.
2017-03-28 09:58:13 +02:00
.Sp
Opcja jest aktualnie obsługiwana w:
.RS 4
.IP "Trybie zdalnym (opcja \fIconnect\fR) w systemie \fILinux >=2.6.28\fR" 4
.IX Item "Trybie zdalnym (opcja connect) w systemie Linux >=2.6.28"
Konfiguracja wymaga następujących ustawień iptables oraz routingu
(na przykład w pliku /etc/rc.local lub analogicznym):
.Sp
.Vb 7
\& 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
.Ve
.Sp
Konfiguracja ta wymaga, aby \fBstunnel\fR był wykonywany jako root i bez opcji \fIsetuid\fR.
.IP "Trybie zdalnym (opcja \fIconnect\fR) w systemie \fILinux 2.2.x\fR" 4
.IX Item "Trybie zdalnym (opcja connect) w systemie Linux 2.2.x"
Konfiguracja ta wymaga skompilowania jądra z opcją \fItransparent proxy\fR.
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 \fBstunnela\fR.
2017-03-28 09:58:13 +02:00
.Sp
Dodatkowo \fBstunnel\fR powinien być wykonywany jako root i bez opcji \fIsetuid\fR.
.IP "Trybie zdalnym (opcja \fIconnect\fR) w systemie \fIFreeBSD >=8.0\fR" 4
.IX Item "Trybie zdalnym (opcja connect) w systemie FreeBSD >=8.0"
Konfiguracja ta wymaga skonfigurowania firewalla i routingu.
\&\fBstunnel\fR musi być wykonywany jako root i bez opcji \fIsetuid\fR.
.IP "Trybie lokalnym (opcja \fIexec\fR)" 4
.IX Item "Trybie lokalnym (opcja exec)"
Konfiguracja ta jest realizowana przy pomocy biblioteki \fIlibstunnel.so\fR.
Do załadowania biblioteki wykorzystywana jest zmienna środowiskowa _RLD_LIST na
platformie Tru64 lub \s-1LD_PRELOAD\s0 na innych platformach.
.RE
.RS 4
.RE
.IP "\fIdestination\fR" 4
.IX Item "destination"
Oryginalny adres docelowy jest używany zamiast opcji \fIconnect\fR.
.Sp
Przykładowana konfiguracja przezroczystego adresu docelowego:
.Sp
.Vb 4
\& [transparent]
\& client=yes
\& accept=<port_stunnela>
\& transparent=destination
.Ve
.Sp
Konfiguracja wymaga następujących ustawień iptables
(na przykład w pliku /etc/rc.local lub analogicznym):
.Sp
.Vb 2
\& /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>
.Ve
.Sp
Przezroczysty adres docelowy jest aktualnie wspierany wyłącznie w systemie Linux.
.IP "\fIboth\fR" 4
.IX Item "both"
Użyj przezroczystego proxy zarówno dla adresu źródłowego jak i docelowego.
.RE
.RS 4
.Sp
Dla zapewnienia kompatybilności z wcześniejszymim wersjami wspierane są dwie
dodatkowe opcje:
.IP "\fIyes\fR" 4
.IX Item "yes"
Opcja została przemianowana na \fIsource\fR.
.IP "\fIno\fR" 4
.IX Item "no"
Opcja została przemianowana na \fInone\fR.
.RE
.RS 4
.RE
.IP "\fBverify\fR = poziom" 4
.IX Item "verify = poziom"
weryfikuj certyfikat drugiej strony połączenia
.RS 4
2017-03-28 10:18:03 +02:00
.IP "\fIpoziom 0\fR" 4
.IX Item "poziom 0"
zarządaj certyfikatu i zignoruj go
.IP "\fIpoziom 1\fR" 4
.IX Item "poziom 1"
weryfikuj, jeżeli został przedstawiony
.IP "\fIpoziom 2\fR" 4
.IX Item "poziom 2"
weryfikuj z zainstalowanym certyfikatem Centrum Certyfikacji
.IP "\fIpoziom 3\fR" 4
.IX Item "poziom 3"
weryfikuj z lokalnie zainstalowanym certyfikatem drugiej strony
.IP "\fIpoziom 4\fR" 4
.IX Item "poziom 4"
weryfikuj z certyfikatem drugiej strony ignorując łańcuch \s-1CA\s0
.IP "\fIdomyślnie\fR" 4
.IX Item "domyślnie"
nie weryfikuj
2017-03-28 09:58:13 +02:00
.RE
.RS 4
.RE
.SH "ZWRACANA WARTOŚĆ"
.IX Header "ZWRACANA WARTOŚĆ"
\&\fBstunnel\fR zwraca zero w przypadku sukcesu, lub wartość niezerową
w przypadku błędu.
.SH "SIGNAŁY"
.IX Header "SIGNAŁY"
Następujące sygnały mogą być użyte do sterowania programem w systemie Unix:
.IP "\s-1SIGHUP\s0" 4
.IX Item "SIGHUP"
Załaduj ponownie plik konfiguracyjny.
.Sp
Niektóre globalne opcje nie będą przeładowane:
.RS 4
.IP "\(bu" 4
chroot
.IP "\(bu" 4
foreground
.IP "\(bu" 4
pid
.IP "\(bu" 4
setgid
.IP "\(bu" 4
setuid
.RE
.RS 4
.Sp
2017-03-28 10:18:03 +02:00
Jeżeli wykorzystywana jest opcja 'setuid' \fBstunnel\fR nie będzie mógł załadować
2017-03-28 09:58:13 +02:00
ponownie konfiguracji wykorzystującej uprzywilejowane (<1024) porty.
.Sp
2017-03-28 10:18:03 +02:00
Jeżeli wykorzystywana jest opcja 'chroot' \fBstunnel\fR 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'.
.RE
.IP "\s-1SIGUSR1\s0" 4
.IX Item "SIGUSR1"
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 \fBstunnel\fR.
2017-03-28 09:58:13 +02:00
.IP "\s-1SIGTERM\s0, \s-1SIGQUIT\s0, \s-1SIGINT\s0" 4
.IX Item "SIGTERM, SIGQUIT, SIGINT"
Zakończ działanie programu.
.PP
Skutek wysłania innych sygnałów jest niezdefiniowany.
.SH "PRZYKŁADY"
.IX Header "PRZYKŁADY"
Szyfrowanie połączeń do lokalnego serwera \fIimapd\fR można użyć:
.PP
.Vb 4
\& [imapd]
\& accept = 993
\& exec = /usr/sbin/imapd
\& execargs = imapd
.Ve
.PP
albo w trybie zdalnym:
.PP
.Vb 3
\& [imapd]
\& accept = 993
\& connect = 143
.Ve
.PP
W połączeniu z programem \fIpppd\fR \fBstunnel\fR pozwala zestawić prosty \s-1VPN\s0.
Po stronie serwera nasłuchującego na porcie 2020 jego konfiguracja
może wyglądać następująco:
.PP
.Vb 5
\& [vpn]
\& accept = 2020
\& exec = /usr/sbin/pppd
\& execargs = pppd local
\& pty = yes
.Ve
.PP
Poniższy plik konfiguracyjny może być wykorzystany do uruchomienia
programu \fBstunnel\fR w trybie \fIinetd\fR. Warto zauważyć, że w pliku
konfiguracyjnym nie ma sekcji \fI[nazwa_usługi]\fR.
.PP
.Vb 2
\& exec = /usr/sbin/imapd
\& execargs = imapd
.Ve
.SH "NOTKI"
.IX Header "NOTKI"
.SS "\s-1OGRANICZENIA\s0"
.IX Subsection "OGRANICZENIA"
2017-03-28 10:18:03 +02:00
\&\fBstunnel\fR nie może być używany do szyfrowania protokołu \fI\s-1FTP\s0\fR,
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 \s-1FTP\s0 pozwalające
na szyfrowanie przesyłanych danych przy pomocy protokołu \fI\s-1SSL\s0\fR.
.SS "\s-1TRYB\s0 \s-1INETD\s0 (tylko Unix)"
.IX Subsection "TRYB INETD (tylko Unix)"
W większości zastosowań \fBstunnel\fR samodzielnie nasłuchuje na porcie
podanym w pliku konfiguracyjnym i tworzy połączenie z innym portem
podanym w opcji \fIconnect\fR lub nowym programem podanym w opcji \fIexec\fR.
Niektórzy wolą jednak wykorzystywać oddzielny program, który odbiera
połączenia, po czym uruchamia program \fBstunnel\fR. Przykładami takich
programów są inetd, xinetd i tcpserver.
.PP
Przykładowa linia pliku /etc/inetd.conf może wyglądać tak:
.PP
.Vb 2
\& imaps stream tcp nowait root /usr/bin/stunnel
\& stunnel /etc/stunnel/imaps.conf
.Ve
.PP
Ponieważ w takich przypadkach połączenie na zdefiniowanym porcie
(tutaj \fIimaps\fR) nawiązuje osobny program (tutaj \fIinetd\fR), \fBstunnel\fR
nie może używać opcji \fIaccept\fR. W pliku konfiguracyjnym nie może
być również zdefiniowana żadna usługa (\fI[nazwa_usługi]\fR), ponieważ
konfiguracja taka pozwala na nawiązanie tylko jednego połączenia.
Wszystkie \fI\s-1OPCJE\s0 USŁUG\fR powinny być umieszczone razem z opcjami
globalnymi. Przykład takiej konfiguracji znajduje się w sekcji
\&\fIPRZYKŁADY\fR.
.SS "\s-1CERTYFIKATY\s0"
.IX Subsection "CERTYFIKATY"
Protokół \s-1SSL\s0 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 \fBOpenSSL\fR. Więcej informacji na temat generowania
certyfikatów można znaleźć na umieszczonych poniżej stronach.
2017-03-28 09:58:13 +02:00
.PP
Istotną kwestią jest kolejność zawartości pliku \fI.pem\fR.
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ć:
.PP
.Vb 8
\& \-\-\-\-\-BEGIN RSA PRIVATE KEY\-\-\-\-\-
\& [zakodowany klucz]
\& \-\-\-\-\-END RSA PRIVATE KEY\-\-\-\-\-
\& [pusta linia]
\& \-\-\-\-\-BEGIN CERTIFICATE\-\-\-\-\-
\& [zakodowany certyfikat]
\& \-\-\-\-\-END CERTIFICATE\-\-\-\-\-
\& [pusta linia]
.Ve
.SS "LOSOWOŚĆ"
.IX Subsection "LOSOWOŚĆ"
\&\fBstunnel\fR potrzebuje zainicjować \s-1PRNG\s0 (generator liczb pseudolosowych),
gdyż protokół \s-1SSL\s0 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:
.IP "\(bu" 4
Zawartość pliku podanego w opcji \fIRNDfile\fR.
.IP "\(bu" 4
Zawartość pliku o nazwie określonej przez zmienną środowiskową
\&\s-1RANDFILE\s0, o ile jest ona ustawiona.
.IP "\(bu" 4
Plik .rnd umieszczony w katalogu domowym użytkownika,
jeżeli zmienna \s-1RANDFILE\s0 nie jest ustawiona.
.IP "\(bu" 4
Plik podany w opcji '\-\-with\-random' w czasie konfiguracji programu.
.IP "\(bu" 4
Zawartość ekranu w systemie Windows.
.IP "\(bu" 4
Gniazdo egd, jeżeli użyta została opcja \fI\s-1EGD\s0\fR.
.IP "\(bu" 4
Gniazdo egd podane w opcji '\-\-with\-egd\-socket' w czasie konfiguracji
programu.
.IP "\(bu" 4
Urządzenie /dev/urandom.
.PP
2017-03-28 10:18:03 +02:00
Współczesne (\fB0.9.5a\fR lub nowsze) wersje biblioteki \fBOpenSSL\fR 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.
2017-03-28 09:58:13 +02:00
.PP
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ć \s-1PRNG\s0. W takim przypadku do zainicjowania
generatora należy użyć opcji \fIRNDfile\fR.
.PP
Plik \fIRNDfile\fR powinien zawierać dane losowe \*(-- również w tym sensie,
że powinny być one inne przy każdym uruchomieniu programu \fBstunnel\fR.
O ile nie użyta została opcja \fIRNDoverwrite\fR jest to robione
automatycznie. Do ręcznego uzyskania takiego pliku użyteczna
może być komenda \fIopenssl rand\fR dostarczana ze współczesnymi
2017-03-28 10:18:03 +02:00
wersjami pakietu \fBOpenSSL\fR.
2017-03-28 09:58:13 +02:00
.PP
Jeszcze jedna istotna informacja \*(-- jeżeli dostępne jest urządzenie
2017-03-28 10:18:03 +02:00
\&\fI/dev/urandom\fR biblioteka \fBOpenSSL\fR ma zwyczaj zasilania nim \s-1PRNG\s0 w trakcie
2017-03-28 09:58:13 +02:00
sprawdzania stanu generatora. W systemach z \fI/dev/urandom\fR 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 \fBOpenSSL\fR, a nie programu
\&\fBstunnel\fR.
2017-03-28 09:58:13 +02:00
.SS "\s-1PARAMETRY\s0 \s-1DH\s0"
.IX Subsection "PARAMETRY DH"
2017-03-28 10:18:03 +02:00
Począwszy od wersji 4.40 \fBstunnel\fR zawiera w kodzie programu 2048\-bitowe
2017-03-28 09:58:13 +02:00
parametry \s-1DH\s0.
.PP
Alternatywnie parametry \s-1DH\s0 można umieścić w pliku razem z certyfikatem:
.PP
.Vb 1
\& openssl dhparam 2048 >> stunnel.pem
.Ve
.PP
Wygenerowanie parametrów \s-1DH\s0 może zająć nawet wiele minut.
.SH "PLIKI"
.IX Header "PLIKI"
.IP "\fIstunnel.conf\fR" 4
.IX Item "stunnel.conf"
plik konfiguracyjny programu
.SH "BŁĘDY"
.IX Header "BŁĘDY"
2017-03-28 10:18:03 +02:00
Opcja \fIexecargs\fR oraz linia komend Win32 nie obsługuje cytowania.
2017-03-28 09:58:13 +02:00
.SH "ZOBACZ RÓWNIEŻ"
.IX Header "ZOBACZ RÓWNIEŻ"
.IP "\fItcpd\fR\|(8)" 4
.IX Item "tcpd"
biblioteka kontroli dostępu do usług internetowych
.IP "\fIinetd\fR\|(8)" 4
.IX Item "inetd"
\&'super\-serwer' internetowy
.IP "\fIhttp://www.stunnel.org/\fR" 4
.IX Item "http://www.stunnel.org/"
2017-03-28 10:18:03 +02:00
strona domowa programu \fBstunnel\fR
2017-03-28 09:58:13 +02:00
.IP "\fIhttp://www.openssl.org/\fR" 4
.IX Item "http://www.openssl.org/"
2017-03-28 10:18:03 +02:00
strona projektu \fBOpenSSL\fR
2017-03-28 09:58:13 +02:00
.SH "AUTOR"
.IX Header "AUTOR"
.IP "Michał Trojnara" 4
.IX Item "Michał Trojnara"
<\fIMichal.Trojnara@mirt.net\fR>