Jak samodzielnie wygenerować darmowy certyfikat SSL od Let’s Encrypt?


29 września 2020 / Michał Kortas


Było już kilka wersji tego poradnika, jednak wszyscy kolejni dostawcy kolejno zamykali swoje pośrednictwo w generowaniu darmowego certyfikatu SSL. Nadszedł więc czas, aby się od nich odciąć i samodzielnie utworzyć darmowy certyfikat SSL/TLS Let’s Encrypt, bez obaw o przejęcie klucza prywatnego przez kogoś z zewnątrz.

Dzisiaj opiszę możliwość tworzenia certyfikatu na maszynie z systemem Windows. Do potwierdzenia własności domeny potrzebna będzie nam możliwość edycji wpisów DNS. Nie jest potrzebne bezpośrednie działanie na serwerze, na którym znajduje się strona.

Jeśli interesuje Cię automatyczne generowanie i odnawianie certyfikatu oraz podpięcie go pod Apache, zajrzyj do nowego wpisu: Generowanie, automatyczne odnawianie i podłączanie darmowych certyfikatów SSL od Let’s Encrypt w Apache.

Certbot – rekomendowany klient do generowania certyfikatów SSL Let’s Encrypt

Let’s Encrypt loves certbot

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
  3. Uruchamiamy CMD.exe lub PowerShell – koniecznie jako administrator

Weryfikacja domeny przez ustawienie wpisów w DNS

Dodanie specjalnego wpisu w DNS wymaga dostępu do serwera, który obsługuję domenę, a właściwie zarządza naszą strefą DNS.

Aby rozpocząć proces generowania darmowego certyfikatu SSL wykonujemy następującą komendę, zastępując webroad.dev własną nazwą domeny.

Uruchomienie procesu generowania certyfikatu SSL

Uruchomienie procesu generowania certyfikatu SSL

Certyfikat wildcard dla wszystkich subdomen

Jeśli chcemy wygenerować certyfikat tylko dla wszystkich subdomen naszej domeny, warto zamienić naszą pojedynczą domenę (w moim przypadku webroad.dev) na domenę zapisaną w formacie wildcard.

Dalej postępujemy według wskazówek wyświetlanych w konsoli.

Certyfikat wildcard dla domeny głównej i wszystkich subdomen (dodano 19.10.2021)

Jeśli certyfikatem chcemy objąć domenę główną oraz wszystkie subdomeny, wystarczy, że wykonamy następującą komendę:

Uwaga! Będzie należało dodać dwa rekordy DNS o tej samej nazwie, z różnymi wartościami dla każdego z nich.

Te same rekordy DNS

Te same rekordy DNS – przykład

Idąc tym tropem można wygenerować certyfikat wyłącznie dla kilku wybranych subdomen w jednym poleceniu:

Podajemy adres e-mail

Na podany adres będą wysyłane przypomnienia o konieczności odnowienia certyfikatu.

Podajemy adres e-mail do przypomnień

Podajemy adres e-mail do przypomnień

Warunki

Zapoznajemy się z warunkami korzystania z certyfikatów Let’s Encrypt. Nasza zgoda jest wymagana, aby przejść dalej.

Akceptujemy warunki używania Let's Encrypt

Akceptujemy warunki używania Let’s Encrypt

Newsletter

Możemy zrezygnować lub zgodzić się na newsletter.

Newsletter - zgoda lub nie

Newsletter – zgoda lub nie

Logowanie adresu IP

Wyrażamy zgodę na publiczne logowanie naszego adresu IP z informacją, że z tego adresu nastąpiła inicjacja generowania darmowego certyfikatu.

Wyrażamy zgodę na logowanie adresu IP

Wyrażamy zgodę na logowanie adresu IP

Weryfikacja domeny

Dodajemy wpis TXT do ustawień DNS domeny. Należy upewnić się, że zanim przejdziemy do kolejnego kroku, wpis ten będzie widoczny dla świata z zewnątrz. Moje ustawienia, które wprowadzałem w panelu dhosting.pl zapisały się i były widoczne już w kilka sekund. Może to jednak potrwać dłużej – wszystko zależy od operatora. Widoczność rekordu w DNS można sprawdzić np. na tej stronie.

Otrzymujemy klucz TXT do dodania w DNS

