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  Co to jest VPN? Kompletny przewodnik po wirtualnych sieciach prywatnych

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  Kontrola wersji z Git na Linux: Niezbędny przewodnik dla programistów

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 L2TP/IPsec: Kompleksowy przewodnik po ustawieniach, rozwiązywaniu problemów i zastosowaniach
Konfiguracja L2TP/IPsec: Kompleksowy przewodnik po ustawieniach, rozwiązywaniu problemów i zastosowaniach

Konfiguracja L2TP/IPsec: Kompleksowy przewodnik po ustawieniach, rozwiązywaniu problemów i zastosowaniach L2TP/IPsec (Layer 2 Tunneling Protocol z IPsec) jest popularnym rozwiązaniem Czytaj dalej

Mobilne systemy operacyjne
Mobilne systemy operacyjne

Mobilne systemy operacyjne Wprowadzenie Mobilne systemy operacyjne to oprogramowanie, które zarządza działaniem urządzeń mobilnych, takich jak smartfony, tablety i smartwatche. Czytaj dalej

Marek "Netbe" Lampart Inżynier informatyki Marek Lampart to doświadczony inżynier informatyki z ponad 25-letnim stażem w zawodzie. Specjalizuje się w systemach Windows i Linux, bezpieczeństwie IT, cyberbezpieczeństwie, administracji serwerami oraz diagnostyce i optymalizacji systemów. Na netbe.pl publikuje praktyczne poradniki, analizy i instrukcje krok po kroku, pomagając administratorom, specjalistom IT oraz zaawansowanym użytkownikom rozwiązywać realne problemy techniczne.