You are on page 1of 14

Sieci VPN.

Zdalna praca
i bezpieczestwo danych
Autor: Marek Serafin
ISBN: 978-83-246-1521-6
Format: B5, stron: 160

Poznaj i wykorzystaj w praktyce metody korzystania z sieci VPN


Na czym opiera si standard SSL?
Jak zestawia tunele VPN w systemach Windows i Linux?
Jak poczy oddziay firm za pomoc tunelu IPSec?

Serwery plikw i baz danych spotykamy niemal w kadej firmie. Architektura


klient-serwer umoliwia dostp do aplikacji nie tylko wewntrz firmy, ale take
z dowolnego innego miejsca. Rozwj sieci pozwoli wielu organizacjom na sprawn
komunikacj i otworzy perspektywy dla tych pracownikw, ktrzy z rnych wzgldw
wykonuj swoje obowizki poza biurem. Niestety zdalny dostp do firmowej
infrastruktury IT niesie ze sob take zagroenia zwizane z moliwoci utraty,
uszkodzenia lub wydostania si na zewntrz cennych danych. Rozwizaniem tego
problemu s cza szyfrowane, nazywane VPN.
Ksika Sieci VPN. Zdalna praca i bezpieczestwo danych to praktyczny przewodnik
dla administratorw sieci firmowych, ktrzy zajmuj si wdraaniem rozwiza
umoliwiajcych prac na odlego. Opisuje wszystkie aspekty konfigurowania tuneli
VPN z wykorzystaniem protokow SSL (OpenVPN) i IPSec (OpenSWAN) w systemach
Linux i Windows. Czytajc j, poznasz standard SSL, zasady generowania certyfikatw
oraz metody implementacji sieci VPN. Analizujc zawarte w ksice przykady,
nauczysz si otwiera zdalny dostp do sieci korporacyjnej, czy oddziay firmy
za pomoc IPSec i uruchamia tunele VPN w urzdzeniach mobilnych.

Wydawnictwo Helion
ul. Kociuszki 1c
44-100 Gliwice
tel. 032 230 98 63
e-mail: helion@helion.pl

Zagroenia wynikajce z konstrukcji protokou TCP/IP


Przesyanie danych z wykorzystaniem SSL
Zapewnianie pracownikom zdalnego dostpu do zasobw firmy
Generowanie kluczy
Tworzenie tuneli SSH
Instalacja i konfiguracja programu OpenVPN
Tunele VPN w urzdzeniach mobilnych
Implementacja IPSEC/L2TP w systemie Linux
Konfiguracja VPN w systemie Windows
Zabezpiecz dostp do swojej sieci.
Skorzystaj z wiedzy dowiadczonego administratora

Spis treci
Przedmowa ...................................................................................... 7
Rozdzia 1. Wstp .............................................................................................. 9
Rozdzia 2. Sabo protokow sieciowych i zwizane z tym problemy .............. 11
Rozdzia 3. SSL jako standard bezpiecznego przesyania danych ........................ 13
3.1. Historia i znaczenie protokou SSL ......................................................................... 13
3.1.1. Przebieg nawizania poczenia SSL .......................................................... 14
3.1.2. Znaczenie zaufanego certyfikatu ................................................................ 15
3.2. Generowanie certyfikatw przy uyciu programu OpenSSL .................................. 16
3.2.1. Tworzenie wasnego CA ............................................................................. 16
3.2.2. Tworzenie klucza prywatnego dla serwera ................................................. 18
3.2.3. Generowanie wniosku o wystawienie certyfikatu ....................................... 18
3.2.4. Wystawianie certyfikatu dla serwera .......................................................... 19
3.2.5. ciganie hasa z klucza prywatnego serwera ............................................ 20
3.2.6. Uniewanianie certyfikatw ....................................................................... 20
3.2.7. Generowanie listy CRL (uniewanionych certyfikatw) ............................ 21
3.2.8. Rne formaty certyfikatw ....................................................................... 21
3.3. Kompilacja biblioteki openssl ze rde .................................................................. 22

Rozdzia 4. Tunelowanie portw ....................................................................... 25


4.1. Program Stunnel ...................................................................................................... 26
4.1.1. stunnel.conf ................................................................................................ 29
4.1.2. Przykad 1 ................................................................................................... 31
4.1.3. Przykad 2 ................................................................................................... 33
4.2. Tunele SSH ............................................................................................................. 35
4.2.1. Przykad 1 ................................................................................................... 35
4.2.2. Przykad 2 SSH jako Socks Proxy ......................................................... 37
4.2.3. Przykad 3 tunele z przekazywaniem zdalnym ...................................... 37
4.2.4. Przykad 4 tunel UDP po SSH ............................................................... 41

