Przejdź do treści

Serwer poczty na FreeBSD 13 (cz. 3): Apache, HTTPS (Let's Encrypt) i PHP

System mamy gotowy (część 2). Teraz stawiamy Apache, zabezpieczamy go certyfikatem Let’s Encrypt (HTTPS) i dokładamy PHP — to fundament pod webowe panele, które zainstalujemy później (phpMyAdmin, PostfixAdmin, Roundcube).

📅 Wersje z epoki (2021). Apache 2.4, certbot py38, PHP 7.4. Przy wdrożeniu użyj aktualnych wersji.

Instalacja Apache

Apache instalujemy jako jedną z pierwszych usług — dzięki temu w trakcie konfiguracji kolejnych usług będziemy mogli od razu stawiać ich webowe „nakładki”. Instalację rozpoczynamy poleceniem:

pkg install apache24

Informacja o instalowanych pakietach razem z serwerem Apache.

Instalator informuje o konieczności włączenia usługi w /etc/rc.conf. Możemy wyedytować plik ręcznie lub użyć sysrc:

sysrc apache24_enable="YES"

Informacje poinstalacyjne — wpis aktywujący Apache w /etc/rc.conf.

Przy starcie Apache wyświetla ostrzeżenie o braku ServerName:

service apache24 start
Performing sanity check on apache24 configuration:
AH00557: httpd: apr_sockaddr_info_get() failed for brylka
AH00558: httpd: Could not reliably determine the server's fully qualified domain
name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK
Starting apache24.

Edytujemy /usr/local/etc/apache24/httpd.conf i ustawiamy ServerName:

Dodanie wpisu ServerName w pliku konfiguracyjnym Apache.

Po ustawieniu ServerName przeładowanie Apache nie wyświetla już błędów.

Sprawdzenie działania Apache w przeglądarce z dowolnego komputera w Internecie.

HTTPS — certyfikat Let’s Encrypt

Instalujemy klienta Let’s Encrypt (certbot). Ponieważ w systemie nie było jeszcze Pythona, doinstaluje się on razem z pakietami:

pkg install py38-certbot py38-certbot-apache

Rozpoczęty proces instalacji klienta Let's Encrypt.

Informacje poinstalacyjne klienta Let's Encrypt z kolejnymi krokami konfiguracji.

W konfiguracji Apache włączamy moduł mod_ssl:

W konfiguracji Apache należy dodać ładowanie modułu mod_ssl.

Przed uruchomieniem certbota dodajemy wirtualnego hosta dla domeny:

Dodanie vhosta projekt.brylka.net.

Następnie certbot wystawia i instaluje certyfikat dla domen podpiętych do serwera:

Instalacja certyfikatu SSL dla domen podpiętych do serwera.

Strona pobrana przez HTTPS wraz z informacjami o certyfikacie.

Analiza w ssllabs.com potwierdza dobre zabezpieczenie projekt.brylka.net.

Od tej chwili serwer używa wyłącznie HTTPS — wejście po HTTP przekieruje na HTTPS, bo certbot dopisał odpowiednie reguły Rewrite do plików konfiguracyjnych:

Reguły Rewrite dodane do vhosta (przekierowanie HTTP → HTTPS).

Położenie kluczy Let's Encrypt w konfiguracji vhosta.

Na koniec włączamy automatyczne odnawianie certyfikatu — zgodnie z informacją poinstalacyjną dopisujemy do konfiguracji systemu:

sysrc weekly_certbot_enable="YES"

We wcześniejszych wersjach klienta do odnawiania używałem crontab — nowy mechanizm warto zweryfikować po ~3 miesiącach (przed wygaśnięciem certyfikatu).

Instalacja PHP

PHP potrzebne jest do paneli webowych. Instalujemy je wraz z modułem do Apache:

pkg install php74 mod_php74

mod_php74 to moduł PHP dla Apache i tak go skonfigurujemy. Alternatywnie PHP można zintegrować przez FastCGI Process Manager (FPM). Pozostałe rozszerzenia PHP doinstalujemy razem z konkretnymi aplikacjami.

Rozpoczęcie instalacji PHP.

Informacje poinstalacyjne mod_php.

Po instalacji dopisujemy do konfiguracji Apache obsługę plików *.php, aby były wykonywane przez PHP:

Dopisanie obsługi plików *.php w konfiguracji Apache.

Obsługa PHP na serwerze zainstalowana i działająca.

Co dalej

W części 4 instalujemy MySQL, panel phpMyAdmin oraz tworzymy tabele bazy danych obsługujące domeny i skrzynki systemu pocztowego.