A. Mróz
Bezpiecze ´nstwo Sieci
Wskazówki do projektu Bezpiecze ´nstwo strony www1
Uwagi wst˛epne:
1. Poni˙zszy dokument wskazuje przykładowe polecenia realizuj ˛ace jedynie kluczowe kroki post˛epowania; po-zostałe szczegóły nale˙zy uzupełni´c samodzielnie (patrz zaj˛ecia i wykład);
2. W celu „symulacji” rzeczywistego procesu uzyskiwania certyfikatu dla strony www wcielamy si˛e jednocze´snie w dwie role (na jednym komputerze!):
• administratora serwera www (w skrócie: admin),
• pracownika Centrum Certyfikacji (Urz˛edu Certyfikacji, Certificate Authority) (skróty: pracownik C.C. lub C.A.).
Ka˙zdy z nich b˛edzie pracował w innym katalogu (a najlepiej te˙z w innym terminalu) by lepiej oddzieli´c te dwie role od siebie.
3. Ustalamy nast˛epuj ˛ace katalogi (´scie˙zki):
• /CC (katalog C.C. – w tym katalogu b˛ed ˛a trzymane pliki C.C.),
• /var/www/html (katalog główny strony www, „DocumentRoot” w httpd.conf), • /var/www/html/ssl (podkatalog strony https, „DocumentRoot” w ssl.conf –
strona z tego podkatalogu b˛edzie udost˛epniana z wykorzystaniem protokołu https), • /var/www/html/certs (katalog certyfikatów/kluczy strony www).
4. Poni˙zsze wskazówki odnosz ˛a si˛e do systemu Linux NST wersja ≥ 26.
Etap 0: Admin umieszcza wszystkie potrzebne pliki zawieraj ˛ace stron˛e/strony www (pliki .html, obrazki itp.) w odpowiednich katalogach zdefiniowanych w Uwadze 3 (je˙zeli ich nie ma nale˙zy je utworzy´c).
Etap 1: Pracownik C.C. tworzy katalog C.C. i b˛ed ˛ac w nim: • generuje klucz(e) dla C.C.:
openssl genrsa -des3 -out ca.key 4096
• generuje („samopodpisany” – selfsigned) certyfikat dla C.C. w oparciu o powy˙zszy klucz: openssl req -new -x509 -days 3650 -key ca.key -out ca.cer
Etap 2: Admin w katalogu certyfikatów/kluczy strony www: • generuje klucz(e) dla strony www:
openssl genrsa -des3 -out key.key 4096
• [opcjonalne, zalecane] usuwa hasło z powy˙zszego klucza: openssl rsa -in key.key -out key_bez.key
• generuje plik ˙z ˛adania dla C.C. – ˙z ˛adania certyfikatu dla klucza publicznego: openssl req -new -key key_bez.key -out cerreq.csr
• „wysyła” powy˙zszy plik do C.C., tj., kopiuje plik cerreq.csr do katalogu C.C. Etap 3: Pracownik C.C.
• tworzy katalogi /etc/pki/CA oraz /etc/pki/CA/newcerts • tworzy pusty plik /etc/pki/CA/index.txt
• tworzy plik /etc/pki/CA/serial i wpisuje w nim liczb˛e z przedziału 1-FF
• w katalogu C.C. wykonuje otrzymane ˙z ˛adanie admina (tj., generuje certyfikat dla jego klucza publicznego):
openssl ca -policy policy_anything -cert ca.cer -in cerreq.csr -keyfile ca.key -days 365 -out cer.cer
• „wysyła” certyfikaty do admina, tj., kopiuje pliki ca.cer i cer.cer do katalogu certyfikatów/kluczy strony www.
VERTE!
1
2 A. Mróz / Wskazówki – bezpieczna www
Etap 4: Admin:
• na wszelki wypadek sprawdza czy ma wszystko co trzeba, czyli czy w katalogu certyfikatów/kluczy strony www znajduj ˛a si˛e pliki:
cer.cer, key_bez.key, ca.cer
• odnajduje plik konfiguracyjny ssl.conf, otwiera go w Ulubionym Edytorze Plików Tekstowych, usuwa w tym pliku wszystkie linie od <VirtualHost do </VirtualHost> (wł ˛acznie) i w to miejsce wpisuje:
<VirtualHost *:443> SSLProtocol all -SSLv2 SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM DocumentRoot "/var/www/html/ssl" ErrorLog logs/ssl-error.log TransferLog logs/ssl-access.log SSLEngine On SSLCertificateFile /var/www/html/certs/cer.cer SSLCertificateKeyFile /var/www/html/certs/key_bez.key SSLCACertificateFile /var/www/html/certs/ca.cer
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown SSLVerifyClient none
SSLProxyEngine off </VirtualHost>
i zapisuje plik.