Rozdzia 5. OpenVPN praktyczna implementacja tuneli VPN .......................... 45


5.1. Instalacja ................................................................................................................. 45
5.1.1. Instalacja w systemie Linux Debian ........................................................... 46
5.1.2. Instalacja przez kompilacj rde programu (Linux) ................................ 46
5.1.3. Instalacja pod systemami MS Windows ..................................................... 50
5.2. Konfiguracja OpenVPN .......................................................................................... 52

Sieci VPN. Zdalna praca i bezpieczestwo danych


5.3. Praktyczny przykad zdalny dostp do zasobw firmy dla pracownikw .......... 53
5.3.1. Generowanie certyfikatw SSL .................................................................. 54
5.3.2. Konfiguracja po stronie serwera ................................................................. 55
5.3.3. Uruchomienie usugi serwera OpenVPN .................................................... 57
5.3.4. Konfiguracja klienta ................................................................................... 58
5.4. Bardziej zoona konfiguracja z wieloma uytkownikami ...................................... 59
5.4.1. Przypisywanie staych adresw IP uytkownikom ..................................... 62
5.4.2. Pliki ustawie uytkownikw w katalogu ccd ............................................ 62
5.4.3. Tworzenie pliku dostep.txt ......................................................................... 63
5.4.4. Testowanie .................................................................................................. 64
5.4.5. Logowanie zdarze do pliku ....................................................................... 65
5.5. Uniewanianie certyfikatw .................................................................................... 67
5.6. czenie oddziaw firmy ....................................................................................... 68
5.6.1. Przykad rozwizania z routerem ................................................................ 69
5.6.2. Tunel VPN z mostkowaniem ...................................................................... 73
5.6.3. Tunel VPN z mostkowaniem w Windows XP ............................................ 78
5.7. OpenVPN w Windows Server z uwierzytelnianiem przez Active Directory .......... 80
5.7.1. Konfiguracja serwera .................................................................................. 81
5.7.2. Konfiguracja klienta ................................................................................... 83
5.8. OpenVPN w systemach Windows Mobile (PDA) ................................................... 84
5.8.1. Instalacja ..................................................................................................... 85

Rozdzia 6. IPSec ............................................................................................. 89


6.1. IPSec a translacja adresw (maskarada) .................................................................. 92
6.2. IPSec przygotowanie rodowiska w systemie Linux .......................................... 93
6.2.1. Instalacja programu OpenSWAN .................................................................. 94
6.3. Praktyczny przykad brama IPSec/VPN dla uytkownikw mobilnych ............. 95
6.3.1. Konfiguracja bramy IPSec (Linux) ............................................................. 96
6.4. Konfiguracja klienta Windows .............................................................................. 101
6.5. Debugowanie poczenia ...................................................................................... 104
6.6. Konfiguracja z uwierzytelnieniem przez certyfikaty ............................................. 106
6.6.1. Konfiguracja OpenSWAN z wykorzystaniem certyfikatw ..................... 106
6.7. Import certyfikatw w systemie Windows ............................................................ 108
6.7.1. Konfiguracja poczenia ........................................................................... 112
6.8. Dostp z urzdze PDA Windows Mobile 2003, 2005, 2006 ............................. 116
6.8.1. Konfiguracja Windows Mobile z kluczem wspdzielonym (PSK) ......... 116
6.8.2. Konfiguracja Windows Mobile z certyfikatami ........................................ 117
6.9. czenie oddziaw firmy tunelem IPSec ............................................................. 119

Rozdzia 7. Windows Server 2003 jako brama VPN/IPSec ............................... 125


7.1. Konfiguracja usugi Routing i dostp zdalny ........................................................ 126
7.2. Konfiguracja klienta .............................................................................................. 132
7.3. Dostp do VPN na podstawie czonkostwa w grupie ............................................ 133

Rozdzia 8. czenie oddziaw


firmy z wykorzystaniem systemw Windows Server 2003 .............. 139
8.1.
8.2.
8.3.
8.4.

Konfiguracja lokalizacji 1 Gliwice ................................................................... 140


Konfiguracja lokalizacji 2 Bytom .................................................................... 145
Konfiguracja zabezpiecze IPSec ......................................................................... 145
Debugowanie poczenia ...................................................................................... 147

Rozdzia 9. Podsumowanie ............................................................................. 149


Skorowidz .................................................................................... 153

Rozdzia 3.

