SSL sertifikato tikrinimas ir stebėjimas

SSL sertifikato tikrinimas ir stebėjimas: 12 geriausių įrankių ir automatizavimo vadovas

SSL sertifikatas veikia tyliai. Kai viskas gerai, niekas jo nepastebi. Kai kas nors sugenda, pasekmės ateina akimirksniu: naršyklė blokuoja svetainę, lankytojai mato raudoną įspėjimą, pardavimai sustoja, o Google robotas negali pasiekti jūsų puslapių.

Pasibaigęs SSL sertifikatas yra viena dažniausių priežasčių, kodėl svetainės tampa nepasiekiamos. 2020 metais net tokie technologijų gigantai kaip Microsoft Teams ir Spotify patyrė trikdžius dėl pasibaigusių sertifikatų. Jei tai nutinka didžiosioms kompanijoms su šimtais inžinierių, tai gali nutikti ir jums.

Šiame straipsnyje rasite viską, ko reikia, kad tai niekada nenutiktų jūsų svetainei: nuo rankinio tikrinimo iki pilnai automatizuoto stebėjimo su pranešimais.

Kodėl SSL sertifikato tikrinimas ir stebėjimas yra būtinas

Pasibaigusio sertifikato pasekmės

Kai SSL sertifikatas pasibaigia, pasekmių grandinė prasideda per sekundes:

1. Naršyklės blokuoja svetainę. Chrome, Firefox, Safari ir Edge rodo pilno ekrano įspėjimą „Your connection is not private” (NET::ERR_CERT_DATE_INVALID). Lankytojas turi aktyviai spausti „Advanced” ir „Proceed” mygtukus, kad pasiektų svetainę. 95 % lankytojų to nedaro ir tiesiog palieka.

2. SEO pozicijos smunka. Google robotas, susidūręs su pasibaigusiu sertifikatu, negali patikimai nuskaityti svetainės. Jei problema trunka ilgiau nei kelias dienas, puslapiai gali būti pašalinti iš indekso.

3. El. parduotuvės sandoriai nutrūksta. Mokėjimo vartai (Stripe, PayPal) atmeta užklausas iš svetainių su negaliojančiu sertifikatu. Pardavimai sustoja akimirksniu.

4. API integracijos nustoja veikti. Jei jūsų serveris komunikuoja su trečiųjų šalių API, pasibaigęs sertifikatas nutraukia šiuos ryšius.

5. El. pašto pristatymas sutriksta. SMTP serveriai su pasibaigusiais sertifikatais gali prarasti el. laiškus arba jie bus atmesti priimančiojo serverio.

Tikrinimo dažnumo rekomendacijos

Svetainės tipasRankinis tikrinimasAutomatinis stebėjimas
Asmeninis tinklaraštisKartą per mėnesįKasdien
Verslo svetainėKartą per savaitęKas valandą
El. parduotuvėKartą per savaitęKas 5-15 minučių
Finansinė platformaKasdienKas 1-5 minutes
API serverisKasdienKas 1-5 minutes

Ką tiksliai reikia tikrinti: SSL tikrinimo kontrolinis sąrašas

SSL sertifikato „tikrinimas” nėra vienas veiksmas. Tai kelių skirtingų aspektų patikrinimas, ir kiekvienas iš jų gali atskleisti skirtingas problemas.

1. Sertifikato galiojimo datos

Kiekvienas SSL sertifikatas turi dvi datas:

  • Not Before (Galioja nuo): Data, nuo kurios sertifikatas pradeda galioti. Jei serverio laikrodis rodo ankstesnę datą, sertifikatas bus atmestas.
  • Not After (Galioja iki): Data, kai sertifikatas nustoja galioti. Po šios datos naršyklės ir kiti klientai atmes sertifikatą.

Let’s Encrypt sertifikatai galioja 90 dienų. Mokamų sertifikatų maksimalus galiojimo terminas yra 398 dienos (nuo 2020 metų rugsėjo).

Komandinė eilutė:

# Patikrinkite sertifikato datas
echo | openssl s_client -servername jusudomenas.lt \
  -connect jusudomenas.lt:443 2>/dev/null | \
  openssl x509 -noout -dates

# Rezultatas:
# notBefore=Mar 15 00:00:00 2026 GMT
# notAfter=Jun 13 23:59:59 2026 GMT

Kiek dienų liko iki galiojimo pabaigos:

echo | openssl s_client -servername jusudomenas.lt \
  -connect jusudomenas.lt:443 2>/dev/null | \
  openssl x509 -noout -enddate | \
  awk -F= '{print $2}' | \
  xargs -I {} bash -c 'echo $(( ($(date -d "{}" +%s) - $(date +%s)) / 86400 )) dienų liko'

2. Sertifikatų grandinės teisingumas

SSL sertifikatas yra patikimas tik tada, kai naršyklė gali atsekti pilną pasitikėjimo grandinę nuo jūsų domeno sertifikato iki šakninio (root) sertifikato. Grandinė paprastai atrodo taip:

Šakninis sertifikatas (Root CA)
  └── Tarpinis sertifikatas (Intermediate CA)
       └── Jūsų domeno sertifikatas (Leaf Certificate)

Jei trūksta tarpinio sertifikato, kai kurios naršyklės ir įrenginiai negalės patvirtinti jūsų sertifikato. Modernios naršyklės (Chrome, Firefox) dažnai gali automatiškai atsisiųsti trūkstamą tarpinį sertifikatą, tačiau senesni įrenginiai, mobiliosios aplikacijos ir API klientai to nedaro.

Komandinė eilutė:

# Parodykite pilną sertifikatų grandinę
openssl s_client -connect jusudomenas.lt:443 \
  -servername jusudomenas.lt -showcerts 2>/dev/null | \
  grep -E "^(Certificate chain| [0-9]+ s:|   i:)"

Teisingas rezultatas turi rodyti bent 2-3 sertifikatus:

Certificate chain
 0 s:CN = jusudomenas.lt
   i:C = US, O = Let's Encrypt, CN = R3
 1 s:C = US, O = Let's Encrypt, CN = R3
   i:C = US, O = Internet Security Research Group, CN = ISRG Root X1

Jei matote tik vieną sertifikatą (0), vadinasi, trūksta tarpinių sertifikatų ir juos reikia pridėti prie serverio konfigūracijos.

3. Domeno vardo atitikimas

Sertifikatas turi atitikti domeno vardą, kuriuo lankytojas pasiekia svetainę. Patikrinkite:

  • Ar sertifikatas apima jusudomenas.lt?
  • Ar sertifikatas apima www.jusudomenas.lt?
  • Jei naudojate subdomenus, ar jie įtraukti (arba ar turite Wildcard sertifikatą *.jusudomenas.lt)?

Komandinė eilutė:

# Patikrinkite, kokie domenai nurodyti sertifikate
echo | openssl s_client -servername jusudomenas.lt \
  -connect jusudomenas.lt:443 2>/dev/null | \
  openssl x509 -noout -text | \
  grep -A1 "Subject Alternative Name"

