Autor:
Nick
DeClario 9/19/2000
Orginalny tytuł:Building a secure web server using Apache and OpenSSL
Tłumaczył:
tank
Ostatnia aktalizacja :
24.09.2000
Używając Apache i OpenSSL możesz stworzyć swój własny bezpieczny web serwer do
przechowywania prywatnych informacji przed ciekawskimi oczami.
Posiadanie zabezpieczonego web serwera jest potrzebne jeżeli pracujesz zdalnie
jako administrator, w bankowości i/lub w e-commerce (czyli internetowych
sklepach itp.). Możesz mieć też po prostu prywatne informacje do których
chcesz mieć dostęp przez web i chcesz bezpiecznie z nich korzystać.
Zastosowanie zabezpieczonego serwera idealnie się do tego nadaje.
Używając Apache, mod-ssl oraz OpenSSL możemy stworzyć
zabezpieczony Web serwer szybko i łatwo. Nie musimy się też dłużej martwić o
RSA. Wcześniej do 6.09.2000 algorytmu RSA był w pełni opatentowany przez RSA.
Patent oficjalnie kończy się 20.09.2000 ale RSA uchylił patent nieco
wcześniej. Dlatego nie musimy dłużej używać pakietu RSAREF, który nadal jest
licencjonowany przez RSA.
Pierwszym zadaniem do wykonania, żeby zabezpieczyć nasz serwer jest
zgromadzenie wymaganego oprogramowania. Potrzebne będą trzy pakiety Apache,
OpenSSL i mod-ssl.
Musisz mieć zainstalowane następujące pakiety:
Pakiety w RPMach i Debiana również istnieją. Sprawdź to na swoim ulubionym
mirrorze. Zamiast mod-ssl możesz zastosować
Apache-SSL. Ten dokument jednak
koncentruje się na mod-ssl. Mod_SSL pochodzi od Apache-SSL, jednak kod mod-ssl
został przepisany od nowa. Mod_SSL jest szybszy i łatwiejszy w konfiguracji
niż Apache-SSL.
Kompilacja i Instalacja OpenSSL
Zakładam że masz zainstalowanego perl\'a i działający kompilator. Musisz
rozpakować te trzy pakiety. Najpierw skompiluj OpenSSL (to może chwilę
potrwać):
$ ./config
$ make
$ make test
$ make install
Jeżeli wszystko zostało zrobione skompiluj mod-ssl:
Uwaga: \'ALL\' oznacza że ta opcja musi być oraz \'optional\' oznacza że jest to
opcja.
$ cd
mod_ssl-2.6.x-1.3.x ALL
$ ./configure \\ ALL
--with-apache=../apache_1.3.x \\ ALL
--with-ssl=../openssl-0.9.x \\ ALL
--with-mm=../mm-1.1.x \\ OPTIONAL
--with-crt=/path/to/your/server.crt \\ OPTIONAL
--with-key=/path/to/your/server.key \\ OPTIONAL
--prefix=/path/to/apache \\ ALL
[--enable-shared=ssl] \\ OPTIONAL
[--disable-rule=SSL_COMPAT] \\ OPTIONAL
[--enable-rule=SSL_SDBM] \\ OPTIONAL
[--enable-rule=SSL_EXPERIMENTAL] \\ OPTIONAL
[--enable-rule=SSL_VENDOR] \\ OPTIONAL
[...more APACHE options...] OPTIONAL
$ cd ../apache_1.3.x
$ make
$ make certificate
$ make install
Aby uzyskać więcej informacji o wkompilowaniu mod-ssl do Apacha przeczytaj
pliki INSTALL oraz README dostarczone razem z pakietem.
Konfiguracja httpd.conf dla obsługi SSL
Po instalacji mod-ssl, możesz skonfigurować plik httpd.conf jak dla normalnej
strony. Możesz, jednak ustawić zabezpieczenie SSL dla wirtualnego hosta
(VirtualHost).
Będziesz miał dostęp przez https://my.site.com zamiast http://my.site.com.
Jest wiele opcji konfiguracyjnych i wymagań dla wirtualnego hosta w Apache.
Jest tego zbyt wiele aby o wszystkim tutaj napisać, przedstawię jedynie
przykład z prostym wirtualnym hostem. Wirtualny host zawiera nazwę serwera,
adres e-mail administratora, ścieżki do plików oraz do logów hosta. Powinno
to wyglądać podobnie do tego:
ServerAdmin admin@mysite.com
DocumentRoot /home/httpd/mysite/
ErrorLog /var/log/httpd/mysite-errors_log
TransferLog /var/log/httpd/mysite-transfers_log
Aby dodać obsługę SSL do twojego wirtualnego hosta musisz to włączyć i podać
gdzie masz swoje certyfikaty oraz klucz do rozszyfrowania ich. Dodaj te linie
przed etykieta \'\' :
SSLEngine on
SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key
To są podstawowe opcje SSL dla wirtualnego hosta. Jest tego znacznie więcej
niż można pokazać w tym krótkim tekście. Kiedy instalujesz mod_SSL do Apache
to w nowym httpd.conf masz przykłady oraz opisy od wirtualnego hosta i opcje
SSL. Możesz też znaleźć liczne dokumenty na stronach
http://www.apache.org/ oraz
http://linuxsecurity.com/feature_stories/www.modssl.org.
Kiedy w konfiguracji wszystko zostało ustawione, musisz wystartować serwer.
Startujemy Apache w trybie SSL poprzez wydanie następujących komend:
[root@myhost #] /usr/sbin/httpd -startssl
read RSA key
Enter PEM pass phrase:
Ten komunikat pyta o hasło. Wymagane jest hasło do rozszyfrowania twojego
klucza dla SSL. To może przeszkadzać gdy włączmy Apache przy starcie systemu.
Jest pewien sposób na obejście tego ale jest to niebezpieczne.
Przejdź do miejsca gdzie masz zachowany plik http.conf i w katalogu ssl.key
zobaczysz server.key. Tu znajduje się twój zaszyfrowany klucz. Jeżeli
rozszyfrujemy klucz nie będziesz musiał już nigdy wprowadzać hasła. Ryzyko
polega na tym że jeżeli klucz zostanie przez kogoś zdobyty możliwe jest
przechwycenie zabezpieczonego połączenia i rozszyfrowanie twoich informacji.
Przed rozszyfrowaniem klucza wykonaj najpierw backup:
[root@myhost #] cp /path/to/apache-conf/ssl.key/server.key server.key.old
Teraz, używając OpenSSL, rozszyfruj klucz:
[root@myhost #] /usr/sbin/openssl rsa -in server.key.old -out server.key
read RSA key
Enter PEM pass phrase:
Musisz wprowadzić swoje hasło do rozszyfrowania klucza. server.key zawiera
teraz niezaszyfrowany klucz. Musisz nadal startować apache z
httpd
--startssl lub używając pliku startowego zawartego w pakietach RPM lub
dpkg (DEB).
Źródła