Informacje podstawowe dotyczące prawidłowej konfiguracji plików certyfikatów SSL.

Regularnie spotykamy się z pytaniami o komunikaty błędów związane z problemami z certyfikatami SSL – zazwyczaj o to, że Twój certyfikat nie jest zaufany.

W większości przypadków podstawową przyczyną jest to, że plik certyfikatu zawiera tylko certyfikat Twojego serwera.

Zadbaj o bezpieczeństwo swojego certyfikatu

Gdy otrzymasz pliki certyfikatu, zostanie Ci dostarczony plik certyfikatu publicznego.

Jeśli wygenerowałeś własny CSR (Certificate Signing Request), plik klucza prywatnego masz już w swoich rękach; w przeciwnym razie dostawca certyfikatu dostarczy Ci również klucz prywatny.

Klucz prywatny zaczyna się od „—–BEGIN PRIVATE KEY—–” i kończy na „—–END PRIVATE KEY—–“.

Ten plik, a także każdy inny plik, który może zawierać ten klucz prywatny, NIGDY nie może być nikomu udostępniany ani nigdzie przesyłany. Musi być skonfigurowany WYŁĄCZNIE na serwerze, który ma chronić.

Żadne legalne narzędzie ani system nigdy nie poprosi o jakiekolwiek informacje o kluczu prywatnym.

Jak to działa

Gdy klient próbuje nawiązać sesję SSL z serwerem, certyfikat serwera musi zostać zweryfikowany poprzez łańcuch zaufania. Z serwera klient otrzymuje certyfikat publiczny (często nazywany certyfikatem końcowym – Leaf Certificate) oraz pakiet certyfikatów pośrednich. Klient następnie:

  • Sprawdza certyfikat końcowy i widzi, że został on podpisany przez certyfikat pośredni, który znajduje się wyżej w łańcuchu.
  • Ten drugi certyfikat z kolei również będzie podpisany przez jeszcze inny urząd certyfikacji, który jest wyżej w łańcuchu.
  • …aż w końcu dotrze do certyfikatu podpisanego przez główny urząd certyfikacji (Root authority).
  • Klient szuka w swoim wewnętrznym magazynie certyfikatu głównego urzędu; te certyfikaty główne są przechowywane w systemach Windows, macOS, iOS i Android.
  • Jeśli klient znajdzie certyfikat główny w swoim magazynie, łańcuch jest uważany za ważny.
  • Klient wysyła mały fragment zaszyfrowanych danych do serwera. Jeśli serwer może odszyfrować te dane, dowodzi to, że serwer rzeczywiście posiada klucz prywatny i jest właścicielem certyfikatu końcowego.

Dlaczego certyfikaty mogą być wyświetlane jako niezaufane

Twój serwer przedstawia certyfikat końcowy, ale klienci nie wiedzą o każdym certyfikacie pośrednim. Bez certyfikatu pośredniego klient nie będzie w stanie zweryfikować łańcucha, a połączenie jest „niezaufane”.

Rozwiązanie

Serwer musi przedstawić certyfikaty pośrednie wraz z certyfikatem końcowym. Aby to osiągnąć, musisz upewnić się, że plik certyfikatu, który wdrażasz na serwerze, zawiera nie tylko certyfikat końcowy, ale także certyfikaty pośrednie.

Musisz zmodyfikować swój plik certyfikatu PEM za pomocą edytora tekstu i upewnić się, że ostateczny format wygląda tak:

----BEGIN CERTIFICATE-----
[Certyfikat Twojej Domeny/Serwera (Końcowy)]
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
[Certyfikat Pośredniego Urzędu Certyfikacji]
-----END CERTIFICATE-----

Twój plik certyfikatu może wymagać dodatkowych certyfikatów pośrednich, aby uzupełnić łańcuch.

Uprawnienia plików w systemie Linux

Upewnij się, że Twoje pliki certyfikatów mają prawidłowe uprawnienia po zapisaniu ich we właściwej lokalizacji:

sudo chown phonesystem:phonesystem /var/lib/3cxpbx/Bin/nginx/conf/Instance1/*.pem
sudo chmod 640 /var/lib/3cxpbx/Bin/nginx/conf/Instance1/*.pem

Gdzie są moje certyfikaty pośrednie?

Dostawca certyfikatu powinien dostarczyć Ci wszelkie niezbędne certyfikaty pośrednie, a w rzeczywistości większość z nich dostarcza pliki, które powinieneś móc po prostu „wrzucić” do swojego systemu.

Jeśli z jakiegoś powodu musisz je odtworzyć, istnieje wiele narzędzi online do tego celu; jednym z przykładów jest https://whatsmychaincert.com/#generate. Pamiętaj, aby nigdy nie przesyłać swojego pliku klucza prywatnego.

Uwaga dotycząca dołączania certyfikatu głównego

Większość administratorów systemów dla wygody dodaje certyfikat główny (Root certificate) na końcu pliku PEM certyfikatu, ale należy pamiętać o następujących kwestiach:

  • Jest to generalnie niepotrzebne; magazyn klienta (zazwyczaj pochodzący z systemu operacyjnego) będzie go już miał preinstalowanego.
  • Jeśli klient nie ma jeszcze certyfikatu głównego, to nie powinien ufać serwerowi, nawet jeśli ten wyśle mu certyfikat główny.
  • Jeśli serwer wysyła certyfikat główny przy każdym uzgadnianiu połączenia SSL, dodaje to od 1 do 2 KB do każdego nowego uzgadniania połączenia, bez żadnych korzyści funkcjonalnych.

Dołącz do dyskusji

Dołącz do dyskusji na naszym Forum. Obserwuj nas na X i LinkedIn, aby być na bieżąco z najnowszymi wiadomościami i nowymi funkcjami.