# Rezultatas:
# X509v3 Subject Alternative Name:
#     DNS:jusudomenas.lt, DNS:www.jusudomenas.lt

4. TLS protokolo versija

Senesni TLS protokolai (TLS 1.0, TLS 1.1) turi žinomų saugumo spragų ir yra oficialiai atsisakyti (deprecated). Šiuolaikinės naršyklės jau nebesujungia per TLS 1.0 ir TLS 1.1.

Patikrinkite, kuriuos protokolus palaiko jūsų serveris:

# TLS 1.0 (neturėtų veikti)
openssl s_client -connect jusudomenas.lt:443 -tls1 2>&1 | \
  grep -i "protocol\|error\|alert"

# TLS 1.1 (neturėtų veikti)
openssl s_client -connect jusudomenas.lt:443 -tls1_1 2>&1 | \
  grep -i "protocol\|error\|alert"

# TLS 1.2 (turi veikti)
openssl s_client -connect jusudomenas.lt:443 -tls1_2 2>&1 | \
  grep "Protocol"

# TLS 1.3 (turi veikti)
openssl s_client -connect jusudomenas.lt:443 -tls1_3 2>&1 | \
  grep "Protocol"

Tikėtini rezultatai:

  • TLS 1.0: klaida arba atsisakymas (gerai)
  • TLS 1.1: klaida arba atsisakymas (gerai)
  • TLS 1.2: Protocol : TLSv1.2 (gerai)
  • TLS 1.3: Protocol : TLSv1.3 (gerai)

5. Šifravimo algoritmai (Cipher Suites)

Ne visi šifravimo algoritmai yra vienodai saugūs. Kai kurie senų algoritmų (RC4, DES, 3DES, MD5) turi žinomų pažeidžiamumų.

# Patikrinkite, koks šifravimo algoritmas naudojamas
echo | openssl s_client -connect jusudomenas.lt:443 \
  -servername jusudomenas.lt 2>/dev/null | \
  grep "Cipher"

# Tikėtinas rezultatas (geras):
# New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384

Stiprūs šifravimo algoritmai turi turėti šiuos elementus:

  • ECDHE (Elliptic Curve Diffie-Hellman Ephemeral) raktų apsikeitimui
  • AES-128-GCM arba AES-256-GCM šifravimui
  • SHA256 arba SHA384 maišai (hash)
  • CHACHA20-POLY1305 kaip alternatyva (ypač gerai veikia mobiliuose įrenginiuose)

6. Sertifikato atšaukimo būsena (Revocation Status)

Sertifikatas gali būti atšauktas (revoked) prieš galiojimo pabaigą, jei privatus raktas buvo kompromituotas arba sertifikatas buvo išduotas klaidingai. Atšauktas sertifikatas yra lygiai toks pat pavojingas kaip pasibaigęs.

OCSP patikrinimas:

# Gaukite OCSP responderio URL
OCSP_URL=$(openssl x509 -in sertifikatas.crt -noout -ocsp_uri)

# Patikrinkite sertifikato būseną
openssl ocsp -issuer tarpinis.crt -cert sertifikatas.crt \
  -url $OCSP_URL -resp_text

Tikėtinas rezultatas:

  • Cert Status: good (sertifikatas galioja, neatšauktas)
  • Cert Status: revoked (sertifikatas atšauktas, reikia kito)

7. HSTS konfigūracija

HSTS (HTTP Strict Transport Security) antraštė nurodo naršyklėms visada naudoti HTTPS. Jos buvimas ir teisingas konfigūravimas yra saugumo ir SEO rodiklis.

# Patikrinkite HSTS antraštę
curl -sI https://jusudomenas.lt | grep -i "strict-transport-security"

# Tikėtinas rezultatas:
# Strict-Transport-Security: max-age=63072000; includeSubDomains; preload

Ką tikrinti HSTS antraštėje:

  • max-age turėtų būti bent 31536000 (1 metai)
  • includeSubDomains turėtų būti, jei visi subdomenai palaiko HTTPS
  • preload turėtų būti, jei norite įtraukti domeną į naršyklių preload sąrašą

8. Mixed content klaidos

HTTPS puslapis, kraunantis resursus per HTTP, turi mišraus turinio (mixed content) problemą. Tai pažeidžia SSL saugumo grandinę.

# Raskite mixed content problemas konkrečiame puslapyje
curl -s https://jusudomenas.lt | \
  grep -oP '(src|href|action)="http://[^"]*"' | \
  head -20

Šis greitas patikrinimas parodys, ar HTML kode yra nuorodų į HTTP resursus. Pilnam tikrinimui naudokite specializuotus įrankius (aptariamus toliau).

12 geriausių SSL tikrinimo ir stebėjimo įrankių

Nemokami internetiniai tikrinimo įrankiai

1. SSL Labs Server Test (ssllabs.com/ssltest)

SSL Labs yra industrijos standartas SSL konfigūracijos vertinimui. Šį įrankį sukūrė Qualys, ir jis yra plačiausiai naudojamas SSL tikrinimo įrankis pasaulyje.

Ką tikrina:

  • Sertifikato galiojimą, grandinę ir domeno atitikimą
  • Palaikomus TLS protokolus ir šifravimo algoritmus
  • Žinomus pažeidžiamumus (Heartbleed, POODLE, BEAST, ROBOT, Zombie POODLE, GOLDENDOODLE)
  • HSTS konfigūraciją
  • OCSP Stapling veikimą
  • DNS CAA įrašus
  • HTTP/2 palaikymą
  • Sertifikato skaidrumą (Certificate Transparency)

Vertinimo skalė: A+, A, A-, B, C, D, E, F, T (nepasitikimas)

Kaip pasiekti A+ įvertinimą:

  • Palaikyti tik TLS 1.2 ir TLS 1.3
  • Naudoti stiprius šifravimo algoritmus (ECDHE + AES-GCM arba CHACHA20)
  • Turėti pilną sertifikatų grandinę
  • Aktyvuoti HSTS su ilgu max-age
  • Aktyvuoti OCSP Stapling
  • Neturėti jokių žinomų pažeidžiamumų

Privalumai:

  • Išsamiausias nemokamas SSL tikrinimo įrankis
  • Detalios paaiškinimo pastabos prie kiekvieno rodiklio
  • Istorinių rezultatų saugojimas
  • API prieiga automatizuotam tikrinimui

Trūkumai:

  • Testas trunka 1-3 minutes (ne greičiausias variantas greitam patikrinimui)
  • Nėra automatinio stebėjimo (tik vienkartinis testas)
  • Rezultatai yra vieši (kiti gali matyti jūsų svetainės vertinimą)

Patarimas: Jei nenorite viešo rezultato, pridėkite parametrą &hideResults=on prie URL arba API užklausos.

2. SSL Checker (sslshopper.com/ssl-checker.html)

Greitas ir paprastas įrankis, orientuotas į sertifikatų grandinės tikrinimą.