SSL jako standard


bezpiecznego
przesyania danych
3.1. Historia i znaczenie protokou SSL
W odpowiedzi na problemy zwizane z brakiem zabezpiecze w popularnych protokoach internetowych firma Netscape Communications Corporation w latach 90. ubiegego wieku opracowaa protok SSL. Obecnie najpopularniejsza jest wersja trzecia
protokou SSL 3, poniewa wczeniejsze implementacje zawieray kilka bdw.
W 1996 roku za spraw IETF (ang. Internet Engineering Task Force) powstaa grupa
robocza TLS (ang. Transport Layer Security), ktra ma za zadanie rozwija oraz publikowa standard SSL.
W zaoeniach SSL powsta jako zabezpieczenie do protokou http dla potrzeb usug
e-commerce. Jednak dziki jego uniwersalnoci mona wykorzysta go do zabezpieczenia wikszoci usug TCP, a nawet do tworzenia sieci VPN, co zostanie przedstawione w niniejszej ksice.
Protok SSL zapewnia nastpujce podstawowe funkcje bezpieczestwa:
uwierzytelnianie stron czyli potwierdzenie ich autentycznoci na podstawie

certyfikatw,
poufno i integralno przesyu tzn. ochron przed podsuchaniem

i modyfikacj.
Proces uwierzytelniania przebiega przy uyciu asymetrycznych algorytmw kryptograficznych. W zwizku z powyszym kada ze stron musi posiada swj wasny
klucz prywatny (tajny) oraz klucz publiczny (certyfikat).

14

Sieci VPN. Zdalna praca i bezpieczestwo danych

Po pozytywnym uwierzytelnieniu stron nastpuje wymiana danych przy uyciu ktrego


z ustalonych, symetrycznych algorytmw kryptograficznych (s znacznie szybsze).
Aby moliwe byo potwierdzenie autentycznoci strony biorcej udzia w komunikacji, np. serwera, musi ona wylegitymowa si certyfikatem podpisanym przez zaufane
centrum certyfikacji (ang. CA Certificate Authority).
CA to zaufana instytucja, ktra zajmuje si wystawianiem certyfikatw. Do jej obowizkw naley sprawdzenie prawnych podstaw wnioskowania podmiotu o certyfikat.
Chodzi tu gwnie o prawo do nazwy firmy, nazwy domeny itd.
Na certyfikat skadaj si pola zawierajce nazw waciciela, nazw podmiotu, okres
wanoci, a take certyfikat gwnego i ewentualnie porednich centrw certyfikacji
cao stanowi tzw. ciek certyfikacji.

3.1.1. Przebieg nawizania poczenia SSL


Zanim protokoy warstwy aplikacji bd mogy wymienia dane w bezpieczny sposb,
musi nastpi nawizanie sesji SSL (ang. SSL handshake). Na SSL handshake skada
si kilka faz negocjacji, ktre przedstawiono kolejno w punktach.
1. Klient czy si z serwerem i wysya pakiet pocztkowy Hello, a wraz z nim

numer obsugiwanej wersji SSL, obsugiwane algorytmy szyfrujce, algorytmy


kompresji oraz losowy numer zwizany z rozpoczt sesj (ID).
2. Serwer w odpowiedzi wysya klientowi numer obsugiwanej wersji SSL,

obsugiwane algorytmy szyfrujce, a take swj certyfikat (klucz publiczny).


3. Na tym etapie klient sprawdza certyfikat serwera czy jest wany oraz czy

wystawi go zaufany urzd (CA). Protok SSL przewiduje take moliwo


wysania przez serwer dania o uwierzytelnienie klienta. Uwierzytelnianie
to jest opcjonalne i stosuje si je w okrelonych warunkach.
4. W przypadku pozytywnego uwierzytelnienia serwera klient generuje

48-bajtow liczb zwan pre-master secret i szyfruje j, uywajc przy


tym klucza publicznego serwera (zawartego w certyfikacie serwera). Liczba
pre-master skada si z 2 bajtw identyfikujcych klienta oraz 46 bajtw
losowych.
5. Serwer po otrzymaniu liczby pre-master odszyfrowuje j, uywajc do tego

swojego klucza prywatnego, i porwnuje pierwsze 2 bajty identyfikujce klienta


z danymi, ktre otrzyma w inicjacyjnym pakiecie Hello.
6. Jeli jest wymagane uwierzytelnienie klienta, jest to robione w tej chwili.

Wwczas klient musi przesa swj certyfikat.


