Jak skonfigurować Apache HTTP z certyfikatem SSL?

Zabezpieczmy Apache certyfikatem SSL/TLS.

Po zaimplementowaniu certyfikatu skonfigurowana domena/adres IP będą dostępne przez HTTPS.

Zacznijmy to.

Na wysokim poziomie zrobimy co następuje.

  • Skompiluj Apache HTTP 2.4.5 z modułem SSL
  • Uzyskaj certyfikat SSL
  • Skonfiguruj Apache do obsługi SSL

Zainstaluj Apache z SSL ze źródła

Aby skonfigurować SSL, Apache HTTP musi być skompilowany z mod_ssl. Użyję CentOS 7 VM z Cyfrowy ocean aby to zademonstrować.

  • Zaloguj się do serwera Linux z rootem i pobierz najnowszą wersję Apache
wget http://www-us.apache.org/dist//httpd/httpd-2.4.25.tar.gz .

Uwaga: możesz Sprawdź tutaj dla najnowszej wersji.

  • Rozpakuj poleceniem gunzip
gunzip -c httpd-2.4.25.tar.gz | tar xvf -
  • Będziesz mieć nowy folder „httpd-2.4.25”
  • Wejdź do środka i wykonaj następujące polecenie konfiguracji
./configure --enable-ssl –-enable-so

Uwaga: Jeśli robisz to na zupełnie nowym serwerze, możesz napotkać problemy związane z APR, PCRE, OpenSSL i możesz zapoznać się z przewodnikiem rozwiązywania problemów.

Upewnij się, że nie otrzymujesz żadnego błędu z powyższego polecenia configure, a następnie musisz zainstalować poleceniem make.

make 
make install

Jak zwykle upewnij się, że nie ma błędów z powyższych poleceń. Oznacza to, że zainstalowałeś serwer WWW Apache z obsługą SSL.

Uzyskanie certyfikatu SSL

Istnieje wiele sposobów wygenerowania i uzyskania certyfikatu SSL podpisanego przez urząd certyfikacji.

Jeśli chcesz wdrożyć SSL na serwerze sieci intranet, to większość organizacji ma wewnętrzny zespół wystawców certyfikatów, więc musisz się z nimi skontaktować. Ale nadal musisz wygenerować CSR (Żądanie podpisania certyfikatu) i możesz to zrobić za pomocą OpenSSL.

Jeśli jednak chcesz zabezpieczyć adres URL do Internetu, możesz kupić certyfikat od VeriSign, GoDaddy, Namecheap, ZeroSSLitp. lub otrzymaj BEZPŁATNY certyfikat od Szyfrujmy.

Let’s Encrypt to projekt współpracy Linux Foundation, który oferuje BEZPŁATNY certyfikat SSL/TLS. Użyję Let’s Encrypt, aby uzyskać jeden certyfikat dla mojej domeny – Chandan.io

Istnieje wiele sposobów generowania CSR, ale najłatwiejszym, który znalazłem, jest użycie „SSL ZA DARMO” narzędzie online.

Wpisz adres URL, który chcesz zabezpieczyć

Zweryfikuj własność domeny za pomocą jednej z wymienionych metod i pobierz pliki certyfikatów domeny.

Otrzymasz trzy pliki, których użyjemy do skonfigurowania serwera Apache.

  • klucz – to jest Twój plik klucza i nie powinien być nikomu udostępniany publicznie
  • Certyfikat – aktualny certyfikat SSL dla Twojej domeny
  • Ca_bundle – główny/pośredni certyfikat osoby podpisującej
  • Przenieś pobrany plik na serwer WWW. Niedługo będziemy ich potrzebować.

    Konfiguracja Apache SSL

    Ostatnim krokiem byłoby skonfigurowanie Apache, aby mógł obsługiwać żądanie przez HTTPS.

    • Zaloguj się do serwera Apache
    • Wykonaj kopię zapasową pliku httpd.conf (domyślna lokalizacja /usr/local/apache2/conf/)
    • Otwórz plik w edytorze vi i upewnij się, że moduł mod_ssl i httpd-ssl.conf istnieją i nie są komentowane
    LoadModule ssl_module modules/mod_ssl.so 
    Include conf/extra/httpd-ssl.conf

    Do konfiguracji szczegółów certyfikatu użyjemy pliku httpd-ssl.conf. Aby upewnić się, że istnieją odpowiednie parametry, musisz wykonać następujące czynności.

  • SSLCertificateFile – Ścieżka do pliku CRT certyfikatu pobranego wcześniej
  • SSLCertificateKeyFile – ścieżka do pliku klucza private.a
  • SSLCertificateChainFile – ścieżka do pliku ca_bundle.crt
  • Wskazówka: możesz utworzyć nowy folder o nazwie „ssl” i przechowywać w nim wszystkie pliki związane z certyfikatami.

    • W razie potrzeby wykonaj kopię zapasową i użyj edytora vi, aby zmodyfikować plik.
    SSLCertificateFile "/usr/local/apache2/conf/ssl/certificate.crt"
    SSLCertificateChainFile "/usr/local/apache2/conf/ssl/ca_bundle.crt"
    SSLCertificateKeyFile "/usr/local/apache2/conf/ssl/private.key"

    Następnie musisz skonfigurować dyrektywę „ServerName”. Zwykle jest to nazwa Twojej domeny/URL

    ServerName chandan.io
    • Zapisz plik i uruchom ponownie serwer Apache
    cd /usr/local/apache2/bin 
    ./apachectl stop 
    ./apachectl start

    I na koniec musisz upewnić się, że Twoja domena jest zmapowana na nowo skonfigurowany adres IP serwera WWW. Po zakończeniu spróbuj uzyskać dostęp do swojej domeny za pomocą protokołu HTTPS.

    Jak widać, Chandan.io jest dostępny przez https z certyfikatem, który skonfigurowałem.

    Powyższe kroki są niezbędne do skonfigurowania certyfikatu SSL i musisz dalej modyfikować SSL, aby wzmocnić i zabezpieczyć, co wyjaśniłem tutaj. Przed uruchomieniem możesz również przetestować SSL/TLS swojego serwera internetowego, aby upewnić się, że nie jest narażony na typowe luki w zabezpieczeniach.

    Mam nadzieję, że dzięki temu dowiesz się, jak zaimplementować certyfikat SSL na serwerze Apache Web, aby adres URL był dostępny przez HTTPS.

    Podobał Ci się artykuł? Co powiesz na dzielenie się ze światem?