Jak stworzyć samodzielnie podpisany certyfikat SSL na Ubuntu
Baza wiedzy Linux

Jak stworzyć samodzielnie podpisany certyfikat SSL na Ubuntu

Jak stworzyć samodzielnie podpisany certyfikat SSL na Ubuntu?

Bezpieczeństwo witryn internetowych i serwerów to jeden z kluczowych elementów funkcjonowania współczesnych usług w sieci. Certyfikaty SSL pozwalają na szyfrowanie komunikacji między użytkownikiem a serwerem, zwiększając bezpieczeństwo przesyłanych danych. Choć w produkcyjnych środowiskach zaleca się korzystanie z certyfikatów SSL od zaufanych dostawców (np. Let’s Encrypt), w celach testowych czy dla lokalnych środowisk można stworzyć samodzielnie podpisany certyfikat SSL. W tym artykule dowiesz się, jak to zrobić na systemie Ubuntu.


Co to jest samodzielnie podpisany certyfikat SSL?

Samodzielnie podpisany certyfikat SSL to taki, który jest generowany i podpisywany przez właściciela serwera, a nie przez zaufane centrum certyfikacji (CA). Dzięki niemu można szyfrować połączenia, ale przeglądarki będą ostrzegały, że certyfikat nie pochodzi od zaufanego wystawcy. Takie certyfikaty sprawdzają się w:

  • środowiskach testowych,
  • serwerach lokalnych,
  • sytuacjach, gdzie zaufanie wystawcy certyfikatu nie jest kluczowe.
Jak stworzyć samodzielnie podpisany certyfikat SSL na Ubuntu
Jak stworzyć samodzielnie podpisany certyfikat SSL na Ubuntu

Krok 1: Wymagania wstępne

Aby stworzyć samodzielnie podpisany certyfikat SSL na Ubuntu, potrzebujesz:

  1. Serwera z systemem Ubuntu (np. Ubuntu 20.04 lub Ubuntu 22.04).
  2. Uprawnień administratora (root lub sudo).
  3. Zainstalowanego pakietu OpenSSL.

Zaktualizuj pakiety i upewnij się, że OpenSSL jest zainstalowany:

sudo apt update  
sudo apt upgrade -y  
sudo apt install openssl -y  

Krok 2: Tworzenie samodzielnie podpisanego certyfikatu

2.1 Wygenerowanie klucza prywatnego

Pierwszym krokiem jest wygenerowanie klucza prywatnego, który będzie używany do podpisywania certyfikatu SSL. Wykonaj poniższe polecenie:

openssl genrsa -out cert-key.pem 2048  
  • cert-key.pem to nazwa pliku z kluczem prywatnym.
  • Liczba 2048 oznacza długość klucza w bitach (zaleca się co najmniej 2048).
Czytaj  Dobre systemy dla Twojego biznesu!

2.2 Tworzenie żądania podpisania certyfikatu (CSR)

Następnie musisz stworzyć CSR (Certificate Signing Request), który zawiera dane o certyfikacie:

openssl req -new -key cert-key.pem -out cert-csr.pem  

Podczas tworzenia CSR zostaniesz poproszony o podanie kilku informacji:

  • Country Name (2-letter code) – np. PL (Polska).
  • State or Province Name – województwo.
  • Locality Name – miasto.
  • Organization Name – nazwa organizacji.
  • Organizational Unit Name – dział organizacji.
  • Common Name – domena, dla której wystawiany jest certyfikat (np. example.com lub adres IP).
  • Email Address – Twój e-mail.

Pozostałe pola możesz pozostawić puste, naciskając Enter.

2.3 Tworzenie certyfikatu SSL

Ostatnim krokiem jest stworzenie certyfikatu SSL, który będzie ważny przez określoną liczbę dni (np. 365 dni):

