Wyszukiwanie w witrynie

Jak utworzyć lokalny certyfikat SSL z podpisem własnym w CentOS 8


SSL (Secure Socket Layer) i jego ulepszona wersja TLS (Transport Socket Layer) to protokoły bezpieczeństwa które służą do zabezpieczania ruchu sieciowego przesyłanego z przeglądarki internetowej klienta do serwera WWW.

Certyfikat SSL to certyfikat cyfrowy, który tworzy bezpieczny kanał pomiędzy przeglądarką klienta a serwerem internetowym. W ten sposób wrażliwe i poufne dane, takie jak dane karty kredytowej, dane logowania i inne bardzo prywatne informacje, są szyfrowane, co uniemożliwia hakerom podsłuchiwanie i kradzież Twoich informacji.

Co to jest certyfikat SSL z podpisem własnym?

Certyfikat SSL z podpisem własnym, w przeciwieństwie do innych certyfikatów SSL, które są podpisane i zaufane przez Urząd certyfikacji (CA), to certyfikat podpisany przez osobę fizyczną, która jest jego właścicielem.

Utworzenie go jest całkowicie bezpłatne i stanowi tani sposób na szyfrowanie lokalnego serwera internetowego. Jednak korzystanie z certyfikatu SSL z podpisem własnym jest zdecydowanie odradzane w środowiskach produkcyjnych z następujących powodów:

  1. Ponieważ nie jest podpisany przez urząd certyfikacji, samopodpisany certyfikat SSL generuje alerty w przeglądarkach internetowych, ostrzegając użytkowników o potencjalnym ryzyku, jeśli zdecydują się kontynuować. Alerty te są niepożądane i zniechęcają użytkowników do odwiedzania Twojej witryny, co może prowadzić do spadku ruchu w sieci. Aby obejść te alerty, organizacje zwykle zachęcają swoich pracowników, aby po prostu ignorowali alerty i kontynuowali działania. Może to wywołać niebezpieczny nawyk wśród użytkowników, którzy mogą zdecydować się na dalsze ignorowanie tych alertów w innych witrynach internetowych, potencjalnie padając ofiarą witryn phishingowych.
  2. Certyfikaty z podpisem własnym mają niski poziom bezpieczeństwa, ponieważ implementują technologie szyfrowania niskiego poziomu i skróty. Dlatego poziom bezpieczeństwa może nie odpowiadać standardowym zasadom bezpieczeństwa.
  3. Ponadto nie ma obsługi funkcji infrastruktury klucza publicznego (PKI).

To powiedziawszy, użycie samopodpisanego certyfikatu SSL nie jest złym pomysłem do testowania usług i aplikacji na komputerze lokalnym, który wymaga szyfrowania TLS/SSL.

W tym przewodniku dowiesz się, jak zainstalować lokalny certyfikat SSL z podpisem własnym na serwerze internetowym Apache localhost w systemie serwerowym CentOS 8.

Warunki wstępne:

Zanim zaczniesz, upewnij się, że spełniasz następujące podstawowe wymagania:

  1. Instancja serwera CentOS 8.
  2. Serwer WWW Apache zainstalowany na serwerze
  3. Nazwa hosta już skonfigurowana i zdefiniowana w pliku /etc/hosts. W tym przewodniku będziemy używać nazwy hosta naszego serwera tecmint.local.

Krok 1: Instalacja Mod_SSL na CentOS

1. Na początek musisz sprawdzić, czy serwer WWW Apache jest zainstalowany i działa.

sudo systemctl status httpd

Oto oczekiwany wynik.

Jeśli serwer WWW nie działa, możesz go uruchomić i włączyć po uruchomieniu za pomocą polecenia.

sudo systemctl start httpd
sudo systemctl enable httpd

Następnie możesz sprawdzić, czy Apache działa.

2. Aby umożliwić instalację i konfigurację lokalnego certyfikatu SSL z podpisem własnym, wymagany jest pakiet mod_ssl.

sudo dnf install mod_ssl

Po zainstalowaniu możesz sprawdzić jego instalację, uruchamiając.

sudo rpm -q mod_ssl

Upewnij się także, że pakiet OpenSSL jest zainstalowany (OpenSSL jest instalowany domyślnie w CentOS 8).

sudo rpm -q openssl 

Krok 2: Utwórz lokalny certyfikat SSL z podpisem własnym dla Apache

3. Po sprawdzeniu serwera WWW Apache i spełnieniu wszystkich wymagań wstępnych musisz utworzyć katalog, w którym będą przechowywane klucze kryptograficzne.