Ką tikrina:

  • Sertifikato galiojimo datas
  • Sertifikatų grandinės pilnumą
  • Domeno vardo atitikimą
  • Serverio IP adresą

Privalumai:

  • Rezultatai per kelias sekundes
  • Aiškus vizualinis grandinės atvaizdavimas
  • Greitai identifikuoja trūkstamus tarpinius sertifikatus

Trūkumai:

  • Netikrina TLS protokolų ir šifravimo algoritmų
  • Nepateikia saugumo įvertinimo
  • Nėra API

Kada naudoti: Kai reikia greitai patikrinti, ar sertifikatas įdiegtas teisingai ir ar grandinė pilna. Idealus pirmas žingsnis po naujo sertifikato diegimo.

3. SSL Test (immuniweb.com/ssl)

ImmuniWeb siūlo nemokamą SSL tikrinimo įrankį, kuris vertina konfigūraciją pagal PCI DSS, HIPAA ir NIST standartus.

Ką tikrina:

  • Visus standartinius SSL parametrus (kaip SSL Labs)
  • PCI DSS 4.0 atitiktį (mokėjimo kortelių pramonės standartas)
  • HIPAA atitiktį (sveikatos duomenų apsaugos standartas)
  • NIST rekomendacijų laikymąsi
  • HTTP saugumo antraštes (Content-Security-Policy, X-Frame-Options ir kt.)

Privalumai:

  • Atitikties vertinimas pagal konkrečius standartus
  • HTTP saugumo antraščių tikrinimas (ko SSL Labs nedaro)
  • Aiškios rekomendacijos, ką taisyti

Trūkumai:

  • Lėtesnis nei SSL Labs
  • Mažesnė bendruomenė ir mažiau dokumentacijos

Kada naudoti: Kai jūsų svetainei taikomi reguliavimo reikalavimai (PCI DSS el. parduotuvėms, HIPAA sveikatos svetainėms).

4. Why No Padlock (whynopadlock.com)

Specializuotas įrankis mixed content klaidų paieškai.

Ką tikrina:

  • Visus puslapio resursus (paveikslėlius, CSS, JavaScript, šriftus, iframe)
  • Ar kurie nors resursai kraunami per HTTP
  • Tikslų probleminių resursų URL

Privalumai:

  • Specializuotas mixed content diagnostikai
  • Rodo tikslų kiekvieno probleminio resurso URL
  • Nemokamas ir greitas

Trūkumai:

  • Tikrina tik vieną puslapį vienu metu
  • Netikrina TLS konfigūracijos

Kada naudoti: Po HTTP → HTTPS perkėlimo arba kai naršyklė nerodo spynelės piktogramos konkrečiame puslapyje.

5. CryptCheck (cryptcheck.fr)

Prancūzijoje sukurtas atviro kodo SSL tikrinimo įrankis, orientuotas į šifravimo stiprumo vertinimą.

Ką tikrina:

  • TLS protokolų versijas
  • Šifravimo algoritmų stiprumą
  • Forward Secrecy palaikymą
  • Raktų ilgį

Privalumai:

  • Detalus šifravimo algoritmų vertinimas
  • Atviro kodo (galite paleisti savo serveryje)
  • Vertina pagal šiuolaikinius saugumo standartus

Trūkumai:

  • Mažiau žinomas nei SSL Labs
  • Dokumentacija daugiausia prancūzų kalba

6. Hardenize (hardenize.com)

Hardenize tikrina ne tik SSL, bet ir bendrą svetainės saugumo konfigūraciją.

Ką tikrina:

  • SSL/TLS konfigūraciją
  • HTTPS peradresavimą
  • HSTS konfigūraciją (su preload sąrašo patikrinimu)
  • DNS saugumą (DNSSEC, CAA)
  • El. pašto saugumą (SPF, DKIM, DMARC, MTA-STS, DANE)
  • HTTP saugumo antraštes

Privalumai:

  • Visapusis saugumo auditas viename įrankyje
  • El. pašto saugumo tikrinimas (ko kiti SSL įrankiai nedaro)
  • Aiškus vizualinis rezultatų pateikimas

Trūkumai:

  • Stebėjimo funkcijos mokamos
  • Nemokama versija ribota iki vienkartinių patikrinimų

Komandinės eilutės įrankiai

7. OpenSSL

OpenSSL yra standartas SSL operacijoms komandinėje eilutėje. Jis yra įdiegtas beveik kiekvienoje Linux ir macOS sistemoje.

Pagrindinės tikrinimo komandos:

# Pilna sertifikato informacija
echo | openssl s_client -servername jusudomenas.lt \
  -connect jusudomenas.lt:443 2>/dev/null | \
  openssl x509 -noout -text

# Tik sertifikato subjektas ir išdavėjas
echo | openssl s_client -servername jusudomenas.lt \
  -connect jusudomenas.lt:443 2>/dev/null | \
  openssl x509 -noout -subject -issuer

# Sertifikato SHA-256 piršto atspaudas (fingerprint)
echo | openssl s_client -servername jusudomenas.lt \
  -connect jusudomenas.lt:443 2>/dev/null | \
  openssl x509 -noout -fingerprint -sha256

# Patikrinkite, ar privatus raktas atitinka sertifikatą
openssl x509 -noout -modulus -in sertifikatas.crt | openssl md5
openssl rsa -noout -modulus -in privatusraktas.key | openssl md5
# Abu MD5 hash'ai turi sutapti

Išplėstinis tikrinimas su keliais protokolais:

#!/bin/bash
# ssl-check.sh - greitas SSL patikrinimo skriptas
DOMAIN=$1

echo "=== SSL tikrinimas: $DOMAIN ==="

echo -e "\n--- Sertifikato datos ---"
echo | openssl s_client -servername $DOMAIN \
  -connect $DOMAIN:443 2>/dev/null | \
  openssl x509 -noout -dates

echo -e "\n--- Sertifikato subjektas ---"
echo | openssl s_client -servername $DOMAIN \
  -connect $DOMAIN:443 2>/dev/null | \
  openssl x509 -noout -subject

echo -e "\n--- SAN (alternatyvūs vardai) ---"
echo | openssl s_client -servername $DOMAIN \
  -connect $DOMAIN:443 2>/dev/null | \
  openssl x509 -noout -text | grep -A1 "Subject Alternative Name"

echo -e "\n--- TLS versija ir šifravimas ---"
echo | openssl s_client -servername $DOMAIN \
  -connect $DOMAIN:443 2>/dev/null | \
  grep -E "Protocol|Cipher"

echo -e "\n--- Sertifikatų grandinė ---"
openssl s_client -connect $DOMAIN:443 \
  -servername $DOMAIN -showcerts 2>/dev/null | \
  grep -E "^(Certificate chain| [0-9]+ s:|   i:)"

Naudojimas: bash ssl-check.sh jusudomenas.lt

8. testssl.sh

testssl.sh yra galingas atviro kodo Bash skriptas, kuris atlieka išsamų SSL/TLS tikrinimą iš komandinės eilutės. Jis yra laikomas komandinės eilutės atitikmeniu SSL Labs testui.

