Przejdź do głównej zawartości

🔒 Jak wdrożyć HTTPS w Apache za pomocą mkcert – prosta i bezpieczna konfiguracja SSL

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

  1. Kliknij dwukrotnie plik rootCA.pem
  2. Wybierz Zainstaluj certyfikatMaszyna lokalna
  3. 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 AccessSystem → Certificates → ImportujrootCA.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

EtapDziałanie
Instalacja mkcertmkcert -install
Generowanie certyfikatumkcert 10.0.0.123 rcp.local
Konfiguracja Apacheplik ssl-local.conf
Restart Apachesudo systemctl restart apache2
Dystrybucja CArootCA.pem na inne komputery
Odnowienieponownie 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

Popularne posty z tego bloga

Generowanie certyfikatów Let's Encrypt w Windows

Jak wygenerować certyfikat Let's Encrypt w systemie Windows? Przewodnik krok po kroku Certyfikaty SSL/TLS są niezbędne do zabezpieczenia komunikacji między użytkownikami a serwerem. Let's Encrypt to darmowa, zaufana organizacja, która umożliwia generowanie certyfikatów SSL w prosty sposób. W tym wpisie pokażemy, jak wygenerować certyfikat Let's Encrypt w systemie Windows za pomocą narzędzia Certbot oraz jakie opcje i alternatywy są dostępne. Krok 1: Zainstaluj Python Certbot wymaga Pythona do działania. Jeśli nie masz go jeszcze zainstalowanego: Pobierz instalator Pythona ze strony python.org . Uruchom instalator i zaznacz opcję "Add Python to PATH" . Krok 2: Zainstaluj Certbot Otwórz wiersz polecenia (cmd) jako administrator. Zainstaluj Certbot za pomocą pip: pip install certbot Krok 3: Wygeneruj certyfikat ...

Polityka wykonawcza skryptów w PowerShellu

Polityka wykonawcza (Execution Policy) w PowerShell – co to jest i jak ją zmienić? PowerShell to potężne narzędzie do automatyzacji i zarządzania systemem Windows. Jednak domyślne ustawienia bezpieczeństwa mogą uniemożliwić uruchamianie skryptów. W tym wpisie wyjaśniam, czym jest polityka wykonawcza (Execution Policy), jak ją sprawdzić i zmienić, aby móc swobodnie korzystać z PowerShell. Czym jest polityka wykonawcza (Execution Policy)? Polityka wykonawcza to mechanizm bezpieczeństwa w PowerShell, który kontroluje, jakie skrypty mogą być uruchamiane na systemie. Ma ona na celu zapobieganie przypadkowemu lub złośliwemu uruchomieniu niebezpiecznych skryptów. Dostępne polityki wykonawcze PowerShell oferuje kilka poziomów polityki wykonawczej: Restricted – domyślna polityka. Blokuje wszystkie skrypty PowerShell. Można uruchamiać tylko polecenia wprowadzane bezpośrednio w konsoli. AllSigned – pozwala na uruchamianie tylko skryptów pod...

Kalendarz Google - PHP

Jak dodać wydarzenia do Kalendarza Google w PHP? Wprowadzenie Google Calendar API pozwala na automatyczne dodawanie wydarzeń do kalendarza Google za pomocą PHP. W tym artykule pokażemy dwa sposoby: Uwierzytelnienie użytkownika przez OAuth 2.0 Wykorzystanie konta usługi (Service Account) Metoda 1: OAuth 2.0 – Autoryzacja użytkownika 1. Utworzenie projektu w Google Cloud Console 1. Przejdź do Google Cloud Console . 2. Utwórz nowy projekt lub wybierz istniejący. 3. Włącz Google Calendar API w sekcji API & Services . 2. Konfiguracja danych uwierzytelniających 1. Utwórz dane uwierzytelniające: OAuth 2.0 Client ID . 2. Pobierz plik JSON zawierający klucz autoryzacyjny. 3. Instalacja Google Client Library w PHP composer require google/apiclient:^2.0 4. Autoryzacja użytkownika Tworzymy plik auth.php : <?php require 'vendor/autoload.php'; session_start(); $client = new Google_Client(); $client->setAuthConfig('credentials.json'); $clie...