7. Na podstawie ju wymienionych danych (m.in. pre-master key, losowe dane

wygenerowane w punkcie 1.) serwer i klient generuj tzw. master key (znany
tylko im).

Rozdzia 3. i SSL jako standard bezpiecznego przesyania danych

15

8. Zarwno klient, jak i serwer na podstawie master-key generuj symetryczne

klucze sesyjne, ktre umoliwiaj im szyfrowanie i sprawdzanie integralnoci


przesyanych danych1.
9. Koczc handshake, klient przesya do serwera wiadomo zaszyfrowan

ustalonym kluczem sesyjnym. Wiadomo ta, nazywana kocowym


uzgodnieniem (ang. finished handshake), jest jako pierwsza szyfrowana
tajnym kluczem.
10. Serwer odpowiada take wiadomoci zaszyfrowan za pomoc wsplnego

klucza. Od tej pory sesja SSL jest nawizana.

3.1.2. Znaczenie zaufanego certyfikatu


Co w praktyce oznacza, e dany certyfikat jest zaufany?
Oznacza to tylko (a) tyle, e zosta wystawiony przez wiarygodne (zaufane) Centrum
Certyfikacji CA. Wszystkie popularne przegldarki internetowe, programy pocztowe
i inne aplikacje korzystajce z protokou SSL maj zaszyt w sobie na stae list
zaufanych wystawcw CA (ich certyfikaty). Dziki temu podczas nawizywania poczenia SSL aplikacja nie zgasza bdu, rozpoznajc, e certyfikat zosta wystawiony
przez ktry z zaufanych CA.
Certyfikaty wystawione przez zaufane CA maj znaczenie gwnie dla publicznych
serwerw WWW, gdzie rozproszeni po caym wiecie klienci musz mie pewno,
e serwer, z ktrym si cz, jest na pewno tym, za jaki si podaje (np. sklep internetowy).
W przypadku tworzenia pocze VPN nic nie stoi na przeszkodzie, aby stworzy swoje
CA i sam wystawia certyfikaty na wasne potrzeby. Moesz przecie ufa certyfikatom, ktre sam wygenerowae, i instalowa je na laptopach pracownikw.
W przeciwiestwie do serwera WWW i przegldarek internetowych w zastosowaniach VPN-owych czsto wane jest uwierzytelnienie klienta przez serwer (bram VPN).
Nie chcemy przecie, aby do sieci korporacyjnej mg podczy si ktokolwiek
na wiecie posiadajcy klienta VPN, a jedynie osoby posiadajce odpowiednie certyfikaty.
Kolejny punkt tego rozdziau zawiera opis programu OpenSSL wraz z przykadami
tworzenia kluczy, wnioskw i certyfikatw.

Na podstawie master-key generowanych jest sze kluczy trzy w kierunku serwer-klient i trzy
w drug stron. Klucze te su do szyfrowania i sprawdzania integralnoci danych. Zainteresowanych
Czytelnikw odsyam do dokumentacji dostpnej na stronie korporacji Netscape: http://wp.netscape.com/
eng/ssl3/draft302.txt.

16

Sieci VPN. Zdalna praca i bezpieczestwo danych

3.2. Generowanie certyfikatw


przy uyciu programu OpenSSL
Wikszo programw opisanych w tej ksice do uwierzytelniania stron wykorzystuje
protok SSL. Informacje zawarte w tym rozdziale, a w szczeglnoci przykady generowania kluczy i certyfikatw X.509, wykorzystywane bd czsto w dalszej czci
ksiki. Aby unikn wielokrotnego opisywania tych samych czynnoci w nastpnych
rozdziaach, bd odsya Czytelnika do instrukcji zawartych w niniejszym punkcie.
Do stworzenia wasnego CA, generowania kluczy, wnioskw i certyfikatw bdziemy
uywali najpopularniejszej w wiecie open source biblioteki openssl. Biblioteka ta
zawiera implementacj protokow SSL i TLS oraz wikszo uywanych algorytmw
kryptograficznych. Korzysta z niej szereg znanych aplikacji wykorzystujcych algorytmy szyfrujce, jak np. OpenSSH, OpenVPN, ApacheSSL itp.
Biblioteka openssl dostarczana jest standardowo wraz z popularnymi dystrybucjami
Linuksa. Najprawdopodobniej bibliotek t masz zainstalowan w systemie. Aby si
o tym przekona, wpisz po prostu polecenie openssl. Powinien zgosi si znak zachty programu: OpenSSL>. W przeciwnym razie musisz j zainstalowa w sposb typowy dla swojej dystrybucji. Ostatecznie moesz pobra rda najnowszej wersji ze
strony http://openssl.org i wasnorcznie skompilowa program.
Wersja instalacyjna pod systemy Windows dostpna jest na stronie http://www.slproweb.
com/products.html.
Zanim przejdziemy do generowania certyfikatw dla serwerw i klientw, musimy stworzy wasny Urzd Certyfikacji (CA). Na pocztku dwie uwagi oglne.
Wane jest, aby swoje CA utworzy na jakim bezpiecznym komputerze odczonym
od internetu albo przynajmniej za firewallem, tak aby nie by on bezporednio widoczny w internecie.
Wane jest take regularne robienie kopii bezpieczestwa wystawionych certyfikatw
oraz caego katalogu ssl, tak aby w razie potrzeby mona byo uniewani ktry
z certyfikatw.
Zakadam, e masz zainstalowany pakiet OpenSSL. Jeeli nie, to musisz go zainstalowa, uywajc menedera pakietw swojej dystrybucji, lub skompilowa program
samodzielnie.