Diegimas:

git clone --depth 1 https://github.com/drwetter/testssl.sh.git
cd testssl.sh

Naudojimas:

# Pilnas testas
./testssl.sh jusudomenas.lt

# Tik sertifikato tikrinimas
./testssl.sh --server-defaults jusudomenas.lt

# Tik pažeidžiamumų tikrinimas
./testssl.sh --vulnerable jusudomenas.lt

# Tik protokolų tikrinimas
./testssl.sh --protocols jusudomenas.lt

# JSON formato rezultatai (automatizavimui)
./testssl.sh --jsonfile rezultatai.json jusudomenas.lt

# CSV formato rezultatai
./testssl.sh --csvfile rezultatai.csv jusudomenas.lt

Privalumai:

  • Veikia komandinėje eilutėje (automatizavimas, CI/CD integracija)
  • Nereikalauja išorinių priklausomybių (tik OpenSSL ir Bash)
  • Tikrina daugiau nei 800 šifravimo algoritmų
  • JSON ir CSV rezultatų eksportas
  • Galima naudoti už ugniasienės (vidiniai serveriai)

Trūkumai:

  • Nėra grafinės sąsajos
  • Pilnas testas trunka 5-10 minučių

9. Nmap su ssl-enum-ciphers skriptu

Nmap yra tinklo skenavimo įrankis, turintis SSL tikrinimo galimybes per NSE (Nmap Scripting Engine) skriptus.

# Patikrinkite palaikomus TLS protokolus ir šifravimo algoritmus
nmap --script ssl-enum-ciphers -p 443 jusudomenas.lt

# Patikrinkite sertifikato informaciją
nmap --script ssl-cert -p 443 jusudomenas.lt

# Patikrinkite žinomus pažeidžiamumus
nmap --script ssl-heartbleed,ssl-poodle,ssl-ccs-injection -p 443 jusudomenas.lt

Kada naudoti: Kai reikia tikrinti kelis serverius vienu metu arba integruoti SSL tikrinimą į platesnį saugumo auditą.

Automatinio stebėjimo platformos

10. UptimeRobot

UptimeRobot yra viena populiariausių svetainių stebėjimo platformų, turinti integruotą SSL sertifikato stebėjimą.

SSL stebėjimo funkcijos:

  • Sertifikato galiojimo datos stebėjimas
  • Pranešimai 1, 7, 14 ar 30 dienų prieš galiojimo pabaigą
  • HTTPS atsako kodo stebėjimas
  • Pranešimai el. paštu, SMS, Slack, Telegram, webhook

Kainodara:

  • Nemokamas planas: 50 monitorių, tikrinimas kas 5 min., SSL galiojimo stebėjimas
  • Pro planas (nuo 7 USD/mėn.): 50 monitorių, tikrinimas kas 1 min., SMS pranešimai
  • Enterprise: neriboti monitoriai, 30 s intervalas

Kaip nustatyti SSL stebėjimą UptimeRobot:

  1. Prisijunkite prie UptimeRobot.
  2. Spauskite Add New Monitor.
  3. Monitor Type: HTTPS.
  4. Friendly Name: jūsų svetainės pavadinimas.
  5. URL: https://jusudomenas.lt
  6. Monitoring Interval: pasirinkite intervalą.
  7. Skiltyje SSL Expiry Reminders aktyvuokite priminimus.
  8. Pasirinkite, prieš kiek dienų gauti pranešimą (rekomenduojama: 30, 14 ir 7 dienas).
  9. Nustatykite pranešimo kanalus (el. paštas, Slack, Telegram).
  10. Spauskite Create Monitor.

11. Datadog

Datadog yra pilna infrastruktūros stebėjimo platforma, turinti SSL tikrinimo galimybes.

SSL stebėjimo funkcijos:

  • Sertifikato galiojimo stebėjimas
  • TLS versijų stebėjimas
  • Sertifikatų grandinės tikrinimas
  • Integracija su Datadog metrikomis ir dashboards
  • Anomalijų aptikimas (pvz., staigus sertifikato pakeitimas)

Kainodara: Nuo 15 USD/mėn. (Synthetic Monitoring modulis)

Kada naudoti: Kai jau naudojate Datadog infrastruktūros stebėjimui ir norite SSL stebėjimą integruoti į bendrą stebėjimo ekosistemą.

12. Certspotter (sslmate.com/certspotter)

Certspotter yra Certificate Transparency stebėjimo paslauga. Ji stebi, ar kas nors neišdavė SSL sertifikato jūsų domeno vardu be jūsų žinios.

Ką stebi:

  • Naujų sertifikatų išdavimą jūsų domenui
  • Sertifikatų išdavimą subdomenams
  • Neteisėtai ar klaidingai išduotus sertifikatus

Kodėl tai svarbu:

Jei piktavalis gauna SSL sertifikatą jūsų domeno vardu (pvz., per DNS pažeidžiamumą arba sertifikavimo institucijos klaidą), jis gali sukurti jūsų svetainės kopiją, kuri atrodys visiškai teisėta, su galiojančiu SSL sertifikatu. Certspotter praneš, kai bet kas gaus sertifikatą jūsų domenui.

Kainodara:

  • Nemokamas planas: 1 domenas, pranešimai el. paštu
  • Mokamas planas (nuo 16 USD/mėn.): keli domenai, API, webhook integracija

Alternatyva: crt.sh

crt.sh (crt.sh) yra nemokama Certificate Transparency paieškos sistema. Galite rankiniu būdu patikrinti, kokie sertifikatai buvo išduoti jūsų domenui:

https://crt.sh/?q=jusudomenas.lt

Tai parodys visus sertifikatus, kurie buvo išduoti jusudomenas.lt ir jo subdomenams. Jei matote sertifikatą, kurio nepažįstate, tai gali būti saugumo incidentas.

Automatizuotas SSL stebėjimas: konfigūravimo vadovas

Bash skriptas su el. pašto pranešimais

Šis skriptas kasdien tikrina SSL sertifikato galiojimą ir siunčia pranešimą, kai sertifikatas artėja prie galiojimo pabaigos.

#!/bin/bash
# /usr/local/bin/ssl-monitor.sh
# SSL sertifikato galiojimo stebėjimo skriptas

# Konfigūracija
DOMAINS=("jusudomenas.lt" "www.jusudomenas.lt" "shop.jusudomenas.lt")
ALERT_DAYS=30
EMAIL="admin@jusudomenas.lt"
LOG_FILE="/var/log/ssl-monitor.log"

