Generowanie, automatyczne odnawianie i podłączanie darmowych certyfikatów SSL od Let’s Encrypt w Apache


12 października 2020 / Michał Kortas


Poprzedni wpis na temat Let’s Encrypt opisywał generowanie darmowego certyfikatu za pomocą uwierzytelniania domeny przez odpowiedni wpis w DNS. Działa to świetnie, dopóki nie zachodzi potrzeba generowania i odnawiania certyfikatów w bardziej zautomatyzowany sposób. Dzisiaj pokażę, jak wygenerować certyfikat SSL za pomocą tzw. ACME challenge, czyli uwierzytelniania własności domeny przez wgranie do webroota odpowiedniego pliku. Sprawdzimy również podłączanie go pod Apache i automatyczne odnawianie.

Przygotowania

Aby wykonać poprawnie poniższe instrukcje potrzebne będzie spełnienie kilku poniższych wymagań.

Certbot na serwerze

Certbot jest rekomendowanym przez Let’s Encrypt klientem do generowania darmowych certyfikatów. Zapewnia konsolowy interfejs, który jest jednak prosty w użyciu. Te kilka poniższych kroków zakończą się pomyślnym utworzeniem certyfikatu SSL.

  1. Pobieramy certbota dla Windows z oficjalnej strony i instalujemy go na komputerze
  2. Upewniamy się, że użytkownik, na którego jesteśmy zalogowani będzie miał możliwość zapisu w katalogu C:\Certbot

Dostęp do strony przez port 80

Jeśli strona lub aplikacja korzysta z innego portu niż 80 to Let’s Encrypt nie uwierzytelni domeny. Konieczny jest publiczny dostęp.

Generowanie certyfikatu

Wstęp

Uruchamiamy CMD.exe lub PowerShell – koniecznie jako administrator. Wpisujemy kolejne komendy, rozpoczynając od inicjalizacji Certbota.

Po uruchomieniu mamy wybór, czy korzystamy z tymczasowego webservera, czy wykorzystamy działający już webserver. W tym przypadku wybieramy opcję nr 2 (wpisujemy 2 i zatwierdzamy enterem), ponieważ nasz serwer działa i nie chcemy go zatrzymywać w trakcie generowania certyfikatu.

Następnie wprowadzamy adres e-mail do powiadomień, zatwierdzamy i dalej wpisujemy A, aby zaakceptować warunki. Jako ostatni etap przygotowawczy przed sednem generowania certyfikatu zatwierdzamy (lub nie) newsletter.

Wybór domeny

Podajemy nazwę domeny, dla której generujemy certyfikat.

Podajemy nazwę domeny

Podajemy nazwę domeny

Podajemy ścieżkę katalogu głównego strony

Należy podać ścieżkę katalogu głównego. Dokładnie w tym miejscu Certbot wygeneruje specjalny katalog, do którego będzie próbowała odwołać się usługa certyfikująca Let’s Encrypt.

Podajemy ścieżkę katalogu głównego aplikacji

Podajemy ścieżkę katalogu głównego aplikacji

Wygenerowany certyfikat

Jeśli wszystko przebiegnie bez problemów, zostaniemy poinformowani o tym stosownym komunikatem.

Certyfikat Lets Encrypt został wygenerowany

Certyfikat Lets Encrypt został wygenerowany

Pliki certyfikatu (a właściwie symlinki do nich) znajdują się w katalogu: C:\Certbot\live\domena.

Certyfikat na dysku

Certyfikat na dysku

Teraz możemy zająć się podłączaniem certyfikatu pod Apache.

Podłączanie certyfikatu pod Apache

Jeśli wcześniej nie korzystaliśmy z certyfikatu SSL dla wybranej domeny na tym serwerze, upewnijmy się, że mamy odhaszowane następujące linie w pliku httpd.conf (główny plik ustawień Apache).

Zostaje jeszcze wprowadzenie zmian w https-vhosts.conf, czyli w pliku odpowiedzialnym za wirtualne hosty.

  • Linia 2 i 7 to nazwa naszej domeny.
  • Linie 4-6 to odwołania do wygenerowanych przez Let’s Encrypt plików.
  • Linie 8 i 9 to ścieżki do katalogu głównego strony lub aplikacji.

Po wprowadzeniu zmian restartujemy usługę Apache.

Sprawdzam!

Po otwarciu strony w przeglądarce, certyfikat jest aktywny.

Darmowy certyfikat SSL jest aktywny

Darmowy certyfikat SSL jest aktywny

Odnawianie domeny

Przy instalacji Certbota w Windowsie, dodał on zaplanowane zadanie, które automatycznie odnawia wszystkie wygasające certyfikaty.

Odnawianie certyfikatów SSL

Odnawianie certyfikatów SSL

Zawsze też można zrobić to samodzielnie za pomocą komendy:

Jeśli ważność certyfikatu będzie krótsza niż miesiąc, Certbot podejmie odpowiednie kroki aby samodzielnie i automatycznie go wygenerować.


