http://www.openssl.org/
http://www.modssl.org/
http://www.apache.org/
http://www.php.net/
Spis treści:
I. Wstęp
II. SSL
III. Certyfikaty dla www
IV. Konfiguracja mod_ssl
V. Wstępna konfiguracja Apache
VI. Konfiguracja i kompilacja php
VII. Kompilacja Apache
VIII. Plik httpd.conf oraz skrypty startowe
I. Wstęp
MySQL binarki ściągamy i instalujemy zgodnie ze wskazówkami w pliku INSTALL po rozpakowaniu programu. Opis jest naprawdę dobry i zwięzły, więc nikomu nie powinno to sprawić problemów.
Następnie należy ściągnąc najnowszą wersje źródęł apacha i php. Obie rozpakowujemy w katalogu `/usr/local/src`.
Następnie, aby było łatwiej w kat `/usr/local/src` wydajemy dwa polecenia tworzące dowiązania:
Kod: Zaznacz cały
ln -s apache-1.3.29 apache
ln -s php-4.3.3 php
Dalsze rozważania i ścieżki będą już podawane z uwzględnieniem tych symlinków.
Zakładam również, że MySQL został zainstalowany w kat: `/usr/local/mysql`.
Ściągamy i rozpakowujemy mod_ssl do katalogu `/usr/local/src/mod_ssl-2.8.16-1.3.29`.
Tutaj jest mod_ssl w wersji 2.8.16 dla apache w wersji 1.3.29. Zmiany dla nowszych wersji mile widziane.
Struktura katalogów wygląda teraz tak:
Kod: Zaznacz cały
/usr/local/src/apache
/usr/local/src/apache-1.3.29
/usr/local/src/php
/usr/local/src/php-4.3.3
/usr/local/src/mod_ssl-2.8.16-1.3.29
II. SSL
Ściągamy openssl, rozpakowujemy je w katalogu `/usr/local/src`, tworzymy dowiązanie:
Kod: Zaznacz cały
cd /usr/local/src
ln -s openssl-0.9.6l ssl
konfigurujemy,instalujemy i tworzymy dodatkowe dowiązanie dla katalogu wynikowego o nazwie openssl:
Kod: Zaznacz cały
cd /usr/local/src/openssl-0.9.6l
./config shared
make
make test
make install
cd /usr/local
ln -s ssl openssl
Należy dodać wpis w `/etc/ld.so.conf` o postaci "/usr/local/ssl/lib", po czym uruchomić polecenie `/sbin/ldconfig`.
Należy zmodyfikować plik `/etc/profile`. Do zmiennej PATH dodajemy: "....usr/local/ssl/bin".
Przykładowy wpis może więc wyglądać tak:
Kod: Zaznacz cały
# Set the default system $PATH:
PATH="/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/local/ssl/bin"
Jednak miałem problem z tym (dokładniej z `su`), zrobilem więc sobie delikatne wsparcie modyfikując `/root/.bashrc` i dopisując w nim coś takiego:
Kod: Zaznacz cały
export PATH=$PATH:/usr/local/ssl/bin
III. Certyfikaty dla www
Podejście jest proste: sami tworzymy instytucję certyfikującą (taką jak np Thawte) i sami sobie podpiszemy certyfikaty dla strony. Przy otwieraniu tak podpisanej strony pojawi się ostrzeżenie, ale cóż, nie płacimy przecież za to ani grosza...
Tworzymy katalog `/etc/ssl` dla potrzeb kluczy, certyfikatów itd:
Kod: Zaznacz cały
mkdir /etc/ssl
cd /etc/ssl
Kod: Zaznacz cały
openssl genrsa -des3 -out ca.key 1024
Kod: Zaznacz cały
openssl req -new -x509 -key ca.key -out ca.crt -days 1024
3) Zabezpieczenie kluczy:
Kod: Zaznacz cały
chmod 400 ca.key ca.crt
Kod: Zaznacz cały
openssl genrsa -des3 -out a4.key 1024
UWAGA na NAME!!! - pełny adres naszej strony!
Kod: Zaznacz cały
openssl req -new -key a4.key -out a4.csr
Kod: Zaznacz cały
cp ca.crt ca.key a4.csr a4.key /usr/local/src/mod_ssl-2.8.16-1.3.29/pkg.contrib
cd /usr/local/src/mod_ssl-2.8.16-1.3.29/pkg.contrib
./sign.sh a4.csr
Dla Apacza potrzebne będą dwa pliki: plik z kluczem
dla www (a4.key) oraz plik z certyfikatem dla www (a4.crt).
Teraz kasujemy pliki ca.* instytucji (z katalogu pkg.contrib):
Kod: Zaznacz cały
rm ca.crt ca.key
Kod: Zaznacz cały
mkdir /etc/ssl/apache
mv a4.key /etc/ssl/apache
mv a4.crt /etc/ssl/apache
i kasujemy niepotrzebne już nam śmieci:
Kod: Zaznacz cały
cd /etc/ssl
rm a4*
IV. Konfiguracja mod_ssl
Kod: Zaznacz cały
cd /usr/local/src/mod_ssl-2.8.16-1.3.29
./configure --with-apache=/usr/local/src/apache \
--with-crt=/etc/ssl/apache/a4.crt \
--with-key=/etc/ssl/apache/a4.key
Otrzymamy mniej więcej taki wydruk:
Kod: Zaznacz cały
Configuring mod_ssl/2.8.16 for Apache/1.3.29
+ Apache location: /usr/local/src/apache (Version 1.3.29)
+ Auxiliary patch tool: ./etc/patch/patch (local)
+ Applying packages to Apache source tree:
o Extended API (EAPI)
o Distribution Documents
o SSL Module Source
o SSL Support
o SSL Configuration Additions
o SSL Module Documentation
o Addons
Done: source extension and patches successfully applied.
Now proceed with the following commands (Bourne-Shell syntax):
$ cd /usr/local/src/apache
$ SSL_BASE=/path/to/openssl ./configure ... --enable-module=ssl
$ make
$ make install
Kod: Zaznacz cały
cd /usr/local/src/apache
SSL_BASE=/usr/local/src/openssl-0.9.6l/ \
./configure \
--prefix=/usr/local/apache \
--enable-module=ssl \
--sysconfdir=/etc/apache \
--htdocsdir=/var/www/htdocs \
--cgidir=/var/www/cgi-bin \
--logfiledir=/var/log/apache
--prefix=/usr/local/apache - tam będa binarki nowego apacha,
--enable-module=ssl - aktywacja modulu ssl dla apacha,
--sysconfdir=/etc/apache - miejsce dla plików konfiguracyjnych,
--htdocsdir=/var/www/htdocs - tam będzie główny katalog naszych dokumentów .html itp...,
--cgidir=/var/www/cgi-bin - miejsce dla skryptów cgi,
--logfiledir=/var/log/apache - katalog z logami access.log i error.log apacha
VI. Konfiguracja i kompilacja php
Kod: Zaznacz cały
cd /usr/local/src/php
./configure --prefix=/usr/local/php \
--with-apache=../apache \
--with-mysql=/usr/local/mysql \
--with-gettext --sysconfdir=/etc/php4
--prefix=/usr/local/php - katalog, gdzie trafi php,
--with-apache=../apache - ścieżka do plików apacha (po to był symlink - teraz łatwiej to wpisać),
--with-mysql=/usr/local/mysql - scieżka do MySQL - jeśli jest inna zmienić
--sysconfdir=/etc/php4 - plik konfiguracyjny pakietu php trafi właśnie tam.
Teraz należy skompilować php poleceniem:
Kod: Zaznacz cały
make
Kod: Zaznacz cały
make install
Kod: Zaznacz cały
cd /usr/local/src/apache
SSL_BASE=/usr/local/src/openssl-0.9.6l/ \
./configure \
--prefix=/usr/local/apache \
--enable-module=ssl \
--sysconfdir=/etc/apache \
--htdocsdir=/var/www/htdocs \
--cgidir=/var/www/cgi-bin \
--logfiledir=/var/log/apache \
--activate-module=src/modules/php4/libphp4.a
--activate-module=src/modules/php4/libphp4.a - aktywacja modułu php dla apacha
Instalacja apacha, gdy kompilacja sie zakończy:
Kod: Zaznacz cały
make
make install
Kod: Zaznacz cały
cd /etc/apache/ssl.key/
cp server.key server.key.old
openssl rsa -in server.key.old -out server.key
chmod 400 server.key
Należy odpowiednio do potrzeb zmodyfikować plik:
/etc/apache/httpd.conf
Po ustawieniu wszystkich zmiennych dotyczących lokalnego serwera należy jeszcze zmodyfikować wpisy dotyczące php. W tym celu doklejamy w http.conf następujące 2 linijki:
Kod: Zaznacz cały
AddType application/x-httpd-php .php .php3 .php4
AddType application/x-httpd-php.source .phps
Następnie należy odnaleźć następującą linijke:
Kod: Zaznacz cały
DirectoryIndex index.html
Kod: Zaznacz cały
DirectoryIndex index.html index.php index.php3 index.php4 index.cgi
Kod: Zaznacz cały
cd /usr/local/php
cp php.ini-dist /etc/apache/php.ini
Dodatkowo pojawiła się możliwość obsługi ssl (czyli https). Ja ustawiłem sobie w pliku konfiguracyjnym wirtualnego hosta. Wpisy wyglądają tak:
Kod: Zaznacz cały
NameVirtualHost *:80
NameVirtualHost *:443
#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for requests without a known
# server name.
#
<VirtualHost *:80>
ServerAdmin admin@a4.domena.pl
DocumentRoot /var/www/htdocs
ServerName a4.domena.pl
ErrorLog /var/log/apache/normal-error_log
CustomLog /var/log/apache/normal-access_log common
</VirtualHost>
Kod: Zaznacz cały
##
## SSL Virtual Host Context
##
#<VirtualHost _default_:443>
<VirtualHost *:443>
# General setup for the virtual host
DocumentRoot "/var/www/htdocs"
ServerName a4.domena.pl
ServerAdmin admin@a4.domena.pl
ErrorLog /var/log/apache/ssl_error_log
TransferLog /var/log/apache/ssl_access_log
# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on
#ciach.......ciach.............
Kod: Zaznacz cały
/usr/local/apache/bin/apachectl start
Kod: Zaznacz cały
touch /var/www/htdocs/test.php
Kod: Zaznacz cały
<?php phpinfo(); ?>
Aby sprawdzić ustawienia ssl wywołujemy https://a4.domena.pl/test.php, gdzie oczywiście a4 to nazwa mojego hosta
ps
stan surowy bardzo mocno, opis dosc stary, config na 99% dzialajacy, sposob tworzenia certow trzeba przepisac i zrobic taki sam jak w ''postfix + tls + ...", ssl uzywac systemowy a nie ze zrodel i kilka innych przemianowan...
wrzucam, bo ktos tam mial problem z apachem i configiem do niego - a zanim ja to poprzeprawiam...
Sformatowałem troszkę (cherry)