3.2.1. Tworzenie wasnego CA


W pierwszej kolejnoci odnajdujemy plik openssl.cnf. Prawdopodobne lokalizacje tego
pliku to:
/etc/ssl/openssl.cnf dla programu instalowanego z paczek (np. Debian),
/usr/local/etc/openssl.cnf w przypadku wersji kompilowanej rcznie,

Rozdzia 3. i SSL jako standard bezpiecznego przesyania danych

17

C:\OpenSSL\bin dla systemw Win32.

W pliku tym odnajdujemy sekcj [ CA_default ]. Zmie wpisy u siebie tak, aby wyglday jak te z listingu 3.2.1.1.
Listing 3.2.1.1. Wycinek pliku openssl.cnf
[ CA_default ]
dir = /etc/ssl
certs = /etc/ssl/certs
crl_dir = $dir/crl
private_key = $dir/private/cakey.pem
database = $dir/index.txt
certificate = $dir/cacert.pem
serial = $dir/serial
crl = $dir/crl.pem

#
#
#
#
#
#
#
#
#

gwny katalog, w ktrym zapisywane s pliki


katalog, w ktrym zapisywane s certyfikaty
katalog z list certyfikatw uniewanionych (CRL)
klucz prywatny CA
baza, w ktrej przechowywane s informacje
o wystawionych certyfikatach wraz ze statusem
Certyfikat CA do podpisu wnioskw
plik pomocniczy z biecym numerem inkrementowany
po kadym wystawieniu certyfikatu
bieca lista certyfikatw uniewanionych

Upewniamy si, czy istnieje katalog podany w zmiennej dir, czyli /etc/ssl, oraz wszystkie
jego podkatalogi. Jeeli nie, musimy je zaoy. Dla katalogu ssl/private ustaw uprawnienia tak, aby tylko uytkownik root mg do niego wej.
Stwrz pliki /etc/ssl/index.txt oraz /etc/ssl/serial, uywajc komend podanych poniej.
root@ca:~# touch /etc/ssl/index.txt
root@ca:~# echo 00 > /etc/ssl/serial

#(ma by pusty)
#(ma zawiera wpis 00)

Przystpujemy do generowania klucza prywatnego centrum certyfikacji CA. Jest to


czynno jednorazowa, tzn. po wygenerowaniu klucza prywatnego CA, a nastpnie
odpowiadajcego mu certyfikatu bdziesz uywa ich do podpisywania innych certyfikatw. Pamitaj, aby zarchiwizowa pliki z katalogu /etc/ssl w bezpiecznym miejscu.
Bdc w katalogu /etc/ssl, wydajemy nastpujce polecenie:
root@ca:/etc/ssl# openssl genrsa -des3 -out private/cakey.pem 1024
Generating RSA private key, 1024 bit long modulus
........++++++
...++++++
e is 65537 (0x10001)
Enter pass phrase for private/cakey.pem: <podaj haso klucza prywatnego CA>

Po potwierdzeniu hasa do klucza prywatnego CA klucz zostanie zapisany w pliku


private/cakey.pem. Nie zapomnij hasa do tego klucza, bdzie Ci nieraz potrzebne.
Kolejn czynnoci jest wygenerowanie certyfikatu CA. W tym celu wpisujemy nastpujce polecenie:
root@ca:/etc/ssl# openssl req -new -x509 -days 365 -key private/cakey.pem -out
cacert.pem

Zostaniemy poproszeni o podanie kilku pl zawartych w certyfikacie.


Country Name (2 letter code) [AU]:PL
State or Province Name (full name) [Some-State]:Slask