openssl x509 -req -days 365 -in cert-csr.pem -signkey cert-key.pem -out cert.pem  
  • cert.pem to plik certyfikatu SSL.
  • -days 365 oznacza, że certyfikat będzie ważny przez 1 rok.

Po zakończeniu tego kroku będziesz mieć dwa pliki:

  • cert-key.pem – klucz prywatny.
  • cert.pem – samodzielnie podpisany certyfikat SSL.

Krok 3: Instalacja certyfikatu SSL na serwerze

W zależności od używanego serwera WWW (np. Apache lub Nginx) należy odpowiednio skonfigurować certyfikat SSL.

3.1 Instalacja na serwerze Apache

Jeśli korzystasz z Apache, edytuj plik wirtualnego hosta HTTPS:

sudo nano /etc/apache2/sites-available/default-ssl.conf  

Upewnij się, że poniższe linie wskazują na wygenerowane pliki:

SSLEngine on  
SSLCertificateFile /ścieżka/do/cert.pem  
SSLCertificateKeyFile /ścieżka/do/cert-key.pem  

Zapisz zmiany, a następnie włącz obsługę SSL i witrynę:

sudo a2enmod ssl  
sudo a2ensite default-ssl.conf  
sudo systemctl reload apache2  

3.2 Instalacja na serwerze Nginx

Jeśli korzystasz z Nginx, edytuj plik konfiguracji serwera:

sudo nano /etc/nginx/sites-available/default  

Dodaj lub zmodyfikuj sekcję dla HTTPS:

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /ścieżka/do/cert.pem;
    ssl_certificate_key /ścieżka/do/cert-key.pem;

    location / {
        root /var/www/html;
        index index.html;
    }
}

Zapisz zmiany i zrestartuj Nginx:

sudo systemctl reload nginx  

Krok 4: Testowanie certyfikatu

Otwórz przeglądarkę i przejdź pod adres serwera (np. https://example.com). Powinieneś zobaczyć ostrzeżenie o niezaufanym certyfikacie – to normalne w przypadku certyfikatów samodzielnie podpisanych.

Czytaj  Tiktok jak działa

Krok 5: Przechowywanie klucza i certyfikatu

Ze względów bezpieczeństwa zadbaj o odpowiednie przechowywanie plików:

  • Klucz prywatny (cert-key.pem) powinien być dostępny wyłącznie dla użytkownika root:
    sudo chmod 600 cert-key.pem  
    

Podsumowanie

Samodzielnie podpisany certyfikat SSL to szybkie i łatwe rozwiązanie dla środowisk testowych oraz lokalnych serwerów. W powyższym przewodniku dowiedziałeś się, jak krok po kroku stworzyć taki certyfikat na systemie Ubuntu, skonfigurować go na serwerach Apache lub Nginx oraz przetestować jego działanie.

Pamiętaj, że w środowiskach produkcyjnych zaleca się użycie certyfikatów SSL od zaufanych dostawców, takich jak Let’s Encrypt, aby uniknąć ostrzeżeń przeglądarki i zapewnić pełne zaufanie użytkowników.

Polecane wpisy
Konfiguracja Filtrowania Poczty (Mail Filtering) w Postfix: Kompleksowy Przewodnik
Konfiguracja Filtrowania Poczty (Mail Filtering) w Postfix: Kompleksowy Przewodnik

Konfiguracja Filtrowania Poczty (Mail Filtering) w Postfix: Kompleksowy Przewodnik W dzisiejszym świecie poczta elektroniczna jest jednym z najważniejszych narzędzi komunikacyjnych, Czytaj dalej

Enumeracja i rekonesans w systemach Linux z użyciem narzędzi typu LinEnum i LinPEAS
Enumeracja i rekonesans w systemach Linux z użyciem narzędzi typu LinEnum i LinPEAS

Enumeracja i rekonesans w systemach Linux z użyciem narzędzi typu LinEnum i LinPEAS 🔍 Wprowadzenie W procesie testów penetracyjnych oraz Czytaj dalej