W tym przykładzie utworzyliśmy katalog /etc/ssl/private.

sudo mkdir -p /etc/ssl/private

Teraz utwórz lokalny klucz i plik certyfikatu SSL za pomocą polecenia:

sudo openssl req -x509 -nodes -newkey rsa:2048 -keyout tecmint.local.key -out tecmint.local.crt

Przyjrzyjmy się, co właściwie oznaczają niektóre opcje polecenia:

  • req -x509 – wskazuje, że używamy żądania podpisania certyfikatu x509 (CSR).
  • -nodes – ta opcja instruuje OpenSSL, aby pominął szyfrowanie certyfikatu SSL przy użyciu hasła. Pomysł polega na tym, aby Apache mógł odczytać plik bez jakiejkolwiek interwencji użytkownika, co nie byłoby możliwe, gdyby podano hasło.
  • -newkey rsa:2048 – wskazuje, że chcemy jednocześnie utworzyć nowy klucz i nowy certyfikat. Część rsa:2048 oznacza, że chcemy utworzyć 2048-bitowy klucz RSA.
  • -keyout – ta opcja określa, gdzie ma być przechowywany wygenerowany plik klucza prywatnego po utworzeniu.
  • -out – opcja określa, gdzie umieścić utworzony certyfikat SSL.

Krok 3: Zainstaluj lokalny certyfikat SSL z podpisem własnym na Apache

4. Po wygenerowaniu pliku certyfikatu SSL nadszedł czas na zainstalowanie certyfikatu przy użyciu ustawień serwera WWW Apache. Otwórz i edytuj plik konfiguracyjny /etc/httpd/conf.d/ssl.conf.

sudo vi /etc/httpd/conf.d/ssl.conf

Upewnij się, że pomiędzy tagami hosta wirtualnego znajdują się następujące linie.

<VirtualHost *:443>
    ServerAdmin [email 
    ServerName www.tecmint.local
    ServerAlias tecmint.local
 
    DocumentRoot /var/www/html
 
    SSLEngine on
    SSLCertificateFile /etc/ssl/private/tecmint.local.crt
    SSLCertificateKeyFile /etc/ssl/private/tecmint.local.key
</VirtualHost>

Zapisz i wyjdź z pliku. Aby zmiany zostały wprowadzone, zrestartuj Apache za pomocą polecenia:

sudo systemctl restart httpd

5. Aby użytkownicy zewnętrzni mogli uzyskać dostęp do Twojego serwera, musisz otworzyć port 443 przez zaporę ogniową, jak pokazano.

sudo firewall-cmd --add-port=443 --zone=public --permanent
sudo firewall-cmd --reload

Krok 3: Testowanie lokalnego certyfikatu SSL z podpisem własnym na Apache

Po skonfigurowaniu wszystkich konfiguracji uruchom przeglądarkę i przeglądaj adres swojego serwera, korzystając z adresu IP serwera lub nazwy domeny, korzystając z protokołu https.

Aby usprawnić testowanie, możesz rozważyć przekierowanie protokołu HTTP na HTTPS na serwerze Apache. Dzieje się tak, że za każdym razem, gdy będziesz przeglądać domenę przy użyciu zwykłego protokołu HTTP, zostanie ona automatycznie przekierowana do protokołu HTTPS.

Przeglądaj więc domenę lub adres IP swojego serwera

https://domain_name/

Otrzymasz alert informujący, że połączenie nie jest bezpieczne, jak pokazano. Będzie się to różnić w zależności od przeglądarki. Jak można się domyślić, alert wynika z faktu, że certyfikat SSL nie jest podpisany przez Urząd certyfikacji, a przeglądarka to rejestruje i zgłasza, że certyfikatowi nie można ufać.

Aby przejść do swojej witryny, kliknij kartę „Zaawansowane”, jak pokazano powyżej:

Następnie dodaj wyjątek do przeglądarki.

Na koniec załaduj ponownie przeglądarkę i zaobserwuj, że możesz teraz uzyskać dostęp do serwera, aczkolwiek na pasku adresu URL pojawi się ostrzeżenie, że witryna nie jest w pełni bezpieczna z tego samego powodu, dla którego certyfikat SSL jest samopodpisany, a nie podpisany przez Urząd certyfikacji.

Mamy nadzieję, że możesz teraz kontynuować, utworzyć i zainstalować samopodpisany certyfikat SSL na serwerze internetowym Apache localhost w CentOS 8.