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 tipas | Rankinis tikrinimas | Automatinis stebėjimas |
|---|---|---|
| Asmeninis tinklaraštis | Kartą per mėnesį | Kasdien |
| Verslo svetainė | Kartą per savaitę | Kas valandą |
| El. parduotuvė | Kartą per savaitę | Kas 5-15 minučių |
| Finansinė platforma | Kasdien | Kas 1-5 minutes |
| API serveris | Kasdien | Kas 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-ageturėtų būti bent 31536000 (1 metai)includeSubDomainsturėtų būti, jei visi subdomenai palaiko HTTPSpreloadturė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:
- Prisijunkite prie UptimeRobot.
- Spauskite Add New Monitor.
- Monitor Type: HTTPS.
- Friendly Name: jūsų svetainės pavadinimas.
- URL:
https://jusudomenas.lt - Monitoring Interval: pasirinkite intervalą.
- Skiltyje SSL Expiry Reminders aktyvuokite priminimus.
- Pasirinkite, prieš kiek dienų gauti pranešimą (rekomenduojama: 30, 14 ir 7 dienas).
- Nustatykite pranešimo kanalus (el. paštas, Slack, Telegram).
- 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ą:
- 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ę.
- Sertifikavimo institucijos klaida: CA gali klaidingai išduoti sertifikatą neteisingam asmeniui.
- 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:
- Atsisiųskite tarpinį sertifikatą (CA Bundle) iš savo sertifikato tiekėjo svetainės.
- 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
- Perkraukite žiniatinklio serverį.
- 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
wwwversijos, gaukite naują sertifikatą su abiem:jusudomenas.ltirwww.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.