# Funkcija sertifikato patikrinimui
check_ssl() {
    local domain=$1
    local expiry_date

    expiry_date=$(echo | openssl s_client -servername "$domain" \
        -connect "$domain:443" 2>/dev/null | \
        openssl x509 -noout -enddate 2>/dev/null | \
        cut -d= -f2)

    if [ -z "$expiry_date" ]; then
        echo "$(date): KLAIDA - Nepavyko prisijungti prie $domain" >> "$LOG_FILE"
        echo "SSL KLAIDA: Nepavyko patikrinti $domain sertifikato" | \
            mail -s "SSL KLAIDA: $domain" "$EMAIL"
        return 1
    fi

    local expiry_epoch=$(date -d "$expiry_date" +%s)
    local now_epoch=$(date +%s)
    local days_left=$(( (expiry_epoch - now_epoch) / 86400 ))

    echo "$(date): $domain - liko $days_left dienų (baigiasi: $expiry_date)" >> "$LOG_FILE"

    if [ "$days_left" -le "$ALERT_DAYS" ]; then
        echo "SSL sertifikatas $domain baigiasi po $days_left dienų ($expiry_date).
Prašome atnaujinti sertifikatą kuo greičiau." | \
            mail -s "SSL ISPEJIMAS: $domain baigiasi po $days_left d." "$EMAIL"
    fi
}

# Tikrinkite kiekvieną domeną
for domain in "${DOMAINS[@]}"; do
    check_ssl "$domain"
done

Nustatykite cron užduotį kasdieniniam tikrinimui:

# Redaguokite cron
sudo crontab -e

# Pridėkite eilutę (tikrinti kasdien 9:00)
0 9 * * * /usr/local/bin/ssl-monitor.sh

# Nustatykite vykdymo teises
sudo chmod +x /usr/local/bin/ssl-monitor.sh

Python skriptas su Slack pranešimais

Jei jūsų komanda naudoja Slack, šis Python skriptas siunčia SSL pranešimus tiesiai į Slack kanalą.

#!/usr/bin/env python3
# ssl_monitor.py - SSL stebėjimas su Slack pranešimais

import ssl
import socket
import datetime
import json
import urllib.request

# Konfigūracija
DOMAINS = [
    "jusudomenas.lt",
    "www.jusudomenas.lt",
    "shop.jusudomenas.lt",
    "api.jusudomenas.lt",
]
ALERT_DAYS = 30
SLACK_WEBHOOK_URL = "https://hooks.slack.com/services/JUSU/WEBHOOK/URL"


def check_ssl_expiry(domain, port=443):
    """Patikrina SSL sertifikato galiojimo datą."""
    context = ssl.create_default_context()
    try:
        with socket.create_connection((domain, port), timeout=10) as sock:
            with context.wrap_socket(sock, server_hostname=domain) as ssock:
                cert = ssock.getpeercert()
                expiry_str = cert["notAfter"]
                expiry_date = datetime.datetime.strptime(
                    expiry_str, "%b %d %H:%M:%S %Y %Z"
                )
                days_left = (expiry_date - datetime.datetime.utcnow()).days
                return {
                    "domain": domain,
                    "expiry_date": expiry_date.strftime("%Y-%m-%d"),
                    "days_left": days_left,
                    "issuer": dict(x[0] for x in cert["issuer"]),
                    "status": "ok" if days_left > ALERT_DAYS else "warning",
                }
    except Exception as e:
        return {
            "domain": domain,
            "error": str(e),
            "status": "error",
        }


def send_slack_message(message):
    """Siunčia pranešimą į Slack."""
    payload = json.dumps({"text": message}).encode("utf-8")
    req = urllib.request.Request(
        SLACK_WEBHOOK_URL,
        data=payload,
        headers={"Content-Type": "application/json"},
    )
    urllib.request.urlopen(req)


def main():
    alerts = []

    for domain in DOMAINS:
        result = check_ssl_expiry(domain)

        if result["status"] == "error":
            alerts.append(
                f":red_circle: *{domain}*: Nepavyko patikrinti - {result['error']}"
            )
        elif result["status"] == "warning":
            alerts.append(
                f":warning: *{domain}*: Sertifikatas baigiasi po "
                f"{result['days_left']} d. ({result['expiry_date']})"
            )

    if alerts:
        message = ":lock: *SSL Sertifikatų Įspėjimas*\n\n" + "\n".join(alerts)
        send_slack_message(message)
        print(f"Išsiųstas Slack pranešimas: {len(alerts)} įspėjimų")
    else:
        print("Visi sertifikatai galioja. Jokių pranešimų.")


if __name__ == "__main__":
    main()

Prometheus ir Grafana stebėjimas

Jei naudojate Prometheus ir Grafana infrastruktūros stebėjimui, galite integruoti SSL sertifikato stebėjimą per blackbox_exporter.

Blackbox Exporter konfigūracija:

# /etc/blackbox_exporter/config.yml
modules:
  https_2xx:
    prober: http
    timeout: 10s
    http:
      method: GET
      preferred_ip_protocol: "ip4"
      tls_config:
        insecure_skip_verify: false

Prometheus konfigūracija:

# /etc/prometheus/prometheus.yml
scrape_configs:
  - job_name: 'ssl_expiry'
    metrics_path: /probe
    params:
      module: [https_2xx]
    static_configs:
      - targets:
        - https://jusudomenas.lt
        - https://www.jusudomenas.lt
        - https://shop.jusudomenas.lt
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: localhost:9115  # Blackbox exporter adresas

Prometheus Alert taisyklė:

# /etc/prometheus/rules/ssl_alerts.yml
groups:
  - name: ssl_alerts
    rules:
      - alert: SSLCertificateExpiringSoon
        expr: probe_ssl_earliest_cert_expiry - time() < 30 * 24 * 3600
        for: 1h
        labels:
          severity: warning
        annotations:
          summary: "SSL sertifikatas baigiasi greitai ({{ $labels.instance }})"
          description: "SSL sertifikatas {{ $labels.instance }} baigiasi po {{ $value | humanizeDuration }}."

      - alert: SSLCertificateExpired
        expr: probe_ssl_earliest_cert_expiry - time() <= 0
        for: 5m
        labels:
          severity: critical
        annotations:
          summary: "SSL sertifikatas pasibaigęs ({{ $labels.instance }})"
          description: "SSL sertifikatas {{ $labels.instance }} yra pasibaigęs!"

Grafana Dashboard:

Sukurkite Grafana dashboard su šiais paneliais:

  • SSL sertifikato galiojimo dienų skaičiuoklė (kiekvienam domenui)
  • TLS versijos grafikas
  • SSL handshake trukmės grafikas
  • Alertų istorija

Nagios / Icinga stebėjimas

Jei naudojate Nagios arba Icinga, check_ssl_cert įskiepis leidžia stebėti SSL sertifikatus.

# Įdiekite check_ssl_cert įskiepį
git clone https://github.com/matteocorti/check_ssl_cert.git
sudo cp check_ssl_cert/check_ssl_cert /usr/lib/nagios/plugins/

# Naudojimas
/usr/lib/nagios/plugins/check_ssl_cert -H jusudomenas.lt \
  --warning 30 --critical 7

# Rezultatas:
# SSL_CERT OK - jusudomenas.lt:443, x509 certificate 'jusudomenas.lt'
# valid until Jun 13 2026 (65 days)

Nagios konfigūracija:

