Transmisja danych w internecie nie jest
domyślnie szyfrowana, co oznacza, że za pomocą bardzo prostych
narzędzi można odczytać większość informacji przepływających
przez ocean sieci. Posiadając minimalną wiedzę na temat protokołów
sieciowych oraz podstaw transmisji danych można dowiedzieć się na
przykład kto wysyła lub otrzymuje jakie informacje, pod warunkiem,
że informacje te właśnie nie są zabezpieczone. Nie rzadko więc
zachodzi potrzeba zabezpieczenia transmitowanych informacji,
szczególnie gdy dotyczą one wrażliwych danych osobowych, haseł,
numerów kont czy numerów kart płatniczych bądź kart kredytowych.
Przeważnie tylko tego typu informacje są szyfrowane, ponieważ sam
proces szyfrowania zużywa dodatkowe zasoby.
W niniejszym artykule ustanowienie bezpiecznej
transmisji danych pomiędzy przeglądarką www, a serwerem. Do
zabezpieczenia informacji transmitowanych pomiędzy przeglądarką
internetową a serwerem www służą protokoły SSL (Secure Socket
Layer) oraz HTTPS (Hypertext Transfer Protocol Secure), który
stanowi szyfrowaną (za pomocą SSL) odmianę protokołu HTTP.
Omówimy najprostszy sposób uruchomienia bezpiecznego połączenia
wykorzystującego protokoły SSL + HTTPS na serwerem Apache
działającym w środowisku Linux.
Do ustanowienia zabezpieczonego
połączenia HTTPS wykorzystuje się protokół SSL, który jest
najczęściej kojarzony właśnie z protokołem HTTP, ale może
służyć do zabezpieczania także innych protokołów, np. SMTP lub
IMAP. Ale jak się ma SSL do HTTPS? SSL działa w warstwie
prezentacji, więc może służyć do zabezpieczania protokołów
działających w warstwie aplikacji, która znajduje się wyżej,
takich jak protokół HTTP.
Do ustanowienia prawidłowego i w pełni
funkcjonalnego połączenia SSL pomiędzy serwerem www, a
przeglądarką internetową konieczny jest podpisany certyfikat SSL.
Certyfikaty SSL umożliwiają weryfikację serwera, dla którego
domeny zostały wystawione. Osoby odwiedzające witrynę www,
odczytując informacje zawarte w certyfikacie SSL, mogą dowiedzieć
się, przykładowo, kto jest właścicielem certyfikowanej domeny lub
kto wystawił dany certyfikat. Ponieważ jednak wystawienie
certyfikatu SSL nie jest zadaniem niezmiernie trudnym i może ono
zostać wykonane przez każdego, zostały utworzone specjalne zaufane
Urzędy Certyfikacji, weryfikujące dane podmiotów ubiegających się
o certyfikat SSL. W przypadku próby ustanowienia połączenia SSL z
serwerem, którego certyfikat nie został podpisany przez zaufany
Urząd Certyfikacji, w przeglądarce internetowej pojawia się bardzo
wyraźne ostrzeżenie dotyczące tego faktu, aby ostrzec internautów
przez potencjalnymi zagrożeniami. Zaufane Urzędy certyfikacji,
czyli w praktyce podmioty świadczące usługi certyfikacyjne,
oferują różnego rodzaju certyfikaty SSL. Ich możliwości i ceny
są bardzo zróżnicowane, w zależności od przeznaczenia
certyfikatu.
Ponieważ osobom nieoswojonym z tematem
procedura ustanowienia połączenia zabezpieczonego protokołem SSL
(HTTPS), może wydawać się skomplikowana, choć w rzeczywistości
tak nie jest, podzielimy ją tutaj na poszczególne kroki aby ułatwić
zrozumienie.
KROK I - CSR (Certificate Signing
Request)
Aby wystąpić do podmiotu świadczącego
usługi certyfikacyjne o wydanie wybranego certyfikatu SSL należy
utworzyć plik zawierający wniosek o podpisanie certyfikatu (CSR –
Certificate Signing Request). W celu utworzenia pliku CSR można
skorzystać z narzędzi z pakietu OpenSSL. Opiszemy tutaj jak
utworzyć plik CSR korzystając z pakietu OpenSSL z wiersza poleceń
systemu operacyjnego Linux.
Aby rozpocząć procedurę tworzenia
pliku CSR należy się upewnić, że pakiet OpenSSL jest prawidłowo
zainstalowany. Przykładowo w systemach Linux z dystrybucji Red Had
Linux, Fedora, Scientific Linux bądź CentOS, można to w prosty
sposób sprawdzić przy pomocy narzędzia yum:
[root@server_1 ~]# yum info
intalled openssl
W przypadku odnalezienia przez
narzędzie yum zainstalowanego pakietu OpenSSL, po zatwierdzeniu
powyższego polecenia, wyświetlane są informacje o zainstalowanym
pakiecie. Przykładowo:
Name : openssl
Arch : i686
Version : 0.9.8n
Release : 2.fc11
Size : 1.4 M
Repo : updates
Summary : A general purpose
cryptography library with TLS implementation
URL : http://www.openssl.org/
License : OpenSSL
Description : The OpenSSL toolkit
provides support for secure communications
W przypadku nie odnalezienia
zainstalowanego pakietu OpenSSL, przed kontynuowaniem należy takowy
zainstalować. Przykładowo w systemach z dystrybucji Red Had Linux,
Fedora, Scientific Linux bądź CentOS można to zrobić wprowadzając
w wierszu poleceń następujące polecenie:
[root@server_1 ~]# yum install
openssl
Zakładając, że pakiet openssl jest
prawidłowo zainstalowany, w celu utworzenia pliku CSR należy z
wiersza poleceń wydać następujące polecenie (nazwę domeny w
poleceniu można zastąpić nazwą własnej domeny, dla której ma
zostać podpisany certyfikat SSL, ale nie jest to absolutnie
konieczne):
[root@server_1 ~]# openssl req
-nodes -newkey rsa:2048 -keyout nazwa_domeny.key -out
nazwa_domeny.csr
Po zatwierdzeniu powyższego polecenia
zostaje uruchomiona interaktywna aplikacja, która generuje plik CSR,
po udzieleniu przez użytkownika odpowiedzi na wyświetlane pytania.
Generating a 2048 bit RSA private
key
....................+++
.............+++
writing new private key to
nazwa_domeny.key
-----
You are about to be asked to enter
information that will be incorporated
into your certificate request.
What you are about to enter is what is
called a Distinguished Name or a DN.
There are quite a few fields but you
can leave some blank
For some fields there will be a default
value,
If you enter . the field will be left
blank.
-----
Country Name (2 letter code) [GB]:PL
State or Province Name (full name)
[Berkshire]:Mazowieckie
Locality Name (eg, city)
[Newbury]:Warszawa
Organization Name (eg, company) [My
Company Ltd]:Moja firma
Organizational Unit Name (eg, section)
[]:Centrala
Common Name (eg, your name or your
servers hostname) []:www.nazwadomeny.pl
Email Address []:
przykladowyadres@przyklad.pl
Uwaga! Common Name odnosi się do
domeny, dla której ma zostać wystawiony certyfikat!
Na samym końcu pojawiają się pytania
dotyczące opcjonalnych cech certyfikatu, takich jak hasło
zabezpieczające certyfikat. Na pytanie dotyczące opcjonalnego hasła
do certyfikatu należy koniecznie odpowiedzieć wciskając sam
klawisz ENTER, bez wprowadzania jakichkolwiek znaków (nawet samym
spacji).
Po wprowadzeniu przez użytkownika
niezbędnych informacji zostają utworzone 2 pliki w katalogu, w
którym została wywołana aplikacja do generowania pliku CSR.
Utworzone pliki to
Utworzone pliki to
nazwa_domeny.csr
nazwa_domeny.key
Pierwszy z pików, nazwa_domeny.csr,
należy dostarczyć do podmiotu, który wystawia i podpisuje
certyfikat SSL. Podmiot świadczący usługi certyfikacyjne wystawia
i podpisuje certyfikat SSL właśnie na podstawie otrzymanego pliku
CSR.
Drugi z plików, nazwa_domeny.key,
będzie potrzebny do prawidłowego funkcjonowania otrzymanego
certyfikatu SSL. Plik ten zawiera bowiem prywatny klucz certyfikatu,
który jest niezbędny do uruchomienia podpisanego certyfikatu SSL.
Przed przejściem do instalacji na
serwerze certyfikatu SSL, koniecznie należy wkleić do otrzymanego
certyfikatu SSL informacje o ścieżce certyfikacyjnej do podpisanego
certyfikatu SSL i zachować edytowany w ten sposób plik zawierający
certyfikat SSL oraz wklejone informacje o ścieżce certyfikacyjnej.
Informację o tym, jak należy to zrobić można zawsze uzyskać od
podmiotu podpisującego certyfikat SSL. Generalnie procedura jest
bardzo prosta i polega na połączeniu, w odpowiedni sposób,
zawartości 2 plików. Plik zawierający ścieżkę certyfikacyjną
otrzymujemy od wystawcy certyfikatu SSL.
KROK II – Proste operacje na plikach
Przed rozpoczęciem procedury
instalacji certyfikatu, która polega na umieszczeniu plików
zawierających certyfikat SSL oraz prywatny klucz certyfikatu w
odpowiednich katalogach, jak również na lekkim dopasowaniu plików
konfiguracyjnych Apache do nowych okoliczności, należy się
upewnić, czy obecna instalacja serwera Apache jest odpowiednio
skonfigurowana do obsługi protokołu SSL.
Serwer Apache może zostać
skonfigurowany do obsługi protokołu SSL na kilka sposobów. Omówimy
tutaj wyłącznie instalację oprogramowania obsługującego protokół
SSL w postaci modułu serwera Apache, za pomocą narzędzia yum.
Aby sprawdzić, czy moduł jest już
zainstalowany należy postępować jak poniżej.
[root@server_1 ~]# yum info
installed mod_ssl
W przypadku odnalezienia
zainstalowanego pakietu, pojawia się informacja podobna do:
Installed Packages
Name : mod_ssl
Arch : x86_64
Epoch : 1
Version : 2.2.3
Release : 76.el5.centos
Size : 183 k
Repo : installed
Summary : SSL/TLS module for the
Apache HTTP server
URL : http://httpd.apache.org/
License : Apache Software License
Description : The mod_ssl module
provides strong cryptography for the Apache Web
: server via the Secure
Sockets Layer (SSL) and Transport Layer
: Security (TLS)
protocols.
Jeżeli pakiet nie jest zainstalowany,
należy go zainstalować poprzez wydanie polecenia:
[root@server_1 ~]# yum install
mod_ssl
Następny krok polega na umieszczeniu w
odpowiednich katalogach otrzymanego pliku, zawierającego podpisany
certyfikat SSL, oraz pliku zawierającego klucz prywatny.
Plik zawierający podpisany certyfikat
SSL należy umieścić w katalogu
/etc/pki/tls/certs/
, więc ścieżka
do pliku powinna wyglądać następująco:
/etc/pki/tls/certs/nazwa_domeny.crt
Plik z kluczem prywatnym, utworzony w
chwili wygenerowania pliku CSR należy umieścić w katalogu
/etc/pki/tls/private/
, a ścieżka do niego ma wyglądać tak:
/etc/pki/tls/private/nazwa_domeny.key
Uprawnienia do pliku z podpisanym
certyfikatem SSL mogą być ustawione następująco:
-rw-r--r-- 1 root root 1688 Apr
17 14:34 nazwa_domeny.crt
Uprawnienia do pliku z kluczem
prywatnym powinny być nieco bardziej restrykcyjne:
-rw------- 1 root root 1679 Apr
17 11:26 nazwa_domeny.key
KROK III – Dopasowanie konfiguracji
oraz ponownie uruchomienie serwera Apache
Należy teraz edytować zawartość
pliku konfiguracyjnego serwera Apache, dotyczącego ustawień SSL.
Plik, którego zawartość wymaga dopasowania to
/etc/httpd/conf.d/ssl.conf
W pliku ssl.conf należy znaleźć
wiersz zawierający określenie 'SSLCertificateFile', który
odzwierciedla ścieżkę do pliku zawierającego podpisany certyfikat
SSL + informacje o łańcuchu certyfikacyjnym. Zawartość całego
wiersza powinna zostać edytowana do następującej postaci:
SSLCertificateFile
/etc/pki/tls/certs/nazwa_domeny.crt
Kolejną czynnością jest znalezienie
w pliku ssl.conf wiersza zawierającego określenie
'SSLCertificateKeyFile'
, odnoszące się do pliku zawierającego
prywatny klucz certyfikatu SSL. Wiersz powinien zostać edytowany do
postaci:
SSLCertificateKeyFile
/etc/pki/tls/private/nazwa_domeny.key
Po zapisaniu zmian należy ponownie
uruchomić Serwer Apache:
[root@server_1 ~]# service httpd
restart
To wszystko. Połączenie SSL powinno
teraz prawidłowo działać. Można to w prosty sposób sprawdzić,
wpisując w pasku adresów przeglądarki www adres zabezpieczonego
połączenia z witryną www, dla której został wydany i
zainstalowany certyfikat SSL.
Mam nadzieję, że o niczym niezbędnym
dla ustanowienia bezpiecznego połączenia SSL nie zapomniałem, choć
wiele przydatnych ustawień zostało przeze mnie celowo pominiętych,
takich jak np. wirtualne hosty Apache, bądź zmiany ustawień
firewalla.
Brak komentarzy:
Prześlij komentarz
Dodaj komentarz