Jak skonfigurować serwer Apache do obsługi OpenSSL?
Treść dodana: 05 stycznia 2016.
W poprzednim artykule opisałem w jaki sposób skonfigurować serwer Apache do podstawowej pracy ze stronami internetowymi. Czasami zachodzi konieczność dodania obsługi bezpiecznych połączeń (https) dla któregoś z hostów wirtualnych. Pobierając wymienioną wcześniej paczkę Apache, posiadamy wszystkie niezbędne narzędzia do wygenerowania certyfikatu. Na potrzeby artykułu oraz dla uproszczenia założę, że certyfikat utworzymy dla istniejącego już hosta test.local.
Pierwsze co musimy zrobić, to wygenerować certyfikat dla domeny. W tym celu należy uruchomić wiersz poleceń systemu Windows, przejść w nim do folderu `bin` naszego serwera Apache (pamiętaj że klawisz tabulacji służy do podpowiadania katalogów):
d: cd Server\Apache24\bin
W katalogu tym znajduje się już plik openssl.exe który posłuży nam do utworzenia certyfikatu. OpenSSL do działania wymaga pliku konfiguracyjnego openssl.cnf, który jest już umieszczony w folderze d:\Server\Apache24\conf. Najłatwiej będzie ustawić zmienną środowiskową z informacją dla OpenSSL, gdzie pliku szukać:
set OPENSSL_CONF=D:\Server\Apache24\conf\openssl.cnf
Jeżeli tego nie wykonamy, konieczne będzie wskazywanie ręczne pliku poprzez zmienną -config. Przechodzimy do generowania certyfikatu (opcja -config jest zamieszczona celem ilustracji poprzednich słów):
openssl.exe req -config ../conf/openssl.cnf -new -out test.csr -keyout test.pem
Większość pól możemy pominąć. Dwa kluczowe dla nas i obowiązkowe to PEM pass phrase – podajemy tutaj własne hasło, oraz Common Name – zawiera nazwę domeny czyli `test.local`. W efekcie, w folderze `bin` powstaną dwa nowe pliki: test.csr oraz test.pem. Następnym krokiem jest wygenerowanie klucza:
openssl.exe rsa -in test.pem -out test.key
Musimy podać hasło z pola PEM pass phrase. W wyniku powstanie kolejny plik test.key. Posłuży on do podpisania certyfikatu:
openssl.exe x509 -in test.csr -out test.crt -req -signkey test.key -days 365
Opcja `-days` mówi jak długo certyfikat ma pozostać ważny. Jeżeli nie chcemy zaprzątać sobie głowy ponownym generowaniem certyfikatu możemy tu podać kilka lat.
W tej chwili posiadamy już wszystkie niezbędne pliki. Do działania potrzebne będą dwa: test.crt, test.key. Możemy utworzyć nowy folder D:\Server\Apache24\certs i przegrać je do niego. Pozostałe dwa pliki możemy skasować lub zachować na później.
Następnym krokiem będzie poinformowanie serwera Apache, że host wirtualny `test.local` powinien być dostępny poprzez bezpieczne połączenie. Aby to zrobić, musimy zedytować plik vhostów czyli D:\Server\Apache24\conf\extra\httpd-vhosts.conf:
<VirtualHost *:443> SSLEngine On SSLCertificateFile "d:/Server/Apache24/certs/test.crt" SSLCertificateKeyFile "d:/Server/Apache24/certs/test.key" ServerName test.local DocumentRoot "d:/Server/vhosts/test.local" ErrorLog "logs/test.local-error.log" CustomLog "logs/test.local-access.log" common <Directory "d:/Server/vhosts/test.local"> Options Indexes FollowSymLinks MultiViews Includes ExecCGI AllowOverride All Order deny,allow Allow from all </Directory> </VirtualHost>
W porównaniu do poprzedniej konfiguracji, dodaliśmy 3 nowe linie aktywujące silnik SSL. Zamieniliśmy też port 80 na 443 – domyślny dla połączeń HTTPS.
Ostatnie co pozostało to zmiany w globalnej konfiguracji serwera Apache. Otwieramy plik D:\Server\Apache24\conf\httpd.conf. Należy w nim odkomentować linię aktywującą mod_ssl:
LoadModule ssl_module modules/mod_ssl.so
Poniżej znajdziemy również sekcję dodatkowych opcji:
<IfModule ssl_module> Listen 443 SSLRandomSeed startup builtin SSLRandomSeed connect builtin </IfModule>
Dodajemy tu `Listen 443` czyli informujemy serwer Apache że, w przypadku gdy aktywny jest moduł SSL, ma oczekiwać połączeń na porcie 443.
Restartujemy obowiązkowo serwer Apache. Jeżeli wszystko przebiegło prawidłowo, po odwiedzeniu strony https://test.local przeglądarka powinna wyświetlić standardowy komunikat z pytaniem, czy akceptujemy nasz certyfikat. Oczywiście dodajemy go do wyjątków.
O czym warto jeszcze wspomnieć to plik D:\Server\Apache24\conf\extra\httpd-ssl.conf. W dużej mierze zawiera on dyrektywy konfiguracyjne SSL z których już częściowo korzystaliśmy. Jeżeli wygodniej będzie Ci Czytelniku na nim pracować, lub potrzebujesz w jednym miejscu mieć wszystkie opcje modułu SSL warto go odkomentować w pliku httpd.conf:
Include conf/extra/httpd-ssl.conf
Pamiętaj jednak, że w postaci domyślnej będzie gryzł się trochę z naszą wcześniejszą konfiguracją.
Dodaj komentarz
- sieć
- http
- apache
- ssl
- php
- composer
- javascript
- jquery
- ajax
- html
- css
- pdo
- sql
- mysql
- postresql
- mongodb
- spl
- sql server
- psr
- programowanie
- regex
Wyszukaj interesujące Cię słowa kluczowe pośród istniejących porad.
Komentarze
Nie ma jeszcze żadnych komentarzy do wyświetlenia. Może chcesz zostać pierwszą osobą która podzieli się swoją opinią?