define command {
    command_name    check_ssl_certificate
    command_line    /usr/lib/nagios/plugins/check_ssl_cert -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$
}

define service {
    use                     generic-service
    host_name               webserver
    service_description     SSL Certificate
    check_command           check_ssl_certificate!30!7
    check_interval          1440  ; kartą per dieną (minutėmis)
}

Certificate Transparency stebėjimas

Certificate Transparency (CT) yra atvira sistema, kurioje visos sertifikavimo institucijos privalo viešai registruoti kiekvieną išduotą SSL sertifikatą. Tai leidžia domeno savininkams stebėti, ar kas nors neišdavė sertifikato jų vardu.

Kodėl CT stebėjimas yra svarbus

Scenarijai, kai CT stebėjimas gali apsaugoti jūsų verslą:

  1. Neteisėtas sertifikato išdavimas: Piktavalis, gavęs prieigą prie jūsų DNS ar el. pašto, gali užsakyti SSL sertifikatą jūsų domeno vardu ir sukurti phishing svetainę.
  2. Sertifikavimo institucijos klaida: CA gali klaidingai išduoti sertifikatą neteisingam asmeniui.
  3. Subdomenų aptikimas: CT žurnalai parodo visus subdomenus, kuriems buvo išduoti sertifikatai. Tai gali atskleisti pamirštas ar nežinomas jūsų infrastruktūros dalis.

CT stebėjimo nustatymas

crt.sh rankinis patikrinimas:

Atidarykite naršyklėje:

https://crt.sh/?q=%.jusudomenas.lt

Tai parodys visus sertifikatus, išduotus jūsų domenui ir bet kuriam subdomenui. Simbolis % reiškia bet kokį subdomeną.

DNS CAA įrašai (prevencija):

CAA (Certification Authority Authorization) DNS įrašas nurodo, kurios sertifikavimo institucijos turi teisę išduoti sertifikatus jūsų domenui. Tai yra prevencinis mechanizmas, kuris papildo CT stebėjimą.

; Leisti tik Let's Encrypt ir DigiCert išduoti sertifikatus
jusudomenas.lt.  IN  CAA  0 issue "letsencrypt.org"
jusudomenas.lt.  IN  CAA  0 issue "digicert.com"
jusudomenas.lt.  IN  CAA  0 iodef "mailto:admin@jusudomenas.lt"

; Blokuoti Wildcard sertifikatų išdavimą (jei nereikia)
jusudomenas.lt.  IN  CAA  0 issuewild ";"

Patikrinkite esamus CAA įrašus:

dig CAA jusudomenas.lt

# Arba su nslookup
nslookup -type=CAA jusudomenas.lt

SSL tikrinimo automatizavimas CI/CD pipeline

Integruoti SSL tikrinimą į CI/CD procesą yra gera praktika, ypač kai diegiama nauja serverio konfigūracija.

GitHub Actions pavyzdys

# .github/workflows/ssl-check.yml
name: SSL Certificate Check

on:
  schedule:
    - cron: '0 8 * * *'  # Kasdien 8:00 UTC
  workflow_dispatch:  # Rankinis paleidimas

jobs:
  check-ssl:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        domain:
          - jusudomenas.lt
          - www.jusudomenas.lt
          - shop.jusudomenas.lt

    steps:
      - name: Check SSL Certificate
        run: |
          EXPIRY=$(echo | openssl s_client -servername ${{ matrix.domain }} \
            -connect ${{ matrix.domain }}:443 2>/dev/null | \
            openssl x509 -noout -enddate | cut -d= -f2)

          EXPIRY_EPOCH=$(date -d "$EXPIRY" +%s)
          NOW_EPOCH=$(date +%s)
          DAYS_LEFT=$(( (EXPIRY_EPOCH - NOW_EPOCH) / 86400 ))

          echo "Domenas: ${{ matrix.domain }}"
          echo "Galioja iki: $EXPIRY"
          echo "Liko dienų: $DAYS_LEFT"

          if [ $DAYS_LEFT -le 14 ]; then
            echo "::error::SSL sertifikatas ${{ matrix.domain }} baigiasi po $DAYS_LEFT dienų!"
            exit 1
          elif [ $DAYS_LEFT -le 30 ]; then
            echo "::warning::SSL sertifikatas ${{ matrix.domain }} baigiasi po $DAYS_LEFT dienų"
          fi

GitLab CI/CD pavyzdys

# .gitlab-ci.yml
ssl-check:
  stage: test
  image: alpine:latest
  before_script:
    - apk add --no-cache openssl bash coreutils
  script:
    - |
      DOMAINS="jusudomenas.lt www.jusudomenas.lt shop.jusudomenas.lt"
      for DOMAIN in $DOMAINS; do
        EXPIRY=$(echo | openssl s_client -servername $DOMAIN \
          -connect $DOMAIN:443 2>/dev/null | \
          openssl x509 -noout -enddate | cut -d= -f2)
        DAYS_LEFT=$(( ($(date -d "$EXPIRY" +%s) - $(date +%s)) / 86400 ))
        echo "$DOMAIN: liko $DAYS_LEFT dienų"
        if [ $DAYS_LEFT -le 14 ]; then
          echo "KRITINIS: $DOMAIN sertifikatas baigiasi po $DAYS_LEFT dienų!"
          exit 1
        fi
      done
  rules:
    - if: $CI_PIPELINE_SOURCE == "schedule"
    - if: $CI_PIPELINE_SOURCE == "web"

Stebėjimo strategija pagal infrastruktūros dydį

Maža svetainė (1-3 domenai)

Rekomenduojama:

  • UptimeRobot nemokamas planas (HTTPS monitorius + SSL galiojimo pranešimai)
  • Bash skriptas su cron užduotimi kaip atsarginė sistema
  • Rankinis SSL Labs testas kartą per mėnesį

Sąnaudos: 0 USD/mėn.

Vidutinė infrastruktūra (5-20 domenų)

Rekomenduojama:

  • UptimeRobot Pro arba Datadog (centralinis stebėjimas)
  • Python skriptas su Slack pranešimais (kasdienė ataskaita)
  • Certspotter nemokamas planas (CT stebėjimas)
  • SSL Labs testas po kiekvieno konfigūracijos pakeitimo
  • DNS CAA įrašai prevencijai

Sąnaudos: 7-15 USD/mėn.

Didelė infrastruktūra (50+ domenų)

Rekomenduojama:

  • Prometheus + Grafana + Blackbox Exporter (centralizuotas stebėjimas su dashboards)
  • Automatizuoti alertai per PagerDuty arba OpsGenie
  • testssl.sh integruotas į CI/CD
  • Certspotter mokamas planas (CT stebėjimas visiems domenams)
  • CLM platforma (DigiCert CertCentral, Sectigo Certificate Manager) mokamų sertifikatų valdymui
  • DNS CAA įrašai su griežtomis taisyklėmis
  • Reguliarūs saugumo auditai

Sąnaudos: 50-500 USD/mėn. (priklausomai nuo infrastruktūros dydžio ir įrankių)