Otrzymujemy klucz TXT do dodania w DNS

Aktualizujemy wpis DNS - przykład w dhosting.pl

Aktualizujemy wpis DNS – przykład w dhosting.pl

Generowanie darmowego certyfikatu

Ostatni krok również może potrwać kilka sekund. Po zakończonym procesie zostaniemy poinformowani stosownym komunikatem.

Certyfikat został wygenerowany

Certyfikat został wygenerowany

Darmowy certyfikat SSL od Let’s Encrypt

Certyfikat, klucz konta w Let’s Encrypt i klucz prywatny zapisały się na dysku, w katalogu C:\Certbot\archive.

Plik certyfikatu i klucz prywatny

Plik certyfikatu i klucz prywatny

Tak wygenerowany certyfikat możemy podpiąć do naszej strony lub aplikacji internetowej.

Bezpiecznego SSLowania.


Tagi:


62 odpowiedzi na “Jak samodzielnie wygenerować darmowy certyfikat SSL od Let’s Encrypt?”

  1. Krylan pisze:

    Ogromne dzięki za tę stronę. Już kiedyś próbowałem skorzystać z Let’s Encrypt, ale od strony dostawcy hostingu nie było łatwo, a ten Certbot i jego obsługa chyba mnie wtedy przerosła. A przez narastającą niechęć Chrome’a do stron bez SSL i coraz bardziej potrzebnych korzyści płynących z posiadania takiego certyfikatu, dobrze, że coś takiego się znalazło. Chwila moment i udało mi się wszystko zrobić.

  2. Adrian pisze:

    Bardzo schludnie napisany poradnik, dzięki, z takim poradnikiem zainstalowanie SSL przyszło mi łatwo :)

  3. p3p pisze:

    Super opis – działa pysznie – dzięki, nie cale 5 min roboty – jeszcze raz dzięki za opis – teraz zostaje tylko zautomatyzować to jakoś

  4. Krzysztof pisze:

    Potkałem pewien problem po wgraniu plików na serwer i próbie weryfikacji otrzymuję komunikat z błędem. Wiecie co mam poprawić? Treść komunikatu:

    Invalid response from http://moja-domena.pl/.well-known/acme-challenge/HFs6RT1ULgfS8TXVICOywLfr9BzbwkW-6MDEDLMvt9k: <link rel="profile"

  5. GOLDWEB pisze:

    Na szczęście coraz więcej hostingów oferuje LE za free :)

  6. Rafał pisze:

    Witam niestety coś robię zle .Po utworzeniu katalogów well-known potem w nim acme-challenge i wkleiłem plik kontrolny na końcu.Ale wyskakuje mi błąd „some domains have failed”.
    Może problem leży w darmowym serwerze a domenie gdzie indziej.
    Mam też pytanie gdzie mam ustawić odpowiedni nagłówek TXT.Przy weryfikacji Dns.

    • Robert pisze:

      Robiłem przed chwilą generowanie i przeszło bez problemów przez 3 certyfikaty. W którym miejscu dostajesz błąd?

    • Pawel pisze:

      To nie ma być żaden plik tylko rekord DNS dodany w panelu administracyjnym strony, w któej masz zarejstrowaną domenę. Logujesz się do panelu zarządzania domeną i tam powinna być strefa DNS z dodanymi rekorami typu A, AAAA, SPF, MX, CNAME itd… Dodatjesz dodatkowy rekord typu TXT o podanych w poradniku parametrach. I tyle.

  7. radek pisze:

    Nie działa w ogóle ten poradnik {„status”:1,”errors”:[„Http Error”],”params”:[]}

  8. Przemo pisze:

    nie działa wyskakuje ten komunikat:

    Ta witryna nie jest bezpieczna

    Może to oznaczać, że ktoś próbuje Cię oszukać lub ukraść informacje wysyłane przez Ciebie na serwer. Zamknij tę witrynę natychmiast.

    Przejdź do strony początkowej
    Szczegóły
    Nazwa hosta w certyfikacie zabezpieczeń witryny internetowej jest inna niż nazwa witryny internetowej, którą próbujesz odwiedzić.
    Kod błędu: DLG_FLAGS_SEC_CERT_CN_INVALID

  9. Darteye pisze:

    Mogę pomóc jak ktoś ma problemy z weryfikacją przez DNS, kliknij w moją nazwę i wyślij zapytanie przez stronę, odpisze tego samego dnia

  10. Andrzej pisze:

    Ja zamówiłem SSL tutaj bezpłatnie https://www.agendo.pl/ssl musiałem się pobawić z wpisem do DNS ale bez problemu wygenerowało.

  11. Andrzej pisze:

    Tylko okazuje się że zerossl jest bezpłatnie tylko na 90 dni i nie można przedłużyć bezpłatnie…

  12. Marcin pisze:

    Ale to proste… Wildcard dla mojej domeny wygenerował się bez problemu. Thx za wskazówkę

  13. Slava pisze:

    Super poradnik!
    A jak wygląda sprawa z odnowieniem certyfikatu wygenerowanego tą metodą?
    Trzeba powtórzyć wszystkie operacje czy wystarczy „certbot renew”?

  14. Krzysztof pisze:

    Certyfikat wildcard wygenerował i zainstalował się poprawnie. Potwierdzenie poprawności zainstalowania certyfikatu informuje jednak co następuje: „Pomyślnie zaktualizowano certyfikat witryny internetowej obsługującej protokół SSL. Witryna używająca protokołu SSL jest teraz aktywna i dostępna za pośrednictwem protokołu HTTPS w tej domenie: mail.przykladowadomena.pl. Witryna SSL jest też dostępna za pośrednictwem tych domen, ale certyfikat nie obsługuje ich. Podczas uzyskiwania dostępu do te domeny przez HTTPS przeglądarki internetowe będą wyświetlać ostrzeżenie: przykladowadomena.pl”. Rzeczywiście przeglądarka Google Chrome ostrzega o stronie niezabezpieczonej. Czy coś zrobiłem źle? Zabezpieczenie tylko subdomeny mail mnie nie urządza. Chwilowo rezygnuję z wildcard. Może ktoś w międzyczasie poda rozwiązanie problemu.

    • Gaba pisze:

      Mam ten sam problem: „Witryna SSL jest też dostępna za pośrednictwem tych domen, ale certyfikat nie obsługuje ich. Podczas uzyskiwania dostępu do te domeny przez HTTPS przeglądarki internetowe będą wyświetlać ostrzeżenie” Czy od czasu komentarza Pana Krzysztofa ktoś może znalazł rozwiązanie tego problemu?

  15. Tomek pisze:

    Dzieki za super poradnik.

    Czy jest możliwość wygenerowania SSL pod innym adresem email niz podanym za pierwszym razem?

  16. sunspot pisze:

    Coś chyba jest nie tak, mimo dodania rekordu TXT i sprawdzeniu dnsów, certbot pokazuje błąd, że nie może rekordu odnaleźć. A wskazanym narzędziem w artykule jest wszystko w porządku.

  17. newbee pisze:

    Dzięki. Poszło gładko! A jak to się robi dla ubydwu adresów z www. i bez?

  18. Łukasz pisze:

    OK, udało mi się wygenerować pliki certyfikatów – co dalej? wrzucić je ftp’em do katalogu strony??

    • W zależności od dostawcy hostingu można to zrobić na różne sposoby. W panelu powinna być opcja wgrania własnego certyfikatu. Najlepiej skontaktuj się z helpdeskiem.

      • Krzysiek pisze:

        Dzięki za wpis. Poszło gładko, klucze certyfikatu mam. Tylko co dalej. WordPress jest na home.pl. Za instalację zewnętrznych (nie od nich) certyfikatów żądają pieniędzy. Czy jest jakiś sposób aby samodzielnie podpiąć certyfikat Let’s Encrypt? Domena jest na ovh i przekierowana do home.pl.

      • Niestety w grę wchodzi tylko samodzielne wgranie certyfikatu w panelu (jeśli jest taka opcja) lub pomoc techniczna home.pl.

  19. Mowas pisze:

    A jakie polecenia wykonać aby weryfikacja była poprzez .well-known/acme-challenge/ zamiast TXT DNS ?

  20. Tomek pisze:

    Przydało się, dzięki :)

  21. maurycy pisze:

    w jaki sposob zrobic aktywacje w inny sposob niz txt dns?

    • Jeśli chodzi o Certbota to obecnie jedynie DNS-challenge i HTTP-challenge.

      • @ Michał Kortas

        Czy istnieje jakiś aktualny poradnik jak użyć Certbota (opcja: HTTP-challenge) do pozyskania certfikatu SSL dla aplikacji WEB pisanej w Python/Django, wykorzystujacej Nginx na serverze VPS z Linux/Debian9, dla przypadku gdy nie istnieją rekordy DNS, bo nie rejestrowano domeny.

      • Certyfikat SSL przez Let’s Encrypt można generować jedynie dla istniejącej i zarejestrowanej domeny.

  22. Sebastian pisze:

    Super Poradnik, polecam!!

  23. Krzysztof pisze:

    Bardzo dziękuję. Do tej pory korzystałem z pośrednictwa ZeroSSL. Ale można tam utworzyć jednocześnie jeden certyfikat. Tutaj nie ma żadnych ograniczeń i żadnych pośredników. Świetnie.

  24. Tomasz pisze:

    Dziękuję za opis.
    Proszę o pomoc. Dodałem do jednej strony certyfikat nie było żadnego problemu. Przy dodawaniu kolejnego wyskoczył taki błąd i nic nie mogę dalej zrobić:

    Traceback (most recent call last):  File "runpy.py", line 194, in _run_module_as_main  File "runpy.py", line 87, in _run_code  File "C:\Program Files (x86)\Certbot\bin\certbot.exe\__main__.py", line 28, in   File "C:\Program Files (x86)\Certbot\pkgs\certbot\main.py", line 2, in     from certbot._internal import main as internal_mainImportError: cannot import name 'main' from 'certbot._internal' (C:\Program Files (x86)\Certbot\pkgs\certbot\_internal\__init__.py)

  25. zbyszek pisze:

    Dziękuję za ten tutorial. Był bardzo pomocny.

  26. makosc pisze:

    Mam problem, wygenerowałem i zainstalowałem certyfikat wildcart. Niestety domena główna nie jest chroniona. Jak można to zmienić?

    • Piotr pisze:

      Mam dokładnie ten sam problem.
      dodając *. dotyczy to tylko subdomen, trzeba wygenerować osobny SSL bez *, wtedy są dwa certyfikaty, póki co tak zrobiłem i działa. Ale bez sensu dla jednej domeny robić dwa osobne certyfikaty. Trzeba zmodyfikować komendę.

    • Witam! Dodałem kolejny podrozdział opisujący ten przypadek. „Certyfikat wildcard dla domeny głównej i wszystkich subdomen (dodano 19.10.2021)”.

  27. Gizmodo pisze:

    Super poradnik, pięknie dziękuję!

  28. Paweł Krysiak pisze:

    Genialny poradnik, bardzo dziękuję. Gdybyś potrzebował bezpłatnej porady kulinarnej zgłoś, się do mnie, chętnie się odwdzięczę. :)

  29. Gonzee pisze:

    Certyfikat generujemy z nazwą www, np. http://www.example.com czy wpisujemy tam tak jak jest w przykładzie example.com ? Pytam bo zainstalowałem certyfikat i wchodząc na stronę niewpisując przedrostku 'www’ wszystko działa. Natomiast wpisując 'www’ mam błąd typu Domain mismatch…

  30. igo pisze:

    Ok zrobilem wszyatko jak w poradniku. Wygenerował mi te pliki i co teraz z tym zrobić? Gdzie i w jakis sposob wpisać te klucze żeby z moją domeną łączyć się bezpiecznie?

  31. Sebastian pisze:

    Dzień dobry,
    Super opisane, certyfikat wygenerowałem podpiąłem pod NASa, ale jak go odnowić? Polecenie „cert renew” zwraca mi błędy. Proszę o pomoc.

  32. Czy jest jakiś sposób, aby zautomatyzować ten proces na hostingu webd.pl?

  33. Mam następujące pytanie: w panelu administracyjnym SSL są trzy pola: 1. certyfikat, 2. certifikat Root CA, 3. klucz prywatny. W folderze są 4 pliki (a) cert.pem, (b) chain.pem, (c) privkey.pem, (d)fullchain.pem. Przy przyporządkowaniu 1a, 2b, 3c – próba zapisania w panelu administracyjnym SSL kończy się informacją: Błąd przy dodawaniu certyfikatu. Prosiłbym o jakąś podpowiedź, gdzie robię błąd.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.