SSL: dni do wygaśnięcia
ważność krytycznamierzonysposób ssl
Ile dni zostało do wygaśnięcia certyfikatu. Alert, gdy automat Let's Encrypt się nie odnowił.
Od 2026-09-16 (CREATO_PING cf89ebe) w codziennym skanie dostępności jako odczyt ssl_expiry; osobny workflow ssl_daily zniknął. Już wygasły certyfikat łapie parametr „SSL: ważność certyfikatu”.
WIKI
artykuł z 16.09.2026 · źródeł 9Dni do wygaśnięcia certyfikatu SSL to parametr monitoringu stron internetowych, który odczytuje z certyfikatu serwera datę końca ważności i przelicza ją na liczbę pełnych dni pozostałych do tego terminu. Wynik zestawia się z progiem ostrzeżenia: certyfikat daleko od końca ważności, certyfikat bliski wygaśnięcia albo brak odczytu, gdy certyfikatu nie udało się pobrać. Parametr nie ocenia poprawności certyfikatu — to temat artykułu Ważność certyfikatu SSL. Sprawdza, czy odnowienie nastąpiło na czas: protokół ACME zakłada, że klient okresowo kontaktuje się z urzędem certyfikacji po zaktualizowane certyfikaty [1].
Jak działa
Wystawienie certyfikatu w ACME ma cztery kroki: złożenie zamówienia, udowodnienie kontroli nad nazwami, finalizację zamówienia żądaniem CSR i pobranie wystawionego certyfikatu [1]. Odnowienie powtarza ten przebieg. Let's Encrypt zaleca, by klient bez innych wskazówek odnawiał certyfikat, gdy zostanie mu jedna trzecia okresu ważności, co przy certyfikatach 90-dniowych oznacza odnowienie 30 dni przed końcem [3]. Nieudane odnowienie nie powinno być błędem krytycznym: klient ma ponawiać próby z wykładniczo rosnącym odstępem, najwyżej raz na dobę dla certyfikatu [3].
RFC 9773 dodaje do ACME rozszerzenie ARI (ang. ACME Renewal Information). Serwer ogłasza zasób renewalInfo, a dla konkretnego certyfikatu podaje sugerowane okno odnowienia z czasem początku i końca [2]. Klient powinien wylosować moment odnowienia w tym oknie [2]. Urząd może w ten sposób rozkładać obciążenie, a także poprosić o wcześniejsze odnowienie, na przykład przed masowym unieważnieniem certyfikatów [2]. Let's Encrypt zaleca sprawdzanie ARI co najmniej dwa razy dziennie dla każdego certyfikatu [3].
W wyzwaniu HTTP-01 klient udostępnia wartość key authorization pod ścieżką złożoną ze stałego przedrostka /.well-known/acme-challenge/ i tokenu [1]. Serwer ACME pobiera ją żądaniem GET, które musi trafić na port TCP 80, łączy się z co najmniej jednym adresem z rekordów A i AAAA domeny i powinien podążać za przekierowaniami [1].
Standardy i specyfikacje
- RFC 8555 (ACME) opisuje zamówienie, wyzwania i finalizację; w HTTP-01 walidacja udaje się tylko wtedy, gdy odpowiedź zawiera oczekiwaną wartość key authorization [1].
- RFC 9773 (ARI), standard proponowany z 2025 r., definiuje zasób
renewalInfoi sugerowane okno odnowienia; klient ma respektować nagłówekRetry-Afterprzy kolejnych zapytaniach [2]. - Ballot SC-081v3 CA/Browser Forum przyjęto 11 kwietnia 2025 r.: 25 głosów za wśród wystawców certyfikatów, bez głosów przeciw, i 4 głosy za wśród producentów przeglądarek [6]. Harmonogram skraca maksymalny okres ważności certyfikatu publicznego z 398 do 47 dni w latach 2026–2029, a okres ponownego użycia danych walidacji nazw z 398 do 10 dni [6]. Daty etapów podaje artykuł Ważność certyfikatu SSL.
- Let's Encrypt wystawia domyślnie certyfikaty 90-dniowe i na życzenie 6-dniowe; udana walidacja domeny jest pamiętana do 30 dni [4]. Profil tlsserver przeszedł na 45 dni 13 maja 2026 r., a profil classic przejdzie na 64 dni 10 lutego 2027 r. i na 45 dni z 7-godzinnym ponownym użyciem autoryzacji 16 lutego 2028 r. [7]. Stały odstęp odnowienia co 60 dni przestanie wystarczać; zalecane jest ARI albo odnawianie po około dwóch trzecich okresu ważności [7].
Zagrożenia i skutki
Koniec powiadomień e-mail. Let's Encrypt przestał wysyłać e-maile o zbliżającym się wygaśnięciu certyfikatu 4 czerwca 2025 r. [5]. Jako powody podał upowszechnienie niezawodnej automatyzacji odnowień, ochronę prywatności, bo usługa wymagała przechowywania milionów adresów e-mail powiązanych z wystawieniami, oraz koszt rzędu dziesiątek tysięcy dolarów rocznie [5]. Subskrybentom wskazał zewnętrzne usługi monitorowania [5]. Nieudane automatyczne odnowienie nie wysyła więc od urzędu żadnego sygnału do właściciela strony.
Zablokowany port 80. HTTP-01 działa wyłącznie na porcie 80 [8]. Let's Encrypt zaleca, by każdy serwer ogólnodostępnej strony obsługiwał HTTP na porcie 80 i HTTPS na 443, a zablokowany port 80 wskazuje jako źródło problemów z HTTP-01 [9]. Let's Encrypt nie publikuje listy adresów IP używanych do walidacji, adresy mogą się zmienić w dowolnej chwili, a walidacja odbywa się z wielu punktów sieci [4]. Reguła firewalla przepuszczająca tylko wybrane adresy albo kraje może więc zablokować walidację, choć strona działa dla odwiedzających.
Przekierowania. Let's Encrypt podąża za najwyżej 10 przekierowaniami i akceptuje tylko przekierowania na schemat http lub https, na port 80 lub 443 [8]. Samo przekierowanie z HTTP na HTTPS jest dopuszczalne i zalecane [3], ale token musi być dostępny pod adresem docelowym, bo walidacja sprawdza treść odpowiedzi [1].
Zmiana DNS i wiele serwerów. Urząd łączy się z adresem z rekordów A lub AAAA domeny, wybranym według własnego uznania [1]. Gdy domena wskazuje już nowy serwer albo proxy, a klient ACME działa na starym, token leży tam, gdzie walidator nie zagląda. Przy kilku serwerach plik trzeba udostępnić na każdym z nich [8].
Pamięć autoryzacji. Skoro udana walidacja jest pamiętana do 30 dni [4], odnowienie może się udać mimo zepsutej walidacji, a problem wyjdzie dopiero przy kolejnym. Przy 7-godzinnym ponownym użyciu autoryzacji [7] praktycznie każde odnowienie będzie wymagało nowej walidacji.
Przykłady
| Sytuacja | Skutek dla odnowienia | Podstawa |
|---|---|---|
| Port 80 zamknięty na firewallu | HTTP-01 nie przechodzi | wyzwanie tylko na porcie 80 [8] [9] |
| Firewall przepuszcza tylko wybrane adresy lub kraje | walidacja z niepublikowanych adresów odrzucona | walidacja z wielu punktów sieci [4] |
| Przekierowanie ścieżki wyzwania na port 8443 | walidacja przerwana | dozwolone tylko porty 80 i 443 [8] |
| Domena przeniesiona, klient ACME został na starym serwerze | token niedostępny pod adresem z rekordu A | walidacja łączy się z adresem z DNS [1] |
| Nieaktualny rekord AAAA | walidator może trafić na serwer IPv6 bez tokenu | wybór adresu należy do urzędu [1] |
| Certyfikat wieloznaczny | HTTP-01 nie wystarczy, potrzebne DNS-01 | rekord TXT pod _acme-challenge [8] |
| Odnowienie na sztywno co 60 dni przy certyfikacie 45-dniowym | certyfikat wygasa przed odnowieniem | zmiana okresu ważności [7] |
| Odnowienie nieudane, brak wiadomości od urzędu | nikt nie dostaje ostrzeżenia | koniec powiadomień e-mail [5] |
- [1] RFC 8555 — Automatic Certificate Management Environment (ACME) · IETF
- [2] RFC 9773 — ACME Renewal Information (ARI) Extension · IETF
- [3] Integration Guide · Let's Encrypt
- [4] FAQ · Let's Encrypt
- [5] Ending Support for Expiration Notification Emails · Let's Encrypt
- [6] Ballot SC081v3: Introduce Schedule of Reducing Validity and Data Reuse Periods · CA/Browser Forum
- [7] Decreasing Certificate Lifetimes to 45 Days · Let's Encrypt
- [8] Challenge Types · Let's Encrypt
- [9] Best Practice — Keep Port 80 Open · Let's Encrypt
STATS
wyniki z systemu · tylko liczby zbiorcze- Stron zmierzonych
- 174w ostatnim dniu pomiaru
- OK
- 321odczytów
- Fail
- 3odczytów
- Nie dało się sprawdzić
- 0timeout, blokada, limit zapytań
- Udział fail
- 0,9%bez „nie dało się”
- Stron łącznie
- 184choć jeden odczyt
- OK
- 1802odczytów
- Fail
- 13odczytów
- Nie dało się sprawdzić
- 0timeout, blokada, limit zapytań
- Udział fail
- 0,7%bez „nie dało się”
| Dzień | fail | nie dało się sprawdzić | ok |
|---|---|---|---|
| 23.08.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 24.08.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 25.08.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 26.08.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 27.08.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 28.08.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 29.08.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 30.08.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 31.08.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 01.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 02.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 03.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 04.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 05.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 06.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 07.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 08.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 09.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 10.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 11.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 12.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 13.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 14.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 15.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 16.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 17.09.2026 | 2 odczyty | 0 odczytów | 180 odczytów |
| 18.09.2026 | 2 odczyty | 0 odczytów | 179 odczytów |
| 19.09.2026 | 4 odczyty | 0 odczytów | 570 odczytów |
| 20.09.2026 | 2 odczyty | 0 odczytów | 552 odczyty |
| 21.09.2026 | 3 odczyty | 0 odczytów | 321 odczytów |
- Otwarte teraz
- 2stron: 2 · w okresie łaski: 1
- Nowe w ostatnim dniu
- 121.09.2026
- Otwarte od początku
- 3stron: 3
- Zamknięte
- 0od początku
- Mediana trwania
- —od wykrycia do zamknięcia
| Ustalenie | Skutek | Otwarte teraz | Łącznie | Zamknięte |
|---|---|---|---|---|
| Wygasanie certyfikatu SSL ssl_expiry | WARNING | 2 | 3 | 0 |
| Dzień | nowe ustalenia |
|---|---|
| 23.08.2026 | 0 ustaleń |
| 24.08.2026 | 0 ustaleń |
| 25.08.2026 | 0 ustaleń |
| 26.08.2026 | 0 ustaleń |
| 27.08.2026 | 0 ustaleń |
| 28.08.2026 | 0 ustaleń |
| 29.08.2026 | 0 ustaleń |
| 30.08.2026 | 0 ustaleń |
| 31.08.2026 | 0 ustaleń |
| 01.09.2026 | 0 ustaleń |
| 02.09.2026 | 0 ustaleń |
| 03.09.2026 | 0 ustaleń |
| 04.09.2026 | 0 ustaleń |
| 05.09.2026 | 0 ustaleń |
| 06.09.2026 | 0 ustaleń |
| 07.09.2026 | 0 ustaleń |
| 08.09.2026 | 0 ustaleń |
| 09.09.2026 | 0 ustaleń |
| 10.09.2026 | 0 ustaleń |
| 11.09.2026 | 0 ustaleń |
| 12.09.2026 | 0 ustaleń |
| 13.09.2026 | 0 ustaleń |
| 14.09.2026 | 0 ustaleń |
| 15.09.2026 | 0 ustaleń |
| 16.09.2026 | 0 ustaleń |
| 17.09.2026 | 2 ustalenia |
| 18.09.2026 | 0 ustaleń |
| 19.09.2026 | 0 ustaleń |
| 20.09.2026 | 0 ustaleń |
| 21.09.2026 | 1 ustalenie |
- Przebiegów
- 16sposób ssl
- W 30 dni
- 16przebiegów
- Ostatni
- 19.09.2026start przebiegu
- Stron w przebiegach
- 1050suma z przebiegów
CARD
karta z kodu CREATO_PING, odczyt 16.09.2026| Obszar i ważność | Bezpieczeństwo · krytyczna (B02) |
|---|---|
| Workflow i częstotliwość | creato_ping_avail_v2 działa na LAB247cron co 24 h, osobno T1–T4 · Strony w stanie DOWN i WARNING dostają dodatkowy odczyt co 6 h (timer availability_recheck poza n8n). Od 2026-09-16 sposób ssl daje odczyt ssl_expiry (dni do wygaśnięcia certyfikatu); od 2026-09-17 odczyty trafiają do check_results. |
| Sonda i helper | sposób ssl · CREATO_PING/helpers/ssl_check.py |
| Testy |
|
| Typ wyniku | enum: ok / fail (odczyt ssl_expiry); od skanu 2026-09-18 04:07 UTC liczba dni, data końca ważności i zgodność nazwy w polu extra (days_to_expiry, not_after, hostname_match); brak stanu timeout |
| Jednostka | dni (liczba całkowita, zaokrąglenie w dół) |
| Próg i reguła | Reguła: dni ≤ 14 = fail („odnowienie nie zadziałało”). Timeout uzgadniania 4,0 s (+0,5 s marginesu). Próg 3 dni (SSL_CRITICAL_DAYS) nadal daje fail w helperze, ale zapis zamienia go na ok odczytu ssl i nie wpływa na ssl_expiry. |
| Gdzie leżą pokrętła | CREATO_PING/helpers/config.py → SSL_WARN_DAYS (14), SSL_CRITICAL_DAYS (3), TIMEOUTS["ssl"]CREATO_PING/tools/avail_writer_input.py → SSL_WARN_DAYS (14, kopia stałej), _ssl_recordsCREATO_PING/helpers/site_params.py → CRITICAL_CHECK_TYPES (ssl_expiry poza listą) |
| Retencja odczytów | Każdy odczyt w tabeli check_results bazy LAB247; kod LAB247 tej tabeli nie czyści. Polityki retencji nikt jeszcze nie ustalił. |
| Znane rozbieżności |
|
| Karta przepisana z | CREATO_PING/helpers/ssl_check.py · CREATO_PING/tools/avail_writer_input.py · CREATO_PING/helpers/config.py · CREATO_PING/helpers/availability_recheck.py · CREATO_PING/helpers/clickup_writer_v2.py · CREATO_PING/helpers/site_params.py · LAB247/site/src/lib/parameters/stats.ts · odczyt 16.09.2026 |
1. fail = subtask w okresie łaski (IN PROGRESS, bez alertu). 2. fail z rzędu, czyli następnego dnia = WARNING — ssl_expiry nie jest sprawdzeniem krytycznym i nie daje DOWN. Odczyt ok po odnowieniu zamyka subtask. Po wygaśnięciu certyfikatu odczytu ssl_expiry nie ma, stronę przejmuje parametr SSL: ważność certyfikatu (NO SSL), a otwarty subtask ssl_expiry czeka na odnowienie.
| Ustalenie | Powaga | Pewność | Skutek | Subtask / alarm | Co zrobić |
|---|---|---|---|---|---|
| Wygasanie certyfikatu SSLssl_expiry | Normalne | Ewidentne | WARNING | tak / nie | Sprawdź odnowienie Let's Encrypt / certyfikatu u hostingu. |
LOOP
pętli: 2Trafności jeszcze nie liczymy: zamknięcie subtaska nie niesie dziś werdyktu (prawdziwy / fałszywy / nie dało się sprawdzić). Cztery liczby pojawią się, gdy każde zamknięcie dostanie werdykt — to warunek startu pętli 1.
Sygnał: Status CERT nie istniał na liście statusów w ClickUp (dodano tam „no ssl”), więc pierwsza zmiana statusu skończyłaby się błędem API. Przy przeglądzie wyszła też luka: wygasły certyfikat przy udanym uzgadnianiu dawał zwykły fail, czyli DOWN. · dotyczy też: SSL: ważność certyfikatu
- 1. Zbiórkaręcznieodczyt z nocnego skanu, bez zapisu per strona
- 2. Werdyktręcznierozjazd nazwy statusu i luka reguły zauważone przy przeglądzie
- 3. Miarabrakliczników trafności wtedy nie było
- 4. Kartabrakkarta parametru powstała 2026-09-16
- 5. Zmianazrobionenazwa NO SSL, wygasły = cert_invalid
- 6. Replaybrakbrak zapisanych odczytów do replayu
| Data | Zmiana | Powód | Wpływ na system | Commit · replay |
|---|---|---|---|---|
| 2026-08-13 | Status CERT przemianowany na NO SSL w zapisie i w kolejności statusów strony.helpers/clickup_writer_v2.py · helpers/site_params.py | Zapis musi wysyłać status istniejący na liście; CERT kończył się błędem 400. | cały system Zmienia nazwę statusu wszystkich stron z nieważnym certyfikatem. | 98ce862bez replayubez zapisu zatwierdzenia |
| 2026-08-13 | Odczyt certyfikatu: data wygaśnięcia już minęła przy udanym uzgadnianiu = cert_invalid (NO SSL) zamiast fail (DOWN).helpers/ssl_check.py · helpers/common.py | Serwer stoi, przeglądarka tylko zatrzymuje odwiedzającego — „nie działa” było mylące. | tylko ten parametr | 98ce862bez replayubez zapisu zatwierdzenia |
Sygnał: Przegląd harmonogramu: odczyt certyfikatu chodził tylko w odczycie co 6 h stron DOWN/WARNING, więc zły certyfikat na działającej stronie nie był wykrywany codziennie. · dotyczy też: SSL: ważność certyfikatu
- 1. Zbiórkaręcznieodczyt z nocnego skanu, bez zapisu per strona
- 2. Werdyktręczniepodgląd na 216 stronach przed włączeniem
- 3. Miarabrakliczników trafności wtedy nie było
- 4. Kartabrakkarta parametru powstała 2026-09-16
- 5. Zmianazrobionecertyfikat codziennie, wygasanie osobno
- 6. Replaybrakbrak zapisanych odczytów do replayu
| Data | Zmiana | Powód | Wpływ na system | Commit · replay |
|---|---|---|---|---|
| 2026-09-16 | Odczyt certyfikatu w codziennym skanie dostępności; ważny certyfikat wygasający za ≤ 3 dni = ok, a wygasanie raportuje osobny odczyt ssl_expiry (≤ 14 dni, WARNING). Ta sama reguła w odczycie co 6 h.tools/avail_writer_input.py · helpers/availability_recheck.py · helpers/schedule_publish.py | ssl jest sprawdzeniem krytycznym — fail zrobiłby DOWN z działającej strony. | cały system Nowy odczyt ssl_expiry — parametr SSL: dni do wygaśnięcia zaczyna być mierzony. | cf89ebebez replayubez zapisu zatwierdzenia |
| 2026-09-16 | Gdy odczyt form adresu dał cert_invalid, odczyt certyfikatu z cert_invalid nie trafia do zapisu.tools/avail_writer_input.py | Jeden problem, jedno ustalenie. | tylko ten parametr | cf89ebebez replayubez zapisu zatwierdzenia |