Dažniausiai aptinkamos problemos ir jų sprendimai

1. Sertifikatas pasibaigęs (expired)

Simptomai: Naršyklė rodo NET::ERR_CERT_DATE_INVALID. Svetainė nepasiekiama be rankinio „Proceed” spustelėjimo.

Diagnozavimas:

echo | openssl s_client -servername jusudomenas.lt \
  -connect jusudomenas.lt:443 2>/dev/null | \
  openssl x509 -noout -dates

Sprendimas:

  • Let’s Encrypt: sudo certbot renew --force-renewal
  • Mokamas sertifikatas: prisijunkite prie tiekėjo valdymo pulto, atnaujinkite sertifikatą, atsisiųskite naujus failus ir įdiekite serveryje.
  • Patikrinkite automatinio atnaujinimo konfigūraciją, kad problema nepasikartotų.

Prevencija: Nustatykite stebėjimą su pranešimu 30 dienų prieš galiojimo pabaigą.

2. Trūkstama sertifikatų grandinė (incomplete chain)

Simptomai: Kai kurios naršyklės rodo spynelę (nes automatiškai atsisiunčia trūkstamus sertifikatus), tačiau mobiliosios aplikacijos, API klientai ir senesni įrenginiai rodo klaidą.

Diagnozavimas:

# SSL Labs parodys "Chain issues: Incomplete"
# Arba komandinėje eilutėje:
openssl s_client -connect jusudomenas.lt:443 \
  -servername jusudomenas.lt 2>&1 | \
  grep "verify"

# Jei matote "verify error:num=21:unable to verify the first certificate"
# tai reiškia, kad trūksta tarpinių sertifikatų

Sprendimas:

  1. Atsisiųskite tarpinį sertifikatą (CA Bundle) iš savo sertifikato tiekėjo svetainės.
  2. Sujunkite su domeno sertifikatu:
# Nginx: sukurkite fullchain failą
cat domeno_sertifikatas.crt tarpinis_sertifikatas.crt > fullchain.pem

# Apache: pridėkite SSLCertificateChainFile direktyvą
# SSLCertificateChainFile /etc/ssl/certs/ca-bundle.crt
  1. Perkraukite žiniatinklio serverį.
  2. Patikrinkite su SSL Checker, ar grandinė pilna.

3. Domeno vardo neatitikimas (hostname mismatch)

Simptomai: Naršyklė rodo ERR_CERT_COMMON_NAME_INVALID. Sertifikatas galioja, bet ne tam domenui.

Diagnozavimas:

echo | openssl s_client -servername jusudomenas.lt \
  -connect jusudomenas.lt:443 2>/dev/null | \
  openssl x509 -noout -text | \
  grep -E "Subject:|DNS:"

Sprendimas:

  • Jei sertifikatas neapima www versijos, gaukite naują sertifikatą su abiem: jusudomenas.lt ir www.jusudomenas.lt.
  • Jei turite kelis subdomenus, apsvarstykite Wildcard sertifikatą (*.jusudomenas.lt).
  • Let’s Encrypt: sudo certbot --nginx -d jusudomenas.lt -d www.jusudomenas.lt

4. Seni TLS protokolai vis dar palaikomi

Simptomai: SSL Labs vertinimas B arba žemiau. Pranešimas apie TLS 1.0 arba TLS 1.1 palaikymą.

Diagnozavimas:

# Tikrinti, ar TLS 1.0 vis dar veikia
openssl s_client -connect jusudomenas.lt:443 -tls1 2>&1 | \
  grep "Protocol"

Sprendimas:

Nginx:

ssl_protocols TLSv1.2 TLSv1.3;

Apache:

SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1

5. Silpni šifravimo algoritmai

Simptomai: SSL Labs rodo įspėjimus apie silpnus šifravimo algoritmus (RC4, DES, 3DES, eksportiniai šifrai).

Sprendimas:

Nginx:

ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305;
ssl_prefer_server_ciphers off;

Apache:

SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384
SSLHonorCipherOrder off

6. OCSP Stapling neveikia

Simptomai: SSL Labs rodo „OCSP stapling: No”. Pirmo apsilankymo greitis yra lėtesnis.

Diagnozavimas:

echo | openssl s_client -servername jusudomenas.lt \
  -connect jusudomenas.lt:443 -status 2>/dev/null | \
  grep "OCSP Response Status"

# Jei matote "OCSP Response Status: successful" - viskas gerai
# Jei nematote OCSP atsako arba matote klaidą - reikia konfigūruoti

Sprendimas:

Nginx:

ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/ssl/certs/fullchain.pem;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;

Po konfigūracijos pakeitimo perkraukite Nginx ir palaukite kelias minutes, kol serveris gaus pirmą OCSP atsakymą.

7. HSTS antraštė nerastas

Simptomai: SSL Labs vertinimas A (ne A+). HSTS eilutė „No”.

Diagnozavimas:

curl -sI https://jusudomenas.lt | grep -i strict

Sprendimas: Pridėkite HSTS antraštę (laipsniškai, pradedant nuo trumpo max-age):

# Nginx (pradėkite nuo 1 savaitės)
add_header Strict-Transport-Security "max-age=604800" always;

# Po savaitės padidinkite iki 2 metų
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;

8. Sertifikatas atšauktas (revoked)

Simptomai: Naršyklė rodo ERR_CERT_REVOKED. Sertifikatas dar nepasibaigęs, bet buvo atšauktas.

Priežastys:

  • Privatus raktas buvo kompromituotas
  • Sertifikavimo institucija atšaukė sertifikatą dėl politikos pažeidimo
  • Domeno nuosavybė pasikeitė

Sprendimas:

  • Sugeneruokite naują CSR su nauju privačiu raktu.
  • Kreipkitės į sertifikato tiekėją dėl naujo sertifikato (dauguma tiekėjų leidžia pergeneruoti nemokamai).
  • Let’s Encrypt: tiesiog gaukite naują sertifikatą per Certbot.

Reguliarus SSL saugumo auditas

Kartą per ketvirtį atlikite pilną SSL saugumo auditą. Štai kontrolinis sąrašas.

Sertifikatų auditas

  • [ ] Visi domenai ir subdomenai turi galiojančius SSL sertifikatus
  • [ ] Sertifikatų grandinės yra pilnos visuose serveriuose
  • [ ] Privatūs raktai saugomi saugiai (tinkamos failų teisės, šifruota saugykla)
  • [ ] Sertifikatų galiojimo datos stebimos su pranešimais
  • [ ] Automatinis atnaujinimas veikia (Let’s Encrypt Certbot)
  • [ ] DNS CAA įrašai nustatyti ir teisingi

Protokolų ir šifravimo auditas

  • [ ] Tik TLS 1.2 ir TLS 1.3 palaikomi
  • [ ] TLS 1.0 ir TLS 1.1 išjungti
  • [ ] SSLv3 ir SSLv2 išjungti
  • [ ] Naudojami tik stiprūs šifravimo algoritmai (ECDHE, AES-GCM, CHACHA20)
  • [ ] Silpni šifravimo algoritmai (RC4, DES, 3DES, eksportiniai) pašalinti
  • [ ] Forward Secrecy aktyvuotas

