Wersja TLS i siła szyfrów
ważność średniamierzonysposób tls_wersje
Czy serwer wciąż przyjmuje TLS 1.0 albo 1.1. Wymagane przy audytach i przy płatnościach kartą.
Wdrożony 01.10 (badanie profilem): uścisk TLS z wymuszoną wersją 1.0 i 1.1 (RFC 8996: wycofane).
WIKI
artykuł z 16.09.2026 · źródeł 9Wersja TLS i siła szyfrów to parametr monitoringu stron internetowych, który sprawdza, które wersje protokołu TLS i które zestawy szyfrów przyjmuje serwer HTTPS, w szczególności czy wciąż zgadza się na TLS 1.0 albo 1.1. Wynikiem jest lista przyjętych wersji i szyfrów albo brak wyniku, gdy uzgadnianie się nie odbyło. RFC 8996 formalnie wycofuje TLS 1.0 i 1.1, bo nie obsługują obecnie zalecanych algorytmów kryptograficznych [1].
Jak działa
Wersję protokołu klient i serwer uzgadniają na początku połączenia. Domyślnie klient oferuje zakres od najniższej do najwyższej obsługiwanej wersji, a serwer wybiera najwyższą wspólną [7]. W TLS 1.3 klient podaje obsługiwane wersje w rozszerzeniu supported_versions [2]. Gdy tego rozszerzenia nie ma, a klient zgłasza TLS 1.0, serwer obsługujący TLS 1.0, 1.1 i 1.2 odpowie komunikatem ServerHello w wersji 1.0, a serwer obsługujący tylko nowsze wersje musi przerwać uzgadnianie alertem protocol_version [2].
Zwykłe połączenie ujawnia więc jedną wersję, a nie listę obsługiwanych. Dlatego pomiar z zewnątrz wykonuje osobne uzgadnianie dla każdej wersji: w OpenSSL opcje -tls1, -tls1_1, -tls1_2 i -tls1_3 sprawiają, że oferowana i przyjmowana jest tylko wskazana wersja [7]. Szyfry sprawdza się podobnie. Skrypt Nmap ssl-enum-ciphers wielokrotnie nawiązuje połączenie, za każdym razem z innym szyfrem, i zapisuje, czy serwer go przyjął; każdy przyjęty zestaw dostaje ocenę od A do F według siły wymiany kluczy i szyfru, bez uwzględniania wersji protokołu [8].
Pomiar ma ograniczenie po stronie klienta. Dostępność protokołów w OpenSSL zależy od sposobu kompilacji biblioteki [7], a poziomy bezpieczeństwa wykluczają stare wersje już u klienta: poziom 3 nie dopuszcza wersji starszych niż TLS 1.1, poziom 4 starszych niż TLS 1.2 [9]. Klient, który nie zaoferuje TLS 1.0, nie ustali, czy serwer by go przyjął.
Standardy i specyfikacje
- RFC 8996 (marzec 2021 r.) stanowi, że TLS 1.0 i 1.1 nie mogą być używane ani negocjowane. Strona, która otrzyma komunikat Hello z wersją
{03,01}lub{03,02}, musi odpowiedzieć alertemprotocol_versioni zamknąć połączenie [1]. - RFC 8446 (sierpień 2018 r.) definiuje TLS 1.3: usuwa zestawy ze statyczną wymianą kluczy RSA i Diffie-Hellmana, więc każda wymiana kluczy oparta na kluczu publicznym zapewnia poufność w przód (ang. forward secrecy) [2]. Serwer TLS 1.3, który wynegocjuje TLS 1.1 lub starszą wersję, musi oznaczyć ostatnie 8 bajtów pola Random, by klient wykrył obniżenie wersji [2].
- Mozilla w wytycznych w wersji 6.0 podaje dwa profile. Modern przyjmuje wyłącznie TLS 1.3, dla klientów od Firefoksa 63 i Chrome 70. Intermediate przyjmuje TLS 1.2 i 1.3 z szyframi ECDHE i AES-GCM lub ChaCha20-Poly1305, dla klientów od Firefoksa 31.3.0, Chrome 49 i IE 11 na Windows 10 [4].
- PCI SSC wyznaczyła 30 czerwca 2018 r. jako termin wyłączenia SSL i wczesnego TLS przy spełnianiu PCI DSS i przejścia na TLS 1.1 lub nowszy, z silnym zaleceniem TLS 1.2. Wyjątek objął terminale płatnicze niepodatne na znane ataki [3].
- Przeglądarki. Mozilla ogłosiła w 2018 r. wyłączenie TLS 1.0 i 1.1 w Firefoksie w marcu 2020 r. i podała, że Chrome, Edge i Safari planują to samo [5]. Chrome oznaczył TLS 1.0 i 1.1 jako przestarzałe w wersji 72, usunięcie przesunął do wersji 84, a od wersji 98 błąd połączenia nie daje się ominąć [6].
Zagrożenia i skutki
Słabości starych wersji. Integralność uzgadniania w TLS 1.0 i 1.1 zależy od skrótu SHA-1, a przed TLS 1.2 brakowało szyfrów AEAD [1]. PCI SSC przywołuje ataki POODLE i BEAST oraz stanowisko NIST, że SSL i wczesnego TLS nie da się skutecznie załatać [3].
Więcej wersji, więcej błędów. Obsługa czterech wersji protokołu zwiększa prawdopodobieństwo błędnej konfiguracji [1].
Odcięcie użytkowników. Serwer, który nie obsługuje TLS 1.2 lub nowszego, w Chrome od wersji 84 wywołuje pełnoekranowe ostrzeżenie [6]. Profil Modern z kolei odcina klientów starszych niż wymienione w wytycznych [4].
Słabe szyfry. Serwer może przyjmować obok silnych także słabe zestawy; ssl-enum-ciphers pokazuje siłę najsłabszego oferowanego zestawu w wierszu least strength [8].
Przykłady
| Przyjęte wersje i szyfry | Ocena |
|---|---|
| tylko TLS 1.3 | profil Modern [4] |
| TLS 1.2 i 1.3, ECDHE z AES-GCM lub ChaCha20 | profil Intermediate [4] |
| TLS 1.0, 1.1, 1.2 i 1.3 | niezgodne z RFC 8996 [1] |
| najwyżej TLS 1.1 | błąd bez możliwości obejścia w Chrome od wersji 98 [6] |
| przyjęty zestaw z oceną C | najsłabsze ogniwo konfiguracji [8] |
| brak połączenia TLS 1.0 z klienta na poziomie 3 | brak rozstrzygnięcia, klient sam wyklucza TLS 1.0 [9] |
- [1] RFC 8996 — Deprecating TLS 1.0 and TLS 1.1 · IETF
- [2] RFC 8446 — The Transport Layer Security (TLS) Protocol Version 1.3 · IETF
- [3] Are You Ready for 30 June 2018? Saying Goodbye to SSL/early TLS · PCI Security Standards Council
- [4] Mozilla SSL Configuration Guidelines, wersja 6.0 (JSON) · Mozilla
- [5] Removing Old Versions of TLS · Mozilla Security Blog
- [6] Chrome Platform Status — TLS 1.0 and TLS 1.1 (API) · Google Chrome
- [7] openssl(1) — TLS Version Options · OpenSSL Project
- [8] ssl-enum-ciphers — NSE Script · Nmap Project
- [9] SSL_CTX_set_security_level(3) · OpenSSL Project
STATS
wyniki z systemu · tylko liczby zbiorczeTen parametr nie zapisuje odczytu per strona — przebieg zostawia tylko ustalenia, więc liczby sprawdzonych stron i wyników „ok” system nie ma. Pojawią się po wdrożeniu zapisu przebiegów per strona per parametr.
Ten parametr nie otworzył jeszcze żadnego ustalenia w bazie LAB247. Pusto nie znaczy „czysto” — znaczy, że nic nie przekroczyło reguły.
Harmonogram nie zapisał jeszcze przebiegu ze sposobem „tls_wersje”. Zapis przebiegów z n8n działa od 2026-09-14.
CARD
karta z kodu CREATO_PING, odczyt 01.10.2026Jak ten parametr trafia do ClickUpa: wynik sondy to linia w subtasku 2. Pomiar, a usterka, którą otwiera — linia w subtasku 1. Podsumowanie (z identyfikatorem CWE i kategorią OWASP), skąd liczy się wskaźnik zagrożenia i status strony. Projekcja z bazy skanera odświeża oba subtaski co godzinę. Do 22.09 każde ustalenie dostawało własny subtask i status ze starego słownika (PODATNA, WARNING…) — te słowa zostały jeszcze w części opisów pomiaru niżej jako język wewnętrzny sond.
| Obszar i ważność | Bezpieczeństwo · średnia (B33) |
|---|---|
| Workflow i częstotliwość | skaner_badanie działa na LAB247Skaner 2.0, badanie kohorty: premium co 12 h, reszta co 24–48 h · Od 2026-10-01 zestawy kohort (premium_pelny, tani_ciezki, tani_lekki) mają tury higiena, serwer, sklep, kasa i strony (wyciek ścieżek B41, CMS po EOL B44, kluczowe podstrony S08, odnośniki kontaktowe D10); nocny pomiar wydajności (trend, waga, od 01.10 też metryki pasma W01–W04 i W07) tylko premium — u reszty prośba o pomiar zagłodziłaby nocny plan. Sklep: strona bez WooCommerce = „nie dotyczy”. |
| Sonda i helper | sposób tls_wersje · CREATO_PING/helpers/higiena_check.py |
| Testy |
|
| Typ wyniku | ok z mapą przyjmowanych wersji (TLSv1, TLSv1.1, TLSv1.2, TLSv1.3 → tak/nie); 0 albo 1 ustalenie tls_przestarzaly; nie_dalo_sie_sprawdzic (`zrodlo_nie_odpowiada`) |
| Jednostka | brak — wynik jakościowy (lista wersji protokołu, które serwer przyjął) |
| Próg i reguła | Reguła: serwer przyjął TLS 1.0 albo TLS 1.1 = tls_przestarzaly (powaga normalna; RFC 8996, PCI DSS). Limit 8,0 s na połączenie (TIMEOUT_S, higiena_check.py:41). |
| Gdzie leżą pokrętła | CREATO_PING/helpers/higiena_check.py → uscisk (SECLEVEL=0), tls_wersje, TIMEOUT_SCREATO_PING/config/incident_policy.toml → [finding] tls_przestarzaly |
| Retencja odczytów | Surowy pomiar jako NIEZMIENNY wiersz tabeli `odczyty` w bazie skanera (wejście, wyjście, dowody, sha karty sondy i helpera, commit kodu) — trigger odrzuca każdą zmianę. Okno retencji z kohorty: 90 dni premium, 30 dni reszta; poza oknem zostają odczyty z werdyktem problemu, akcją albo etykietą, bo replay reguł ich potrzebuje (`skaner/retencja.py`). Poza odczytem zostaje werdykt w tabeli `werdykty`; sprawy nie ma, bo badanie jej nie zakłada. Panel klienta LAB247 czyta najnowszy odczyt na żądanie (`GET /latest-readings`). |
| Znane rozbieżności |
|
| Karta przepisana z | CREATO_PING/helpers/higiena_check.py · CREATO_PING/helpers/security_testy.py · CREATO_PING/skaner/strona.py · CREATO_PING/skaner/worker.py · CREATO_PING/skaner/scenariusze/premium_pelny.toml · CREATO_PING/skaner/scenariusze/tani_ciezki.toml · CREATO_PING/skaner/scenariusze/tani_lekki.toml · CREATO_PING/skaner/scenariusze/ecommerce.toml · CREATO_PING/config/incident_policy.toml · CREATO_PING/skaner/usterki.toml · CREATO_PING/skaner/ocena.py · odczyt 01.10.2026 |
tls_przestarzaly: bramka polityki otwarta (gate=true) → sprawa w skanerze → Serwer przyjmuje przestarzałe szyfrowanie (TLS 1.0/1.1) — waga 2 → ocena 3–4 (niebieski), status strony „niski”, dopóki sprawa jest otwarta. Ten test chodzi wyłącznie w badaniu kohort, a sprawy zakłada worker tylko dla zleceń z harmonogramu (`skaner/worker.py` → ZRODLA_PRODUKCJI): w badaniu droga kończy się na werdykcie i usterce przebiegu, która podnosi wskaźnik tego badania (`skaner/strona.py` → usterki_przebiegu). Sprawa nie powstaje, więc wskaźnik strony liczony ze spraw się nie zmienia.
| Kod | Finding | Severity | Pewność | Skutek | Finding / alarm | Waga → ocena | Co zrobić |
|---|---|---|---|---|---|---|---|
| B33.01 | Serwer przyjmuje przestarzałe szyfrowanie (TLS 1.0/1.1)tls_przestarzaly | Średnia | — | usterka niekrytyczna | tak / — | waga 2 → ocena 3–4 (niebieski) | — |
| Kod i klucz | B33.01 · tls_przestarzaly → tls_outdated (klucz angielski przyjęty 01.10; skaner nadaje jeszcze stary) · w tabeli typów |
|---|---|
| Co znaczy | opis do opracowania |
| Kiedy powstaje | Kolejne handshake'i na port 443 z min=max = TLSv1, TLSv1.1, TLSv1.2, TLSv1.3, bez weryfikacji certyfikatu, szyfry 'DEFAULT:@SECLEVEL=0', timeout 8 s. SSLError lub reset = odmowa; OSError przy połączeniu = nie_dalo_sie. Finding powstaje, gdy serwer przyjął TLSv1 albo TLSv1.1.Uścisk :70-88, emisja :104-109. Gdy żadna wersja nie przeszła — nie_dalo_sie bez Findingu. |
| Severity · pewność | Średnia |
| Skutek dla strony | usterka niekrytyczna · zakłada Finding |
| Waga → ocena | waga 2 → ocena 3–4 (niebieski) |
| Klasyfikacja | CWE: CWE-327 (Use of a Broken or Risky Cryptographic Algorithm)OWASP Top 10:2025: A04:2025 Cryptographic FailuresOWASP ASVS 5.0.0: 12.1.1OCSF 1.9.0: Compliance Finding (class_uid 2003) |
| Rekord OCSF | finding_info.analytic.uid = "B33.01" · analytic.name = "tls_outdated" · finding_info.types = ["B33 Wersja TLS i siła szyfrów"] |
| Co zrobić | — |
| Wersje typu |
|
LOOP
bez pętliTrafnoś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.
Ten parametr nie przeszedł jeszcze żadnej pętli. Kolejność po pierwszych pięciu grupach ustali miara trafności.