18

Sieci VPN. Zdalna praca i bezpieczestwo danych


Locality Name (eg, city) []:Gliwice
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Moja Firma Sp. z o.o.
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []: ca.firma.pl
Email Address []:

Znaczenie powyszych pl jest raczej jasne, zwracam jedynie uwag na pole Common
Name, ktre powinno zawiera nazw podmiotu np. nazw uytkownika lub jednostki. W tym przypadku, gdy generujesz certyfikat dla CA, wpisz tutaj nazw swojej
organizacji sownie (np. Firma SA) albo podaj np. nazw domeny.
Po podaniu hasa do klucza prywatnego certyfikat zostanie zapisany w pliku cacert.pem.
W powyszym przykadzie czas wanoci certyfikatu wynosi bdzie 1 rok. Mona
go oczywicie wyduy.
Na tym zakoczylimy tworzenie wasnego urzdu CA. Majc pliki cakey.pem i cacert.
pem, czyli klucz prywatny i publiczny CA, moemy ju wystawia certyfikaty innym
podmiotom.

3.2.2. Tworzenie klucza prywatnego dla serwera


Celem stworzenia klucza prywatnego dla serwera wpisujemy nastpujce polecenie:
root@ca:/etc/ssl# openssl genrsa -des3 -out private/serverkey.pem 1024

Program OpenSSL zapyta o haso bdzie to haso klucza prywatnego serwera. Klucz
prywatny zapisany zostanie w pliku private/serverkey.pem.
Nastpn czynnoci jest wygenerowanie wniosku o wystawienie certyfikatu.

3.2.3. Generowanie wniosku


o wystawienie certyfikatu
root@ca:/etc/ssl# openssl req -new -key private/serverkey.pem -out serverreq.pem

Bdziesz musia poda haso klucza prywatnego serwera (to, ktre podawae przed
chwil). Jeeli haso bdzie poprawne, zostaniesz zapytany o dane do wniosku, zgodnie z listingiem poniej.
Country Name (2 letter code) [AU]:PL
State or Province Name (full name) [Some-State]:Slask
Locality Name (eg, city) []:Gliwice
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Moja Firma Sp. z o.o.
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []: server.firma.pl
Email Address []:

Zwracam tutaj uwag na pole Common Name. W przypadku certyfikatw dla serwerw
pole to powinno zawiera pen nazw domenow, pod jak serwer dziaa w internecie

Rozdzia 3. i SSL jako standard bezpiecznego przesyania danych

19

(tzw. FQDN). Jest to wane, poniewa jeli pole Common Name nie pokrywa si z naw
domenow, niektre programy zgaszaj niezgodno certyfikatu z adresem serwera
(zwaszcza przegldarki i klienty poczty).
Wniosek zostanie zapisany w pliku serverreq.pem. Kolejnym krokiem bdzie podpisanie go przez nasze CA, czyli wystawienie mu certyfikatu.

3.2.4. Wystawianie certyfikatu dla serwera


Celem wystawienia certyfikatu dla podmiotu (serwera) musisz podpisa jego wniosek.
Aby to uczyni, wpisz ponisze polecenie.
root@ca:/etc/ssl# openssl ca -notext -in serverreq.pem -out servercert.pem

Zostaniesz zapytany o haso do klucza prywatnego CA cakey.pem (nie myl z hasem


do klucza prywatnego serwera!).
Nastpnie OpenSSL pokae szczegy certyfikatu i zapyta, czy chcesz go podpisa.
Operacja podpisu wyglda tak, jak pokazano na listingu 3.2.4.1.
Listing 3.2.4.1. Komunikaty pojawiajce si podczas wystawiania certyfikatu
Signature ok
Certificate Details:
Serial Number: 5 (0x5)
Validity
Not Before: Sep 17 12:59:06 2007 GMT
Not After : Sep 16 12:59:06 2008 GMT
Subject:
countryName = PL
stateOrProvinceName = Slask
organizationName = Moja Firma Sp. z o.o.
organizationalUnitName =
commonName = server.firma.pl
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
0E:CE:3E:06:C4:46:53:78:B0:05:AB:18:9B:BA:90:79:9B:A1:A5:C8
X509v3 Authority Key Identifier:
keyid:FC:B8:73:29:C6:E4:50:B2:3E:CE:0A:78:8C:62:90:A5:62:3C:87:1B
DirName:/C=PL/ST=Slask/L=Gliwice/O=Moja Firma Sp. z o.o./
CN=ca.firma.pl/emailAddress=admin@firma.pl
serial:97:1B:4E:CE:0B:5F:CE:E2
Certificate is to be certified until Sep 16 12:59:06 2008 GMT (365 days)
Sign the certificate? [y/n]: y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

