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 połączyć oddziały firm za pomocą tunelu IPSec?
Serwery plików i baz danych spotykamy niemal w każdej firmie. Architektura klient-serwer umożliwia dostęp do aplikacji nie tylko wewnątrz firmy, ale także z dowolnego innego miejsca. Rozwój sieci pozwolił wielu organizacjom na sprawną komunikację i otworzył perspektywy dla tych pracowników, którzy z różnych względów wykonują swoje obowiązki poza biurem. Niestety -- zdalny dostęp do firmowej infrastruktury IT niesie ze sobą także zagrożenia związane z możliwością utraty, uszkodzenia lub wydostania się na zewnątrz cennych danych. Rozwiązaniem tego problemu są łącza szyfrowane, nazywane VPN.
Książka "Sieci VPN. Zdalna praca i bezpieczeństwo danych" to praktyczny przewodnik dla administratorów sieci firmowych, którzy zajmują się wdrażaniem rozwiązań umożliwiających pracę na odległość. Opisuje wszystkie aspekty konfigurowania tuneli VPN z wykorzystaniem protokołów SSL (OpenVPN) i IPSec (OpenSWAN) w systemach Linux i Windows. Czytając ją, poznasz standard SSL, zasady generowania certyfikatów oraz metody implementacji sieci VPN. Analizując zawarte w książce przykłady, nauczysz się otwierać zdalny dostęp do sieci korporacyjnej, łączyć oddziały firmy za pomocą IPSec i uruchamiać tunele VPN w urządzeniach mobilnych.
* Zagrożenia wynikające z konstrukcji protokołu TCP/IP
* Przesyłanie danych z wykorzystaniem SSL
* Zapewnianie pracownikom zdalnego dostępu do zasobów firmy
* Generowanie kluczy
* Tworzenie tuneli SSH
* Instalacja i konfiguracja programu OpenVPN
* Tunele VPN w urządzeniach mobilnych
* Implementacja IPSEC/L2TP w systemie Linux
* Konfiguracja VPN w systemie Windows
Zabezpiecz dostęp do swojej sieci.
Skorzystaj z wiedzy doświadczonego administratora.
1. Sieci VPN. Zdalna praca
i bezpieczeñstwo 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 po³¹czyæ oddzia³y firm za pomoc¹ tunelu IPSec?
Serwery plików i baz danych spotykamy niemal w ka¿dej firmie. Architektura
klient-serwer umo¿liwia dostêp do aplikacji nie tylko wewn¹trz firmy, ale tak¿e
z dowolnego innego miejsca. Rozwój sieci pozwoli³ wielu organizacjom na sprawn¹
komunikacjê i otworzy³ perspektywy dla tych pracowników, którzy z ró¿nych wzglêdów
wykonuj¹ swoje obowi¹zki poza biurem. Niestety – zdalny dostêp do firmowej
infrastruktury IT niesie ze sob¹ tak¿e zagro¿enia zwi¹zane z mo¿liwoœci¹ utraty,
uszkodzenia lub wydostania siê na zewn¹trz cennych danych. Rozwi¹zaniem tego
problemu s¹ ³¹cza szyfrowane, nazywane VPN.
Ksi¹¿ka „Sieci VPN. Zdalna praca i bezpieczeñstwo danych” to praktyczny przewodnik
dla administratorów sieci firmowych, którzy zajmuj¹ siê wdra¿aniem rozwi¹zañ
umo¿liwiaj¹cych pracê na odleg³oœæ. Opisuje wszystkie aspekty konfigurowania tuneli
VPN z wykorzystaniem protoko³ów SSL (OpenVPN) i IPSec (OpenSWAN) w systemach
Linux i Windows. Czytaj¹c j¹, poznasz standard SSL, zasady generowania certyfikatów
oraz metody implementacji sieci VPN. Analizuj¹c zawarte w ksi¹¿ce przyk³ady,
nauczysz siê otwieraæ zdalny dostêp do sieci korporacyjnej, ³¹czyæ oddzia³y firmy
za pomoc¹ IPSec i uruchamiaæ tunele VPN w urz¹dzeniach mobilnych.
• Zagro¿enia wynikaj¹ce z konstrukcji protoko³u TCP/IP
• Przesy³anie danych z wykorzystaniem SSL
• Zapewnianie pracownikom zdalnego dostêpu do zasobów firmy
• Generowanie kluczy
Wydawnictwo Helion • Tworzenie tuneli SSH
ul. Koœciuszki 1c • Instalacja i konfiguracja programu OpenVPN
44-100 Gliwice • Tunele VPN w urz¹dzeniach mobilnych
tel. 032 230 98 63 • Implementacja IPSEC/L2TP w systemie Linux
e-mail: helion@helion.pl
• Konfiguracja VPN w systemie Windows
Zabezpiecz dostêp do swojej sieci.
Skorzystaj z wiedzy doœwiadczonego administratora
2. Spis tre ci
Przedmowa ...................................................................................... 7
Rozdzia 1. Wst p .............................................................................................. 9
Rozdzia 2. S abo protoko ów sieciowych i zwi zane z tym problemy .............. 11
Rozdzia 3. SSL jako standard bezpiecznego przesy ania danych ........................ 13
3.1. Historia i znaczenie protoko u SSL ......................................................................... 13
3.1.1. Przebieg nawi zania po czenia SSL .......................................................... 14
3.1.2. Znaczenie zaufanego certyfikatu ................................................................ 15
3.2. Generowanie certyfikatów przy u yciu programu OpenSSL .................................. 16
3.2.1. Tworzenie w asnego 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. ci ganie has a z klucza prywatnego serwera ............................................ 20
3.2.6. Uniewa nianie certyfikatów ....................................................................... 20
3.2.7. Generowanie listy CRL (uniewa nionych certyfikatów) ............................ 21
3.2.8. Ró ne formaty certyfikatów ....................................................................... 21
3.3. Kompilacja biblioteki openssl ze róde .................................................................. 22
Rozdzia 4. Tunelowanie portów ....................................................................... 25
4.1. Program Stunnel ...................................................................................................... 26
4.1.1. stunnel.conf ................................................................................................ 29
4.1.2. Przyk ad 1 ................................................................................................... 31
4.1.3. Przyk ad 2 ................................................................................................... 33
4.2. Tunele SSH ............................................................................................................. 35
4.2.1. Przyk ad 1 ................................................................................................... 35
4.2.2. Przyk ad 2 — SSH jako Socks Proxy ......................................................... 37
4.2.3. Przyk ad 3 — tunele z przekazywaniem zdalnym ...................................... 37
4.2.4. Przyk ad 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 róde programu (Linux) ................................ 46
5.1.3. Instalacja pod systemami MS Windows ..................................................... 50
5.2. Konfiguracja OpenVPN .......................................................................................... 52
3. 4 Sieci VPN. Zdalna praca i bezpiecze stwo danych
5.3. Praktyczny przyk ad — zdalny dost p do zasobów firmy dla pracowników .......... 53
5.3.1. Generowanie certyfikatów SSL .................................................................. 54
5.3.2. Konfiguracja po stronie serwera ................................................................. 55
5.3.3. Uruchomienie us ugi serwera OpenVPN .................................................... 57
5.3.4. Konfiguracja klienta ................................................................................... 58
5.4. Bardziej z o ona konfiguracja z wieloma u ytkownikami ...................................... 59
5.4.1. Przypisywanie sta ych adresów IP u ytkownikom ..................................... 62
5.4.2. Pliki ustawie u ytkowników 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. Uniewa nianie certyfikatów .................................................................................... 67
5.6. czenie oddzia ów firmy ....................................................................................... 68
5.6.1. Przyk ad rozwi zania 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 adresów (maskarada) .................................................................. 92
6.2. IPSec — przygotowanie rodowiska w systemie Linux .......................................... 93
6.2.1. Instalacja programu OpenSWAN .................................................................. 94
6.3. Praktyczny przyk ad — brama IPSec/VPN dla u ytkowników mobilnych ............. 95
6.3.1. Konfiguracja bramy IPSec (Linux) ............................................................. 96
6.4. Konfiguracja klienta Windows .............................................................................. 101
6.5. Debugowanie po czenia ...................................................................................... 104
6.6. Konfiguracja z uwierzytelnieniem przez certyfikaty ............................................. 106
6.6.1. Konfiguracja OpenSWAN z wykorzystaniem certyfikatów ..................... 106
6.7. Import certyfikatów w systemie Windows ............................................................ 108
6.7.1. Konfiguracja po czenia ........................................................................... 112
6.8. Dost p z urz dze PDA — Windows Mobile 2003, 2005, 2006 ............................. 116
6.8.1. Konfiguracja Windows Mobile z kluczem wspó dzielonym (PSK) ......... 116
6.8.2. Konfiguracja Windows Mobile z certyfikatami ........................................ 117
6.9. czenie oddzia ów firmy tunelem IPSec ............................................................. 119
Rozdzia 7. Windows Server 2003 jako brama VPN/IPSec ............................... 125
7.1. Konfiguracja us ugi Routing i dost p zdalny ........................................................ 126
7.2. Konfiguracja klienta .............................................................................................. 132
7.3. Dost p do VPN na podstawie cz onkostwa w grupie ............................................ 133
Rozdzia 8. czenie oddzia ów
firmy z wykorzystaniem systemów Windows Server 2003 .............. 139
8.1. Konfiguracja lokalizacji 1 — Gliwice ................................................................... 140
8.2. Konfiguracja lokalizacji 2 — Bytom .................................................................... 145
8.3. Konfiguracja zabezpiecze IPSec ......................................................................... 145
8.4. Debugowanie po czenia ...................................................................................... 147
Rozdzia 9. Podsumowanie ............................................................................. 149
Skorowidz .................................................................................... 153
4. Rozdzia 3.
SSL jako standard
bezpiecznego
przesy ania danych
3.1. Historia i znaczenie protoko u SSL
W odpowiedzi na problemy zwi zane z brakiem zabezpiecze w popularnych protoko-
ach internetowych firma Netscape Communications Corporation w latach 90. ubie-
g ego wieku opracowa a protokó SSL. Obecnie najpopularniejsza jest wersja trzecia
protoko u — SSL 3, poniewa wcze niejsze implementacje zawiera y kilka b dów.
W 1996 roku za spraw IETF (ang. Internet Engineering Task Force) powsta a grupa
robocza TLS (ang. Transport Layer Security), która ma za zadanie rozwija oraz pu-
blikowa standard SSL.
W za o eniach SSL powsta jako zabezpieczenie do protoko u http dla potrzeb us ug
e-commerce. Jednak dzi ki jego uniwersalno ci mo na wykorzysta go do zabezpie-
czenia wi kszo ci us ug TCP, a nawet do tworzenia sieci VPN, co zostanie przedsta-
wione w niniejszej ksi ce.
Protokó SSL zapewnia nast puj ce podstawowe funkcje bezpiecze stwa:
uwierzytelnianie stron — czyli potwierdzenie ich autentyczno ci na podstawie
certyfikatów,
poufno i integralno przesy u — tzn. ochron przed pods uchaniem
i modyfikacj .
Proces uwierzytelniania przebiega przy u yciu asymetrycznych algorytmów kryp-
tograficznych. W zwi zku z powy szym ka da ze stron musi posiada swój w asny
klucz prywatny (tajny) oraz klucz publiczny (certyfikat).
5. 14 Sieci VPN. Zdalna praca i bezpiecze stwo danych
Po pozytywnym uwierzytelnieniu stron nast puje wymiana danych przy u yciu którego
z ustalonych, symetrycznych algorytmów kryptograficznych (s znacznie szybsze).
Aby mo liwe by o potwierdzenie autentyczno ci strony bior cej udzia w komunika-
cji, np. serwera, musi ona wylegitymowa si certyfikatem podpisanym przez zaufane
centrum certyfikacji (ang. CA — Certificate Authority).
CA to zaufana instytucja, która zajmuje si wystawianiem certyfikatów. Do jej obo-
wi zków nale y sprawdzenie prawnych podstaw wnioskowania podmiotu o certyfikat.
Chodzi tu g ównie o prawo do nazwy firmy, nazwy domeny itd.
Na certyfikat sk adaj si pola zawieraj ce nazw w a ciciela, nazw podmiotu, okres
wa no ci, a tak e certyfikat g ównego i ewentualnie po rednich centrów certyfikacji
— ca o stanowi tzw. cie k certyfikacji.
3.1.1. Przebieg nawi zania po czenia SSL
Zanim protoko y warstwy aplikacji b d mog y wymienia dane w bezpieczny sposób,
musi nast pi nawi zanie sesji SSL (ang. SSL handshake). Na SSL handshake sk ada
si kilka faz negocjacji, które przedstawiono kolejno w punktach.
1. Klient czy si z serwerem i wysy a pakiet pocz tkowy Hello, a wraz z nim
numer obs ugiwanej wersji SSL, obs ugiwane algorytmy szyfruj ce, algorytmy
kompresji oraz losowy numer zwi zany z rozpocz t sesj (ID).
2. Serwer w odpowiedzi wysy a klientowi numer obs ugiwanej wersji SSL,
obs ugiwane algorytmy szyfruj ce, a tak e swój certyfikat (klucz publiczny).
3. Na tym etapie klient sprawdza certyfikat serwera — czy jest wa ny oraz czy
wystawi go zaufany urz d (CA). Protokó SSL przewiduje tak e mo liwo
wys ania przez serwer dania o uwierzytelnienie klienta. Uwierzytelnianie
to jest opcjonalne i stosuje si je w okre lonych warunkach.
4. W przypadku pozytywnego uwierzytelnienia serwera klient generuje
48-bajtow liczb zwan „pre-master secret” i szyfruje j , u ywaj c przy
tym klucza publicznego serwera (zawartego w certyfikacie serwera). Liczba
„pre-master” sk ada si z 2 bajtów identyfikuj cych klienta oraz 46 bajtów
losowych.
5. Serwer po otrzymaniu liczby „pre-master” odszyfrowuje j , u ywaj c do tego
swojego klucza prywatnego, i porównuje pierwsze 2 bajty identyfikuj ce klienta
z danymi, które otrzyma w inicjacyjnym pakiecie Hello.
6. Je li jest wymagane uwierzytelnienie klienta, jest to robione w tej chwili.
Wówczas klient musi przes a swój 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).
6. Rozdzia 3. SSL jako standard bezpiecznego przesy ania danych 15
8. Zarówno klient, jak i serwer na podstawie master-key generuj symetryczne
klucze sesyjne, które umo liwiaj im szyfrowanie i sprawdzanie integralno ci
przesy anych danych1.
9. Ko cz c handshake, klient przesy a do serwera wiadomo zaszyfrowan
ustalonym kluczem sesyjnym. Wiadomo ta, nazywana ko cowym
uzgodnieniem (ang. finished handshake), jest jako pierwsza szyfrowana
tajnym kluczem.
10. Serwer odpowiada tak e wiadomo ci zaszyfrowan za pomoc wspólnego
klucza. Od tej pory sesja SSL jest nawi zana.
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 przegl darki internetowe, programy pocztowe
i inne aplikacje korzystaj ce z protoko u SSL maj „zaszyt ” w sobie na sta e list
zaufanych wystawców CA (ich certyfikaty). Dzi ki temu podczas nawi zywania po -
czenia SSL aplikacja nie zg asza b du, rozpoznaj c, e certyfikat zosta wystawiony
przez który z zaufanych CA.
Certyfikaty wystawione przez zaufane CA maj znaczenie g ównie dla publicznych
serwerów WWW, gdzie rozproszeni po ca ym wiecie klienci musz mie pewno ,
e serwer, z którym si cz , jest na pewno tym, za jaki si podaje (np. sklep inter-
netowy).
W przypadku tworzenia po cze VPN nic nie stoi na przeszkodzie, aby stworzy swoje
CA i sam wystawia certyfikaty na w asne potrzeby. Mo esz przecie ufa certyfika-
tom, które sam wygenerowa e , i instalowa je na laptopach pracowników.
W przeciwie stwie do serwera WWW i przegl darek internetowych w zastosowa-
niach VPN-owych cz sto wa ne jest uwierzytelnienie klienta przez serwer (bram VPN).
Nie chcemy przecie , aby do sieci korporacyjnej móg pod czy si ktokolwiek
na wiecie posiadaj cy klienta VPN, a jedynie osoby posiadaj ce odpowiednie certy-
fikaty.
Kolejny punkt tego rozdzia u zawiera opis programu OpenSSL wraz z przyk adami
tworzenia kluczy, wniosków i certyfikatów.
1
Na podstawie master-key generowanych jest sze kluczy — trzy w kierunku serwer-klient i trzy
w drug stron . Klucze te s u do szyfrowania i sprawdzania integralno ci danych. Zainteresowanych
Czytelników odsy am do dokumentacji dost pnej na stronie korporacji Netscape: http://wp.netscape.com/
eng/ssl3/draft302.txt.
7. 16 Sieci VPN. Zdalna praca i bezpiecze stwo danych
3.2. Generowanie certyfikatów
przy u yciu programu OpenSSL
Wi kszo programów opisanych w tej ksi ce do uwierzytelniania stron wykorzystuje
protokó SSL. Informacje zawarte w tym rozdziale, a w szczególno ci przyk ady ge-
nerowania kluczy i certyfikatów X.509, wykorzystywane b d cz sto w dalszej cz ci
ksi ki. Aby unikn wielokrotnego opisywania tych samych czynno ci w nast pnych
rozdzia ach, b d odsy a Czytelnika do instrukcji zawartych w niniejszym punkcie.
Do stworzenia w asnego CA, generowania kluczy, wniosków i certyfikatów b dziemy
u ywali najpopularniejszej w wiecie „open source” biblioteki openssl. Biblioteka ta
zawiera implementacj protoko ów SSL i TLS oraz wi kszo u ywanych algorytmów
kryptograficznych. Korzysta z niej szereg znanych aplikacji wykorzystuj cych algo-
rytmy szyfruj ce, 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 zg osi si znak za-
ch ty programu: OpenSSL>. W przeciwnym razie musisz j zainstalowa w sposób ty-
powy dla swojej dystrybucji. Ostatecznie mo esz pobra ród a najnowszej wersji ze
strony http://openssl.org i w asnor cznie skompilowa program.
Wersja instalacyjna pod systemy Windows dost pna jest na stronie http://www.slproweb.
com/products.html.
Zanim przejdziemy do generowania certyfikatów dla serwerów i klientów, musimy stwo-
rzy w asny Urz d Certyfikacji (CA). Na pocz tku dwie uwagi ogólne.
Wa ne jest, aby swoje CA utworzy na jakim bezpiecznym komputerze od czonym
od internetu albo przynajmniej za firewallem, tak aby nie by on bezpo rednio „wi-
doczny” w internecie.
Wa ne jest tak e regularne robienie kopii bezpiecze stwa wystawionych certyfikatów
oraz ca ego katalogu „ssl”, tak aby w razie potrzeby mo na by o uniewa ni który
z certyfikatów.
Zak adam, e masz zainstalowany pakiet OpenSSL. Je eli nie, to musisz go zainsta-
lowa , u ywaj c mened era pakietów swojej dystrybucji, lub skompilowa program
samodzielnie.
3.2.1. Tworzenie w asnego CA
W pierwszej kolejno ci 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 r cznie,
8. Rozdzia 3. SSL jako standard bezpiecznego przesy ania danych 17
C:OpenSSLbin — dla systemów Win32.
W pliku tym odnajdujemy sekcj [ CA_default ]. Zmie wpisy u siebie tak, aby wy-
gl da y jak te z listingu 3.2.1.1.
Listing 3.2.1.1. Wycinek pliku openssl.cnf
[ CA_default ]
dir = /etc/ssl # g ówny katalog, w którym zapisywane s pliki
certs = /etc/ssl/certs # katalog, w którym zapisywane s certyfikaty
crl_dir = $dir/crl # katalog z list certyfikatów uniewa nionych (CRL)
private_key = $dir/private/cakey.pem # klucz prywatny CA
database = $dir/index.txt # baza, w której przechowywane s informacje
o wystawionych certyfikatach wraz ze statusem
certificate = $dir/cacert.pem # Certyfikat CA — do podpisu wniosków
serial = $dir/serial # plik pomocniczy z bie cym numerem — inkrementowany
# po ka dym wystawieniu certyfikatu
crl = $dir/crl.pem # bie ca lista certyfikatów uniewa nionych
Upewniamy si , czy istnieje katalog podany w zmiennej dir, czyli /etc/ssl, oraz wszystkie
jego podkatalogi. Je eli nie, musimy je za o y . Dla katalogu ssl/private ustaw upraw-
nienia tak, aby tylko u ytkownik root móg do niego wej .
Stwórz pliki /etc/ssl/index.txt oraz /etc/ssl/serial, u ywaj c komend podanych poni ej.
root@ca:~# touch /etc/ssl/index.txt #(ma by pusty)
root@ca:~# echo 00 > /etc/ssl/serial #(ma zawiera wpis 00)
Przyst pujemy do generowania klucza prywatnego centrum certyfikacji CA. Jest to
czynno jednorazowa, tzn. po wygenerowaniu klucza prywatnego CA, a nast pnie
odpowiadaj cego mu certyfikatu b dziesz u ywa ich do podpisywania innych certy-
fikatów. Pami taj, aby zarchiwizowa pliki z katalogu /etc/ssl w bezpiecznym miejscu.
B d c w katalogu /etc/ssl, wydajemy nast puj ce 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 has o klucza prywatnego CA>
Po potwierdzeniu has a do klucza prywatnego CA klucz zostanie zapisany w pliku
private/cakey.pem. Nie zapomnij has a do tego klucza, b dzie Ci nieraz potrzebne.
Kolejn czynno ci jest wygenerowanie certyfikatu CA. W tym celu wpisujemy na-
st puj ce polecenie:
root@ca:/etc/ssl# openssl req -new -x509 -days 365 -key private/cakey.pem -out
cacert.pem
Zostaniemy poproszeni o podanie kilku pól zawartych w certyfikacie.
Country Name (2 letter code) [AU]:PL
State or Province Name (full name) [Some-State]:Slask
9. 18 Sieci VPN. Zdalna praca i bezpiecze stwo 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 powy szych pól jest raczej jasne, zwracam jedynie uwag na pole Common
Name, które powinno zawiera nazw podmiotu — np. nazw u ytkownika lub jed-
nostki. W tym przypadku, gdy generujesz certyfikat dla CA, wpisz tutaj nazw swojej
organizacji s ownie (np. Firma SA) albo podaj np. nazw domeny.
Po podaniu has a do klucza prywatnego certyfikat zostanie zapisany w pliku cacert.pem.
W powy szym przyk adzie czas wa no ci certyfikatu wynosi b dzie 1 rok. Mo na
go oczywi cie wyd u y .
Na tym zako czyli my tworzenie w asnego urz du CA. Maj c pliki cakey.pem i cacert.
pem, czyli klucz prywatny i publiczny CA, mo emy ju wystawia certyfikaty innym
podmiotom.
3.2.2. Tworzenie klucza prywatnego dla serwera
Celem stworzenia klucza prywatnego dla serwera wpisujemy nast puj ce polecenie:
root@ca:/etc/ssl# openssl genrsa -des3 -out private/serverkey.pem 1024
Program OpenSSL zapyta o has o — b dzie to has o klucza prywatnego serwera. Klucz
prywatny zapisany zostanie w pliku private/serverkey.pem.
Nast pn czynno ci 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
B dziesz musia poda has o klucza prywatnego serwera (to, które podawa e przed
chwil ). Je eli has o b dzie poprawne, zostaniesz zapytany o dane do wniosku, zgod-
nie z listingiem poni ej.
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 certyfikatów dla serwerów
pole to powinno zawiera pe n nazw domenow , pod jak serwer dzia a w internecie
10. Rozdzia 3. SSL jako standard bezpiecznego przesy ania danych 19
(tzw. FQDN). Jest to wa ne, poniewa je li pole Common Name nie pokrywa si z naw
domenow , niektóre programy zg aszaj niezgodno certyfikatu z adresem serwera
(zw aszcza przegl darki i klienty poczty).
Wniosek zostanie zapisany w pliku serverreq.pem. Kolejnym krokiem b dzie podpi-
sanie 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 poni sze polecenie.
root@ca:/etc/ssl# openssl ca -notext -in serverreq.pem -out servercert.pem
Zostaniesz zapytany o has o do klucza prywatnego CA cakey.pem (nie myl z has em
do klucza prywatnego serwera!).
Nast pnie OpenSSL poka e szczegó y certyfikatu i zapyta, czy chcesz go podpisa .
Operacja podpisu wygl da tak, jak pokazano na listingu 3.2.4.1.
Listing 3.2.4.1. Komunikaty pojawiaj ce 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
11. 20 Sieci VPN. Zdalna praca i bezpiecze stwo danych
Mo esz teraz podejrze zawarto plików index.txt oraz serial, które zosta y zaktuali-
zowane po podpisaniu wniosku. Uwa aj na plik index.txt, jest on potrzebny przy od-
wo ywaniu certyfikatu (generowaniu CRL).
Mamy ju par kluczy dla serwera. Przy zestawianiu sieci VPN b d potrzebne te
klucze i certyfikaty dla u ytkowników. Generujemy je w sposób analogiczny jak dla
serwera, zgodnie z punktami 3.2.2 – 3.2.4. Zwró uwag , aby w polu Common Name
podawa dane jednoznacznie identyfikuj ce u ytkownika — np. jego login korpora-
cyjny. Niektóre programy po Common Name identyfikuj u ytkowników.
Jeszcze jeden szczegó dotycz cy has a zabezpieczaj cego klucz prywatny. W mo-
mencie uruchamiania aplikacji korzystaj cej z tego klucza b dziemy zmuszeni wpi-
sywa has o z klawiatury. W praktyce na serwerach aplikacja cz sto dzia a jako us uga
uruchamiana w trakcie startu systemu i oczekiwanie na wpisanie has a jest niezado-
walaj cym rozwi zaniem. W takich sytuacjach mo emy ci gn has o z klucza pry-
watnego. Nale y jednak pami ta , aby dost p do klucza mia jedynie administrator
serwera (root). Komenda przedstawiona w punkcie 3.2.5 umo liwia ci gni cie has a
z klucza prywatnego.
3.2.5. ci ganie has a z klucza prywatnego serwera
# openssl rsa -in private/serverkey.pem -out private/serverkey.pem_bezhasla
Nie zalecam natomiast ci gania hase z kluczy prywatnych u ytkowników zdalnych.
Jest to dodatkowe zabezpieczenie. W razie kradzie y laptopa dost p do VPN nie b -
dzie mo liwy bez znajomo ci has a.
3.2.6. Uniewa nianie certyfikatów
Pr dzej czy pó niej zajdzie potrzeba uniewa nienia którego z certyfikatów. Klasycznym
przyk adem jest odej cie pracownika lub kradzie laptopa. Do uniewa nienia certyfi-
katu s u y parametr revoke programu OpenSSL. Przyk adowo aby przyst pi do unie-
wa nienia certyfikatu osobie Jan Kowalski (jkowalskicert.pem), wpisz polecenie:
root@srv:/etc/ssl# openssl ca -revoke jkowalskicert.pem
OpenSSL zapyta o has o klucza CA i po podaniu prawid owego uniewa ni 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 której zapisane s uniewa nione certyfi-
katy. Robimy to zgodnie z punktem 3.2.7.
12. Rozdzia 3. SSL jako standard bezpiecznego przesy ania danych 21
3.2.7. Generowanie listy CRL
(uniewa nionych certyfikatów)
root@ca:/etc/ssl# openssl ca -gencrl -out crl.pem
Plik crl.pem nale y przegra pó niej na w a ciwy serwer i wskaza w aplikacji korzy-
staj cej z certyfikatów (szczegó y w dalszej cz ci ksi ki).
3.2.8. Ró ne formaty certyfikatów
Nale y wspomnie jeszcze o ró nych formatach plików, w których zapisywane s
klucze i certyfikaty. Niestety, nie ma tu jednego standardu i ró ni producenci prefe-
ruj ró ne formaty. Niemniej za pomoc programu OpenSSL mo esz je konwertowa
z jednego formatu na inny. Klucze prywatne najcz ciej zapisywane s w formie PEM
lub DER (binarny). Dla certyfikatów u ywane s formaty PEM, DER oraz PKCS12.
Aplikacje bazuj ce na bibliotece openssl, czyli wszystkie uniksowe, u ywaj na ogó
formatu PEM.
Formaty DER i PKCS12 rozpowszechnione s w systemach Microsoftu. Format PKCS12
przechowuje w jednym pliku klucz prywatny zabezpieczony has em i odpowiadaj cy
mu certyfikat. Poprzednikiem PKCS12 by przestarza y obecnie format PFX; jakkol-
wiek firma Microsoft u ywa rozszerze plików PFX dla formatu PKCS12.
Aby przekonwertowa certyfikat z jednej postaci na drug , musisz przekaza progra-
mowi OpenSSL odpowiednie parametry. W tabeli 3.2.8.1 przedstawiono sk adni pro-
gramu dla kilku popularnych przekszta ce .
Tabela 3.2.8.1. Sk adnia programu OpenSSL potrzebna do konwersji certyfikatów
Format wej ciowy Format wyj ciowy Sk adnia 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 out
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
Aby wy wietli informacj o certyfikacie, np. informacje podane podczas tworzenia
wniosku, nale y uruchomi program OpenSSL z nast puj cymi parametrami:
ca:/etc/ssl# openssl x509 -in servercert.pem -subject –noout
subject= /C=PL/ST=Slask/O=Helion/CN=server1
13. 22 Sieci VPN. Zdalna praca i bezpiecze stwo danych
Je li dodasz parametr -issuer, OpenSSL zwróci tak e 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
Je eli certyfikat jest w formie binarnej (DER), do powy szej sk adni nale y doda pa-
rametr -inform DER.
3.3. Kompilacja biblioteki openssl
ze róde
Ko cz c rozdzia dotycz cy biblioteki openssl, zamieszczam instrukcj opisuj c , jak
skompilowa i zainstalowa bibliotek „r cznie”. Powodów, dla których mia by sa-
modzielnie kompilowa program OpenSSL, mo e by kilka. Najbardziej prawdopo-
dobny z nich to ch podania przy kompilacji jakiej opcji, której nie przewidzieli
twórcy dystrybucji Twojego systemu. Innym powodem mo e by ch zaktualizowania
istniej cej wersji w dystrybucjach, które nie maj dobrze zorganizowanego systemu
aktualizacji (np. Slackware ;-)).
Je li decydujesz si na w asn kompilacj , musisz sukcesywnie aktualizowa bibliotek
w razie pojawienia si wykrytych b dów.
W dystrybucji Debian, której u ywam, paczka SSL dostarczana wraz z systemem nie
by a skompilowana z obs ug biblioteki zlib, w zwi zku z czym nie mog em u y tego
algorytmu kompresji w programie Stunnel.
Je li z jakich powodów chcesz skompilowa bibliotek openssl, poni ej w punktach
zamieszczam opis, jak to zrobi .
1. Pobierz ze strony http://www.openssl.org/source/ ród a najnowszej wersji
pakietu i zapisz w katalogu /usr/src/.
2. Porównaj warto MD5 pliku pobranego z sieci (polecenie md5sum)
z warto ci udost pnion 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 przyst pieniem do kompilacji musisz ustali , w którym katalogu
program ma zosta zainstalowany oraz z jakimi dodatkowymi opcjami,
podaj c je jako parametry skryptu ./config. W poni szym przyk adzie
skompilujemy program z obs ug biblioteki zlib, a wynikowy program
zostanie zainstalowany w katalogu /usr/local/openssl. Wpisz polecenie:
srv:~# ./config --prefix=/usr/local zlib
6. Je li skrypt ./config nie zg osi b du, mo emy przej do w a ciwej kompilacji
programu. W tym celu wpisz polecenie make.
14. Rozdzia 3. SSL jako standard bezpiecznego przesy ania danych 23
7. Proces kompilacji mo e potrwa kilka minut, po jego zako czeniu mo esz
przej do ostatniego kroku — instalacji skompilowanych plików we w a ciwych
katalogach.
8. Aby zako czy instalacj , wpisz polecenie make install.