Bezpieczeństwo połączenia HTTPS to dziś standard — nawet w sieciach lokalnych i aplikacjach testowych. W tym poradniku pokażę Ci, jak w prosty sposób wdrożyć SSL w Apache z pomocą narzędzia mkcert, które tworzy w pełni zaufane certyfikaty lokalne — bez potrzeby kontaktu z Let’s Encrypt czy urzędami certyfikacji.
🧩 Dlaczego warto używać mkcert?
mkcert to lekkie narzędzie, które automatycznie generuje certyfikaty zaufane przez przeglądarkę — bez ostrzeżeń o „niebezpiecznym połączeniu”.
- ✅ działa w sieci lokalnej,
- ✅ nie wymaga dostępu do Internetu,
- ✅ certyfikaty są natychmiast zaufane po instalacji CA,
- ✅ idealne dla środowisk firmowych i intranetów.
⚙️ Krok 1: Instalacja Apache
sudo apt update
sudo apt install apache2 -y
sudo systemctl enable apache2
sudo systemctl start apache2
Po instalacji otwórz w przeglądarce: http://10.0.0.123 Powinna się wyświetlić strona powitalna Apache.
🔧 Krok 2: Instalacja mkcert
sudo apt install libnss3-tools wget -y
sudo wget -O /usr/local/bin/mkcert https://github.com/FiloSottile/mkcert/releases/latest/download/mkcert-linux-amd64
sudo chmod +x /usr/local/bin/mkcert
mkcert -version
🏗️ Krok 3: Utworzenie lokalnego urzędu certyfikacji (CA)
mkcert -install
To polecenie utworzy lokalny urząd CA i doda go do zaufanych w systemie.
Pliki CA znajdują się w katalogu: ~/.local/share/mkcert/
📜 Krok 4: Generowanie certyfikatu SSL
sudo mkdir -p /etc/ssl/localCA
cd /etc/ssl/localCA
sudo mkcert 10.0.0.123 rcp.local
Powstaną dwa pliki:
10.0.0.123+1.pem– certyfikat,10.0.0.123+1-key.pem– klucz prywatny.
🌐 Krok 5: Konfiguracja Apache
sudo a2enmod ssl
sudo nano /etc/apache2/sites-available/ssl-local.conf
Wklej poniższą konfigurację:
<VirtualHost *:443>
ServerAdmin admin@local
ServerName 10.0.0.123
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /etc/ssl/localCA/10.0.0.123+1.pem
SSLCertificateKeyFile /etc/ssl/localCA/10.0.0.123+1-key.pem
<Directory /var/www/html>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
sudo a2ensite ssl-local.conf
sudo systemctl reload apache2
🔁 Krok 6: Wymuszenie przekierowania HTTP → HTTPS (opcjonalnie)
sudo nano /etc/apache2/sites-available/000-default.conf
Dodaj wewnątrz sekcji <VirtualHost *:80>:
Redirect permanent / https://10.0.0.123/
sudo systemctl restart apache2
✅ Krok 7: Test połączenia
Otwórz w przeglądarce: https://10.0.0.123 Zobaczysz zieloną kłódkę 🔒 i komunikat o bezpiecznym połączeniu.
🧩 Krok 8: Zaufanie CA na innych komputerach
Aby inne komputery w sieci ufały Twoim certyfikatom, skopiuj i zainstaluj plik:
sudo -i
~/.local/share/mkcert/rootCA.pem
💻 Windows
- Kliknij dwukrotnie plik
rootCA.pem - Wybierz Zainstaluj certyfikat → Maszyna lokalna
- Umieść w magazynie: Zaufane główne urzędy certyfikacji
🐧 Linux
sudo cp rootCA.pem /usr/local/share/ca-certificates/mkcert-rootCA.crt
sudo update-ca-certificates
🍎 macOS
Otwórz Keychain Access → System → Certificates → Importuj → rootCA.pem → ustaw Always Trust.
🔄 Krok 9: Odnowienie certyfikatu
cd /etc/ssl/localCA
sudo mkcert 10.0.0.123 rcp.local
sudo systemctl restart apache2
🧰 Krok 10: Automatyczne odnawianie (opcjonalnie)
Utwórz skrypt /usr/local/bin/renew-https.sh:
#!/bin/bash
cd /etc/ssl/localCA
mkcert 10.0.0.123 rcp.local
CERT=$(ls -t 10.0.0.123+*.pem | head -n 1)
KEY=$(ls -t 10.0.0.123+*-key.pem | head -n 1)
sed -i "s|SSLCertificateFile .*|SSLCertificateFile /etc/ssl/localCA/$CERT|" /etc/apache2/sites-available/ssl-local.conf
sed -i "s|SSLCertificateKeyFile .*|SSLCertificateKeyFile /etc/ssl/localCA/$KEY|" /etc/apache2/sites-available/ssl-local.conf
systemctl restart apache2
Dodaj do crona, aby odnawiał się co 6 miesięcy:
sudo crontab -e
0 3 1 */6 * /usr/local/bin/renew-https.sh
🎯 Podsumowanie
| Etap | Działanie |
|---|---|
| Instalacja mkcert | mkcert -install |
| Generowanie certyfikatu | mkcert 10.0.0.123 rcp.local |
| Konfiguracja Apache | plik ssl-local.conf |
| Restart Apache | sudo systemctl restart apache2 |
| Dystrybucja CA | rootCA.pem na inne komputery |
| Odnowienie | ponownie mkcert |
💡 Wnioski
Dzięki mkcert możesz w kilka minut uruchomić HTTPS w środowisku firmowym lub testowym. To rozwiązanie:
- ✅ nie wymaga internetu,
- ✅ jest w pełni darmowe,
- ✅ generuje zaufane certyfikaty,
- ✅ i można je zautomatyzować.
Jeśli tworzysz aplikacje webowe w sieci lokalnej — mkcert to must-have 🔐.
Komentarze
Prześlij komentarz