20

Sieci VPN. Zdalna praca i bezpieczestwo danych

Moesz teraz podejrze zawarto plikw index.txt oraz serial, ktre zostay zaktualizowane po podpisaniu wniosku. Uwaaj na plik index.txt, jest on potrzebny przy odwoywaniu certyfikatu (generowaniu CRL).
Mamy ju par kluczy dla serwera. Przy zestawianiu sieci VPN bd potrzebne te
klucze i certyfikaty dla uytkownikw. Generujemy je w sposb analogiczny jak dla
serwera, zgodnie z punktami 3.2.2 3.2.4. Zwr uwag, aby w polu Common Name
podawa dane jednoznacznie identyfikujce uytkownika np. jego login korporacyjny. Niektre programy po Common Name identyfikuj uytkownikw.
Jeszcze jeden szczeg dotyczcy hasa zabezpieczajcego klucz prywatny. W momencie uruchamiania aplikacji korzystajcej z tego klucza bdziemy zmuszeni wpisywa haso z klawiatury. W praktyce na serwerach aplikacja czsto dziaa jako usuga
uruchamiana w trakcie startu systemu i oczekiwanie na wpisanie hasa jest niezadowalajcym rozwizaniem. W takich sytuacjach moemy cign haso z klucza prywatnego. Naley jednak pamita, aby dostp do klucza mia jedynie administrator
serwera (root). Komenda przedstawiona w punkcie 3.2.5 umoliwia cignicie hasa
z klucza prywatnego.

3.2.5. ciganie hasa z klucza prywatnego serwera


# openssl rsa -in private/serverkey.pem -out private/serverkey.pem_bezhasla

Nie zalecam natomiast cigania hase z kluczy prywatnych uytkownikw zdalnych.


Jest to dodatkowe zabezpieczenie. W razie kradziey laptopa dostp do VPN nie bdzie moliwy bez znajomoci hasa.

3.2.6. Uniewanianie certyfikatw


Prdzej czy pniej zajdzie potrzeba uniewanienia ktrego z certyfikatw. Klasycznym
przykadem jest odejcie pracownika lub kradzie laptopa. Do uniewanienia certyfikatu suy parametr revoke programu OpenSSL. Przykadowo aby przystpi do uniewanienia certyfikatu osobie Jan Kowalski (jkowalskicert.pem), wpisz polecenie:
root@srv:/etc/ssl# openssl ca -revoke jkowalskicert.pem

OpenSSL zapyta o haso klucza CA i po podaniu prawidowego uniewani certyfikat:


Using configuration from /usr/lib/ssl/openssl.cnf
Enter pass phrase for /etc/ssl/private/cakey.pem:
DEBUG[load_index]: unique_subject = "yes"
Revoking Certificate 04.
Data Base Updated

Musimy jeszcze wygenerowa list CRL, w ktrej zapisane s uniewanione certyfikaty. Robimy to zgodnie z punktem 3.2.7.

Rozdzia 3. i SSL jako standard bezpiecznego przesyania danych

21

3.2.7. Generowanie listy CRL


(uniewanionych certyfikatw)
root@ca:/etc/ssl# openssl ca -gencrl -out crl.pem

Plik crl.pem naley przegra pniej na waciwy serwer i wskaza w aplikacji korzystajcej z certyfikatw (szczegy w dalszej czci ksiki).

3.2.8. Rne formaty certyfikatw


Naley wspomnie jeszcze o rnych formatach plikw, w ktrych zapisywane s
klucze i certyfikaty. Niestety, nie ma tu jednego standardu i rni producenci preferuj rne formaty. Niemniej za pomoc programu OpenSSL moesz je konwertowa
z jednego formatu na inny. Klucze prywatne najczciej zapisywane s w formie PEM
lub DER (binarny). Dla certyfikatw uywane s formaty PEM, DER oraz PKCS12.
Aplikacje bazujce na bibliotece openssl, czyli wszystkie uniksowe, uywaj na og
formatu PEM.
Formaty DER i PKCS12 rozpowszechnione s w systemach Microsoftu. Format PKCS12
przechowuje w jednym pliku klucz prywatny zabezpieczony hasem i odpowiadajcy
mu certyfikat. Poprzednikiem PKCS12 by przestarzay obecnie format PFX; jakkolwiek firma Microsoft uywa rozszerze plikw PFX dla formatu PKCS12.
Aby przekonwertowa certyfikat z jednej postaci na drug, musisz przekaza programowi OpenSSL odpowiednie parametry. W tabeli 3.2.8.1 przedstawiono skadni programu dla kilku popularnych przeksztace.
Tabela 3.2.8.1. Skadnia programu OpenSSL potrzebna do konwersji certyfikatw
Format wejciowy

