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.
- Pobieramy certbota dla Windows z oficjalnej strony i instalujemy go na komputerze
- 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.
1 | certbot certonly |
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 ś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.
Wygenerowany certyfikat
Jeśli wszystko przebiegnie bez problemów, zostaniemy poinformowani o tym stosownym komunikatem.
Pliki certyfikatu (a właściwie symlinki do nich) znajdują się w katalogu: C:\Certbot\live\domena.
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).
1 2 3 | LoadModule ssl_module modules/mod_ssl.so Include conf/extra/httpd-ssl.conf LoadModule socache_shmcb_module modules/mod_socache_shmcb.so |
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <VirtualHost *:443> ServerName webserver.test.pl SSLEngine on SSLCertificateFile C:/Certbot/live/webserver.test.pl/cert.pem SSLCertificateKeyFile C:/Certbot/live/webserver.test.pl/privkey.pem SSLCertificateChainFile C:/Certbot/live/webserver.test.pl/chain.pem ServerAlias webserver.test.pl DocumentRoot "${INSTALL_DIR}/www/public" <Directory "${INSTALL_DIR}/www/public/"> Options +Indexes +Includes +FollowSymLinks +MultiViews AllowOverride All Require all granted </Directory> </VirtualHost> |
Po wprowadzeniu zmian restartujemy usługę Apache.
Sprawdzam!
Po otwarciu strony w przeglądarce, certyfikat jest aktywny.
Odnawianie domeny
Przy instalacji Certbota w Windowsie, dodał on zaplanowane zadanie, które automatycznie odnawia wszystkie wygasające certyfikaty.
Zawsze też można zrobić to samodzielnie za pomocą komendy:
1 | certbot renew |
Jeśli ważność certyfikatu będzie krótsza niż miesiąc, Certbot podejmie odpowiednie kroki aby samodzielnie i automatycznie go wygenerować.
Tagi: Apache • certyfikat • Lets Encrypt • odnawianie • SSL • top
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.
Tak, ale ścieżka .well-known/acme-challenge, która jest generowana przez certbota musi utworzyć się w katalogu głównym domeny.
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ą.
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.
Panie Michale jest Pan wielki. Wszystko działa :)
Dziękuję za miłe słowo, Panie Robercie! Pozdrawiam :)
Czy ten plik ma mieć format *txt?
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
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
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
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
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….