Tagi:


15 odpowiedzi na “Generowanie, automatyczne odnawianie i podłączanie darmowych certyfikatów SSL od Let’s Encrypt w Apache”

  1. Kubba pisze:

    Rozumiem, że certyfikat wildcard również w ten sposób podłączę i przedłużę automatycznie? Jutro przetestuję i postaram się to wdrożyć jeśli się uda. Sporo roboty odchodzi przy tym jak się ma więcej subdomen / domen.

  2. Mowas pisze:

    nie bardzo rozumiem.
    Program certbot jest pod windowsa. Uruchamiamy CMD.EXE lokalnie na kompie, wykonuję wszystkie czynności i … co dalej ? jak niby Cerbot może utworzyć katalogi na serwerze w sieci ? , to niewykonalne. Cerbot powinien generować pliki na kompie lokalnym, a potem logujemy się na serwer, wrzucamy te pliki do katalogu http://domena.eu/.well-known/acme-challenge/i_tutaj_plik i dopiero wtedy powinna być weryfikacja . Jak to zrobić ?

    • Odpowiedziałem właśnie na ten temat mailowo do jednego z Czytelników, więc przeklejam rozwiązanie tutaj.
      Certbota najlepiej uruchamiać na maszynie, na której znajduje się domena. Można to zrobić oczywiście również na linuksie.

      Jeśli potrzebujesz zrobić to koniecznie na maszynie lokalnej to użyj:

      certbot certonly -a manual -d domena.pl --preferred-challenges http

      Dalej postępuj wg poleceń w konsoli. Na koniec Certbot poprosi o utworzenie pliku o konkretnej nazwie z konkretną zawartością.

      • Hobo pisze:

        Na jaki okres jest generowany certyfikat tym sposobem? Jeśli rok to ok, ale przy krótszym okresie i konieczności wgrywania świeżych plików a nie można tego zrobić samodzielnie tylko za opłatą to koszty rosną.
        Czy ten poradnik do generowania na maszynie lokalnej ale bez wpisów w dns czyli tak jak ww. generuje pliki które trzeba skopiować (przekazać do umieszczenia) w odpowiedni katalog? Można użyć -d *.domena.pl?

      • Certyfikaty wildcard mogą być autoryzowane jedynie przez DNS ze względów bezpieczeństwa. Można o tym przeczytać tutaj.

      • Robert pisze:

        Panie Michale jest Pan wielki. Wszystko działa :)

      • Dziękuję za miłe słowo, Panie Robercie! Pozdrawiam :)

      • Mariusz Berk pisze:

        Czy ten plik ma mieć format *txt?

  3. Thomson pisze:

    Panie Michale czy jest Pan mi w stanie pomóc na ustawieniu automatycznym odnawianiu SSL na hostingu nazwa.pl?

    • Witam, na hostingu to nie zadziała. Ale chyba nazwa ma możliwość ustawienia certyfikatu z panelu. Warto napisać do nich. https://www.nazwa.pl/blog/nazwa-pl-rozszerza-ochrone-domen-swoich-klientow

      • Andrzej pisze:

        nazwa.pl to w ogóle blokuje rozwój i strzyże klientów, nie dość że nie oferuja klienta do generacji certyfikatu na serwerze w ramach hostingu serwera, to nie dają dostępu root żebyś mógł sobie samemu to przygotować, trzymajcie się z daleka od nazwa.pl chyba że chcecie żeby was kasowali co krok o coś kolejnego niezbędnego żeby działała wam podstawowa funkcjonalność serwisu.
        klient nazwa.pl

      • Edios pisze:

        Na nazwa.pl nie da się podpiąć darmowego SSL, ograniczają to celowo tak jak już napisał Andrzej. Można tylko wykupić u nich płatny SSL, który na pierwszy rok jest tani a potem już kasują aż miło więc znaleźli sobie możliwość „dojenia” klientów z kolejnej stówki rocznie. Fatalny hosting ciągle za coś kasują, podobne sytuacje są w home.pl

      • Letsencrypt pisze:

        Na nazwa.pl da się podpiąć ten certyfikat.

        Wpierw musisz się zalogować do panelu klienta pod https://nazwa.pl tam > domeny > konfiguruj

        Uruchamiasz certbota z zadanymi parametrami i w panelu nazwa.pl wpisujesz długi ciąg znaków alfanumerycznych. Musisz zrobić dwa rekordy:
        _acme-challenge.domena.pl

        Potem postępujesz dalej zgodnie z instrukcjami certbota a zawartość plików privkey.pem oraz fullchain.pem wklejasz do panelu: https://admin.nazwa.pl > www i ftp > certyfikaty SSL > zmień certyfikat SSL

      • arturrr pisze:

        na nazwa.pl można wgrać certyfikat, ale czy można zrobić automatyczne odnawianie? bo nie wiem czy jest sens zgłębiać ten temat jak się okaże, że na darmo….

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.