Konfigūracijos auditas

  • [ ] HSTS antraštė aktyvuota su tinkamu max-age
  • [ ] OCSP Stapling aktyvuotas
  • [ ] SSL sesijos talpykla sukonfigūruota
  • [ ] HTTP saugumo antraštės pridėtos (X-Content-Type-Options, X-Frame-Options, Referrer-Policy)
  • [ ] SSL Labs vertinimas yra A arba A+
  • [ ] Nėra žinomų pažeidžiamumų (Heartbleed, POODLE, BEAST, ROBOT)

Stebėjimo auditas

  • [ ] Automatinis SSL stebėjimas veikia
  • [ ] Pranešimų kanalai (el. paštas, Slack, SMS) veikia
  • [ ] Pranešimai siunčiami tinkamu laiku (30, 14, 7 dienos prieš)
  • [ ] Certificate Transparency stebėjimas aktyvuotas
  • [ ] Stebėjimo skriptai / paslaugos yra atnaujinti

Atitikties auditas (jei taikoma)

  • [ ] PCI DSS: TLS 1.2+ privalomas, nėra žinomų pažeidžiamumų
  • [ ] HIPAA: šifravimas atitinka standarto reikalavimus
  • [ ] BDAR/GDPR: tinkamos techninės priemonės duomenų apsaugai
  • [ ] Sertifikato tipas atitinka organizacijos reikalavimus (DV/OV/EV)

Dažnai užduodami klausimai

Kaip dažnai turėčiau tikrinti SSL sertifikatą?
Rankinį patikrinimą rekomenduojama atlikti bent kartą per mėnesį ir po kiekvieno serverio konfigūracijos pakeitimo. Automatinį stebėjimą rekomenduojama nustatyti su kasdieniu (minimaliai) arba kas valandiniu (rekomenduojama) tikrinimu. Kritinėms svetainėms (el. parduotuvės, finansinės platformos) tikrinimo intervalas turėtų būti 1-5 minutės.

Ar SSL Labs testas yra tikslus?
SSL Labs yra industrijos standartas ir yra labai tikslus. Jo vertinimas atitinka šiuolaikinius saugumo standartus. Tačiau verta atminti, kad SSL Labs vertina tik SSL/TLS konfigūraciją, ne bendrą svetainės saugumą. A+ SSL Labs įvertinimas nereiškia, kad jūsų svetainė yra apsaugota nuo visų grėsmių.

Ar nemokamas stebėjimo įrankis pakankamas?
Mažoms ir vidutinėms svetainėms nemokamas UptimeRobot planas su SSL galiojimo pranešimais yra pilnai pakankamas. Didelėms infrastruktūroms (daugiau nei 20 domenų) rekomenduojama naudoti specializuotas platformas (Prometheus + Grafana, Datadog) arba mokamus planus su platesne funkcionalumo apimtimi.

Ką daryti, jei SSL Labs rodo B vertinimą?
B vertinimas paprastai reiškia, kad palaikote senesnius TLS protokolus (TLS 1.0 ar 1.1) arba naudojate silpnesnius šifravimo algoritmus. Sprendimas: atnaujinkite serverio konfigūraciją, palikdami tik TLS 1.2 ir TLS 1.3, naudokite stiprius šifravimo algoritmus ir aktyvuokite HSTS. Po pakeitimų pakartokite testą.

Ar galiu tikrinti SSL sertifikatą vidiniame serveryje (intranet)?
Internetiniai įrankiai (SSL Labs, SSL Checker) negali pasiekti vidinių serverių. Šiems serveriams naudokite komandinės eilutės įrankius (OpenSSL, testssl.sh, Nmap), kurie veikia jūsų tinklo viduje. Prometheus + Blackbox Exporter yra geras pasirinkimas nuolatiniam vidinių serverių SSL stebėjimui.

Kaip patikrinti, ar mano sertifikatas nėra atšauktas?
Naudokite OCSP patikrinimą per OpenSSL arba patikrinkite CRL (Certificate Revocation List). Paprasčiausias būdas: atidarykite svetainę naršyklėje ir patikrinkite sertifikato detales (paspaudę ant spynelės). Jei sertifikatas atšauktas, naršyklė parodys aiškų įspėjimą. Certificate Transparency žurnalai (crt.sh) taip pat gali padėti nustatyti, ar sertifikatas buvo atšauktas.

Ką reiškia „Certificate Transparency” ir kodėl tai svarbu?
Certificate Transparency (CT) yra sistema, kurioje visos sertifikavimo institucijos privalo viešai registruoti kiekvieną išduotą sertifikatą. Tai leidžia domeno savininkams stebėti, ar kas nors neišdavė sertifikato jų vardu be jų žinios. CT stebėjimas yra svarbus saugumo sluoksnis, apsaugantis nuo phishing atakų su teisėtai atrodančiais SSL sertifikatais.

Ar testssl.sh yra saugus naudoti?
Taip. testssl.sh yra atviro kodo įrankis, kurį galite peržiūrėti ir audituoti. Jis tik skaito informaciją iš serverio (nekeičia jokios konfigūracijos) ir veikia jūsų mašinoje. Vienintelis aspektas, kurį reikia turėti omenyje: testssl.sh siunčia daug TLS handshake užklausų per trumpą laiką, todėl kai kurios ugniasienės ar WAF sistemos gali tai interpretuoti kaip skenavimo ataką. Prieš testuodami trečiųjų šalių serverius, įsitikinkite, kad turite leidimą.

Apibendrinimas

SSL sertifikato tikrinimas ir stebėjimas yra ne vienkartinis veiksmas, o nuolatinis procesas. Pasibaigęs ar neteisingai sukonfigūruotas sertifikatas per kelias sekundes gali paversti jūsų svetainę nepasiekiama, sunaikinti lankytojų pasitikėjimą ir pakenkti SEO pozicijoms.

Minimalus veiksmas (5 minutės): Nustatykite UptimeRobot nemokamą HTTPS monitorių su SSL galiojimo pranešimais. Tai apsaugos jus nuo pasibaigusio sertifikato netikėtumo.

Rekomenduojamas veiksmas (30 minučių): Atlikite SSL Labs testą, ištaisykite rastus trūkumus, nustatykite automatinį stebėjimą ir cron skriptą kaip atsarginę sistemą.

Pilnas veiksmas (2-4 valandos): Atlikite visą SSL auditą pagal šiame straipsnyje pateiktą kontrolinį sąrašą, nustatykite Prometheus + Grafana stebėjimą, integruokite SSL tikrinimą į CI/CD, aktyvuokite Certificate Transparency stebėjimą ir DNS CAA įrašus.

Kiekviena minutė, investuota į SSL stebėjimą šiandien, apsaugo nuo valandų prastovos ir tūkstančių prarastų eurų ateityje.

Į viršų