Format wyjciowy

Skadnia OpenSSL

PEM

DER

openssl x509 -in cert.pem -out cert.der


-outform DER

DER

PEM

openssl x509 -in cert.der inform DER


out cert.pem -outform PEM

DER key

PEM key

openssl rsa in input.key inform DER


output.key outform PEM

PEM

PKCS#12

openssl pkcs12 -export -out cert.p12 -inkey


userkey.pem -in usercert.pem

PKCS#12

PEM CERT

openssl pkcs12 -clcerts -nokeys in cert.p12


-out usercert.pem

PKCS#12

PEM KEY

openssl pkcs12 -nocerts -in cert.p12


out userkey.pem

out

Aby wywietli informacj o certyfikacie, np. informacje podane podczas tworzenia


wniosku, naley uruchomi program OpenSSL z nastpujcymi parametrami:
ca:/etc/ssl# openssl x509 -in servercert.pem -subject noout
subject= /C=PL/ST=Slask/O=Helion/CN=server1

22

Sieci VPN. Zdalna praca i bezpieczestwo danych

Jeli dodasz parametr -issuer, OpenSSL zwrci take informacj o wystawcy (CA):
ca:/etc/ssl# openssl x509 -in servercert.pem -issuer -subject noout
subject= /C=PL/ST=Slask/O=Helion/CN=server1
issuer= /C=PL/ST=Slask/L=Gliwice/O=Helion/CN=CA

Jeeli certyfikat jest w formie binarnej (DER), do powyszej skadni naley doda parametr -inform DER.

3.3. Kompilacja biblioteki openssl


ze rde
Koczc rozdzia dotyczcy biblioteki openssl, zamieszczam instrukcj opisujc, jak
skompilowa i zainstalowa bibliotek rcznie. Powodw, dla ktrych miaby samodzielnie kompilowa program OpenSSL, moe by kilka. Najbardziej prawdopodobny z nich to ch podania przy kompilacji jakiej opcji, ktrej nie przewidzieli
twrcy dystrybucji Twojego systemu. Innym powodem moe by ch zaktualizowania
istniejcej wersji w dystrybucjach, ktre nie maj dobrze zorganizowanego systemu
aktualizacji (np. Slackware ;-)).
Jeli decydujesz si na wasn kompilacj, musisz sukcesywnie aktualizowa bibliotek
w razie pojawienia si wykrytych bdw.
W dystrybucji Debian, ktrej uywam, paczka SSL dostarczana wraz z systemem nie
bya skompilowana z obsug biblioteki zlib, w zwizku z czym nie mogem uy tego
algorytmu kompresji w programie Stunnel.
Jeli z jakich powodw chcesz skompilowa bibliotek openssl, poniej w punktach
zamieszczam opis, jak to zrobi.
1. Pobierz ze strony http://www.openssl.org/source/ rda najnowszej wersji

pakietu i zapisz w katalogu /usr/src/.


2. Porwnaj warto MD5 pliku pobranego z sieci (polecenie md5sum)

z wartoci udostpnion na stronie openssl.org.


3. Rozpakuj zawarto archiwum poleceniem tar zxf openssl-<nr_wersji>.tar.gz.
4. Przejd do katalogu openssl-<nr_wersji>.
5. Przed przystpieniem do kompilacji musisz ustali, w ktrym katalogu

program ma zosta zainstalowany oraz z jakimi dodatkowymi opcjami,


podajc je jako parametry skryptu ./config. W poniszym przykadzie
skompilujemy program z obsug biblioteki zlib, a wynikowy program
zostanie zainstalowany w katalogu /usr/local/openssl. Wpisz polecenie:
srv:~# ./config --prefix=/usr/local

zlib

6. Jeli skrypt ./config nie zgosi bdu, moemy przej do waciwej kompilacji
programu. W tym celu wpisz polecenie make.

Rozdzia 3. i SSL jako standard bezpiecznego przesyania danych


7. Proces kompilacji moe potrwa kilka minut, po jego zakoczeniu moesz

przej do ostatniego kroku instalacji skompilowanych plikw we waciwych


katalogach.
8. Aby zakoczy instalacj, wpisz polecenie make install.

23

You might also like