Mundarija (31)
- Bu darsda
- 1. Nega bu kerak?
- 2. HTTPS nima?
- 3. Shifrlash asoslari
- 3.1 Simmetrik shifrlash — bitta kalit
- 3.2 Asimmetrik shifrlash — ikki kalit
- 3.3 TLS ikkalasini birlashtiradi
- 4. Kalitni yo'lda uzatmasdan qanday kelishish mumkin?
- 5. TLS handshake qadamma-qadam
- 5.1 Terminalda handshake izlari
- 6. Sertifikat va CA
- 6.1 Sertifikat — serverning ID-kartasi
- 6.2 Ishonch zanjiri
- 6.3 Haqiqiy sertifikatni ko'ramiz
- 6.4 Let's Encrypt va qisqa muddatlar
- 7. Qulf belgisi nimani bildiradi
- 8. HTTP'dan HTTPS'ga: yo'naltirish va HSTS
- 9. Mixed content — aralash kontent
- 10. Hujumchi nigohi
- 11. Ko'p uchraydigan xatolar
- 11.1 Sertifikat muddati o'tgan
- 11.2 O'zi imzolagan sertifikat
- 11.3 Sertifikat boshqa domen uchun
- 11.4 Kompyuter soati noto'g'ri
- 11.5 curl -k odati
- 12. Mashqlar
- 1-mashq (oson): Brauzerda sertifikatni ko'ring
- 2-mashq (o'rta): Xatoni tashxislang
- 3-mashq (qiyin): Mixed content'ni tuzating
- 13. Real ishda
- Xulosa
HTTPS va TLS: shifrlash, sertifikat va qulf belgisi
Qisqacha: HTTPS — bu TLS shifrlash ichiga o'ralgan oddiy HTTP. TLS ikki ishni qiladi: yo'ldagi ma'lumotni begonalar o'qiy olmaydigan qilib shifrlaydi va sertifikat orqali "siz haqiqatan shu sayt bilan gaplashyapsiz"ni isbotlaydi. Qulf belgisi aloqa shifrlanganini bildiradi, lekin sayt egasi halol ekanini kafolatlamaydi.
Bu darsda
- Oddiy HTTP nega xavfli ekanini va "oradagi odam" (MITM) hujumini tushuntira olasiz.
- Simmetrik va asimmetrik shifrlash farqini va nega TLS ikkalasini ishlatishini bilasiz.
- TLS 1.3 handshake qadamlarini sanab bera olasiz.
- Sertifikat, CA va ishonch zanjirini terminalda o'z ko'zingiz bilan ko'rasiz.
- HSTS, mixed content va sertifikat xatolarini taniysiz va tuzatasiz.
Oldin bilishingiz kerak: HTTP sarlavhalari, MIME turlari, cookie va kesh, Protokol qatlamlari: TCP va UDP, Tarmoq va Internet nima.
1. Nega bu kerak?
Oldingi darsda cookie'ni ko'rdik: Cookie: sessiya=a8f3k2. Kim shu jetonni qo'lga kiritsa, sayt uni siz deb o'ylaydi. Endi savol: bu jeton yo'lda qanday uchadi?
Birinchi darsda ko'rgandik: ma'lumot paketlarga bo'linib, ko'plab routerlar orqali o'tadi. Shu darslar yozilgan kompyuterdan Cloudflare serverigacha paket 12 ta routerdan o'tdi — buni o'sha darsdagi tracert ko'rsatadi. Birinchisi — uydagi Wi-Fi router, keyin provayder, keyin boshqa davlatlardagi uzellar.
Oddiy HTTP'da ma'lumot ochiq matn bo'lib uchadi. Yo'ldagi har bir uzel uni o'qiy oladi. Xuddi pochta orqali konvertsiz, ochiq otkritka yuborgandek: pochtachi ham, saralovchi ham, qo'shni ham o'qiy oladi.
Choyxonadagi ochiq Wi-Fi'ni tasavvur qiling. O'sha tarmoqqa ulangan boshqa odam Wireshark kabi bepul dastur bilan hamma paketlarni ko'radi. Siz http:// saytga parol kiritsangiz — u ham ko'radi. Bunday hujum MITM (Man-in-the-Middle — "oradagi odam") deyiladi.
Oradagi odam uch xil zarar qila oladi:
- O'qiydi — parol, cookie, xabarlarni ko'radi.
- O'zgartiradi — sahifaga o'z reklamasini yoki zararli skriptni qo'shadi.
- Aldaydi — o'zini bank sayti qilib ko'rsatadi.
HTTPS uchala muammoni ham yopadi. Qanday qilib — shu darsda.
2. HTTPS nima?
HTTPS (HTTP Secure — xavfsiz HTTP) — o'sha tanish HTTP, faqat TLS ichiga o'ralgan. TLS (Transport Layer Security — transport qatlami xavfsizligi) — ma'lumotni shifrlaydigan va serverni tekshiradigan protokol.
Protokol qatlamlari darsidagi "konvert ichida konvert"ni eslang. HTTPS'da bitta qo'shimcha konvert paydo bo'ladi:
HTTP (GET /savatcha, Cookie: ...) ← siz yozgan xat
└─ TLS (shifrlangan konvert) ← yangi qatlam
└─ TCP (ishonchli yetkazish)
└─ IP (manzil)HTTP xabari o'zgarmaydi — metodlar, sarlavhalar, status kodlari o'sha-o'sha. Farqi shundaki, u yo'lga chiqishdan oldin shifrlanadi.
Yana ikki tanish farq:
- HTTP 80-portda ishlaydi, HTTPS — 443-portda (portlar darsi).
- Manzil
http://emas,https://bilan boshlanadi.
Maslahat: "SSL sertifikat" iborasini ko'p eshitasiz. SSL — TLS'ning eski nomi. SSL'ning hamma versiyalari xavfli deb topilgan va o'chirilgan. Bugun hamma joyda TLS 1.2 yoki TLS 1.3 ishlaydi, lekin odatga ko'ra "SSL" deyishda davom etishadi.
3. Shifrlash asoslari
3.1 Simmetrik shifrlash — bitta kalit
Shifrlash (encryption) — ma'lumotni kalitsiz o'qib bo'lmaydigan ko'rinishga keltirish. Salom so'zi x9#Kq2 ga aylanadi. Kaliti bor odam uni qaytadan Salom ga aylantira oladi.
Simmetrik shifrlash — qulflash ham, ochish ham bitta kalit bilan. Sandiq va uning kaliti kabi: kaliti bor odam sandiqni yopadi ham, ochadi ham.
Afzalligi — juda tez. Zamonaviy protsessorlar uni maxsus buyruqlar bilan bajaradi. Eng mashhur algoritm — AES.
Muammosi — kalitni qanday uzatish? Siz Toshkentda, server Frankfurtda. Kalitni internet orqali yuborsangiz, oradagi odam uni ham ushlab oladi. Kalit ochiq ketsa, shifrlashdan foyda yo'q.
3.2 Asimmetrik shifrlash — ikki kalit
Asimmetrik shifrlash — bir-biriga bog'langan ikkita kalit: ochiq kalit (public key) va yopiq kalit (private key).
Buni ochiq qulf bilan tasavvur qiling. Siz do'konda yuzta bir xil qulf sotib oldingiz, kaliti esa faqat sizda. Qulflarni ochiq holda hammaga tarqatasiz. Kim sizga xat yubormoqchi bo'lsa — qutiga soladi va sizning qulfingiz bilan "shiq" etib yopadi. Endi qutini hech kim ochmaydi — hatto yopgan odamning o'zi ham. Faqat sizning kalitingiz ochadi.
- Ochiq kalit — hammaga tarqatiladigan qulf.
- Yopiq kalit — faqat egasida turadigan kalit. Uni hech kimga berilmaydi.
Asimmetrik kalitlarning ikkinchi foydali ishi ham bor — raqamli imzo. Egasi yopiq kalit bilan "imzo qo'yadi". Hamma ochiq kalit bilan imzo haqiqiyligini tekshira oladi. Soxtalashtirib bo'lmaydi: imzo qo'yish uchun yopiq kalit kerak.
Kamchiligi — asimmetrik hisob-kitob simmetrikdan yuzlab marta sekin. Butun sahifani shunday shifrlash protsessorni qiynaydi.
3.3 TLS ikkalasini birlashtiradi
TLS ikkala usulning yaxshi tomonini oladi:
- Ulanish boshida asimmetrik matematika yordamida ikki tomon umumiy maxfiy kalit kelishib oladi. Bu kalit yo'lda hech qachon ochiq uchmaydi.
- Keyin butun ma'lumot shu kalit bilan tez simmetrik usulda (AES) shifrlanadi.
Hayotdan o'xshatish: telefonda qisqa gaplashib, bir xil parol tanlab olasiz, keyin uzoq xatlarni shu parol bilan yopib yuborasiz.
Tekshirib ko'ring: Nega TLS butun sahifani asimmetrik usulda shifrlamaydi?
Javob
Chunki asimmetrik shifrlash juda sekin. U faqat boshida kalit kelishish va imzo uchun ishlatiladi. Asosiy ma'lumot tez simmetrik usul (AES) bilan shifrlanadi.
4. Kalitni yo'lda uzatmasdan qanday kelishish mumkin?
Bu savol boshida sehrdek tuyulishi tabiiy. Keling, sekin ko'ramiz. Klassik tushuntirish — bo'yoq aralashtirish.
- Ali va server ochiqchasiga bitta umumiy rang tanlaydi — sariq. Buni hamma ko'radi, sir emas.
- Ali o'zining maxfiy rangini (qizil) tanlaydi. Server ham o'zinikini (ko'k) tanlaydi. Bularni hech kimga aytishmaydi.
- Har biri sariqqa o'z maxfiy rangini qo'shadi. Ali "sariq + qizil" = to'q sariq aralashmani yuboradi. Server "sariq + ko'k" = yashil aralashmani yuboradi.
- Ali serverdan kelgan yashilga o'zining qizilini qo'shadi. Server Alidan kelgan to'q sariqqa o'zining ko'kini qo'shadi.
- Ikkalasida ham bir xil rang chiqadi: sariq + qizil + ko'k. Bu — umumiy maxfiy kalit.
Oradagi odam sariqni, to'q sariqni va yashilni ko'rdi. Lekin aralashmani qaytadan ranglarga ajratish amalda mumkin emas. Maxfiy qizil va ko'kni bilmasa — yakuniy rangni ham topa olmaydi.
Haqiqiy TLS'da ranglar o'rnida juda katta sonlar ustida matematik amallar bo'ladi. Bu usul kalit almashish (key exchange) deyiladi. Uning muallif nomi bilan atalgan nomi — Diffie–Hellman.
Maslahat: Ko'p maqolalarda "brauzer seans kalitini serverning ochiq kaliti bilan shifrlab yuboradi" deb yozilgan. Bu — eski TLS versiyalaridagi usul. TLS 1.3 undan voz kechgan: agar serverning yopiq kaliti yillar o'tib o'g'irlansa, eski yozib olingan trafikni ham ochish mumkin bo'lardi. Bugun kalit yuqoridagidek "aralashtirib" kelishiladi.
Xo'sh, unda serverning sertifikati va ochiq kaliti nima uchun kerak? Haqiqiylikni isbotlash uchun. Bo'yoq usulida bitta teshik bor: hujumchi o'zini server qilib ko'rsatib, Ali bilan o'zi "rang aralashtirishi" mumkin. Bunga qarshi server o'z aralashmasiga yopiq kaliti bilan imzo qo'yadi. Brauzer imzoni sertifikatdagi ochiq kalit bilan tekshiradi.
5. TLS handshake qadamma-qadam
Brauzer va server TCP ulanishni o'rnatgach (3-way handshake), shifrlash kelishuvi boshlanadi. Bu TLS handshake ("qo'l siqish") deyiladi. TLS 1.3 da u bir borib-kelishda tugaydi:
sequenceDiagram
participant B as Brauzer
participant S as Server
B->>S: ClientHello: shifrlar, kalit ulushi, domen
S->>B: ServerHello: tanlov, kalit ulushi
S->>B: Sertifikat + imzo + Finished
Note over B: Sertifikat va imzoni tekshiradi
B->>S: Finished
Note over B,S: Endi hamma HTTP shifrlangan- ClientHello — brauzer: "Men TLS 1.3 va 1.2 ni bilaman. Shu shifrlarni qo'llayman. Mana mening kalit ulushim (bo'yoq aralashmam). Men
example.comga kelyapman." - ServerHello — server: "TLS 1.3 va shu shifrni tanladim. Mana mening kalit ulushim." Shu zahoti ikkala tomonda umumiy kalit paydo bo'ladi.
- Sertifikat va imzo — server o'z sertifikatini yuboradi va yopiq kaliti bilan butun suhbatga imzo qo'yadi. Bu qism allaqachon shifrlangan.
- Tekshiruv — brauzer sertifikatni tekshiradi (buni pastda ko'ramiz) va imzo to'g'riligiga ishonch hosil qiladi.
- Finished — ikkala tomon "tayyorman" deydi. Endi HTTP so'rovlari shifrlangan holda yuboriladi.
ClientHello'da domen nomi ochiq yuboriladi. Bu SNI (Server Name Indication) deyiladi. Bitta IP manzilda yuzlab sayt turishi mumkin. Server qaysi saytning sertifikatini ko'rsatishni shu nomdan biladi.
5.1 Terminalda handshake izlari
curl -v (verbose — batafsil) ulanish jarayonini ko'rsatadi. Client–server darsida > va < qatorlarini ko'rgandik. Endi * qatorlariga e'tibor beramiz:
curl -v https://example.comWindows'dagi curl natijasi (qisqartirilgan):
* Host example.com:443 was resolved.
* Trying 104.20.23.154:443...
* ALPN: curl offers http/1.1
* ALPN: server accepted http/1.1
* Established connection to example.com (104.20.23.154 port 443)
> GET / HTTP/1.1
> Host: example.com* qatorlari — curl'ning o'z izohlari. 443-portga ulandi, TLS kelishuvi o'tdi (ALPN — HTTP versiyasini kelishish, uni HTTP versiyalari darsida ko'ramiz). Faqat shundan keyin > so'rov ketdi.
Windows'dagi curl tizimning o'z shifrlash kutubxonasini ishlatadi va sertifikat tafsilotlarini ko'rsatmaydi. Linux va macOS'da curl -v qo'shimcha ravishda SSL connection using TLSv1.3 va Server certificate: qatorlarini chiqaradi. Windows'da buni boshqa vosita bilan ko'ramiz.
Tekshirib ko'ring: HTTPS'da oradagi odam qaysi narsani ko'ra oladi: (a) siz kirgan domen nomi, (b) sahifa yo'li
/savatcha, (c) cookie?
Javob
Faqat (a). Domen nomi ClientHello'dagi SNI'da ochiq ketadi, server IP manzili ham ko'rinadi. Yo'l, sarlavhalar, cookie va tana — hammasi HTTP xabari ichida, u esa shifrlangan. Ya'ni provayder "Malika example.com ga kirdi" ni biladi, lekin qaysi sahifani ochgani va nima yozganini bilmaydi.
6. Sertifikat va CA
6.1 Sertifikat — serverning ID-kartasi
Brauzer server bilan kalit kelishdi. Lekin bu server haqiqiy example.com ekanini qayerdan biladi?
Bankka borganingizni eslang. Kassir sizga ishonish uchun ID-kartangizni so'raydi. Karta haqiqiyligiga u davlat bergani uchun ishonadi — o'zingiz chizib kelgan karta o'tmaydi.
Sertifikat (certificate) — serverning ID-kartasi. Unda yozilgan:
- qaysi domen uchun (
example.com); - serverning ochiq kaliti;
- kim bergan (tasdiqlagan);
- amal qilish muddati (qachondan qachongacha);
- beruvchining raqamli imzosi.
CA (Certificate Authority — sertifikat beruvchi markaz) — sertifikatlarni tekshirib beradigan tashkilot. Brauzer uchun u "davlat" rolini o'ynaydi. Mashhurlari: Let's Encrypt, DigiCert, Sectigo, Google Trust Services.
6.2 Ishonch zanjiri
Brauzer har bir CA'ni qayerdan taniydi? Operatsion tizim va brauzer ichida oldindan o'rnatilgan ishonchli ildiz sertifikatlar ro'yxati (trust store) bor. Unda bir necha o'nlab eng ishonchli CA'lar turadi.
Ildiz CA sertifikatlarni to'g'ridan-to'g'ri saytlarga bermaydi. U oraliq (intermediate) CA'ga imzo qo'yadi, oraliq CA esa saytga. Natijada zanjir hosil bo'ladi:
Ildiz CA (tizimda o'rnatilgan, ishonchli)
└─ imzolaydi → Oraliq CA
└─ imzolaydi → example.com sertifikatiBrauzer zanjirni pastdan yuqoriga tekshiradi: sayt sertifikati → oraliq → ildiz. Ildiz ro'yxatda bo'lsa va hamma imzolar to'g'ri bo'lsa — ishonadi.
6.3 Haqiqiy sertifikatni ko'ramiz
Git Bash ichida openssl degan vosita tayyor turibdi. U TLS ulanishni ochib, sertifikatni ko'rsata oladi. Buyruq uzun, shuning uchun \ bilan qatorlarga bo'lingan:
echo | openssl s_client -connect example.com:443 \
-servername example.com 2>/dev/null \
| openssl x509 -noout -subject -issuer -datesBuyruqni yodlash shart emas. Qismlari: echo | bo'sh kiritish beradi, shunda ulanish kutib turmay yopiladi. s_client serverga TLS bilan ulanadi. 2>/dev/null ortiqcha xabarlarni yashiradi (yo'naltirish darsi). Ikkinchi openssl x509 sertifikatdan kerakli maydonlarni ajratadi.
Natija (2026-yil 28-sentabr):
subject=CN=example.com
issuer=C=US, O=SSL Corporation, CN=Cloudflare TLS Issuing ECC CA 3
notBefore=Sep 26 22:49:11 2026 GMT
notAfter=Dec 25 22:56:35 2026 GMTsubject— kimga berilgan:example.com.issuer— kim bergan: Cloudflare'ning oraliq CA'si.notBefore/notAfter— 26-sentabrdan 25-dekabrgacha. Atigi 90 kun.
openssl s_client ning to'liq chiqishida butun zanjir ham bor (qisqartirilgan):
0 s:CN=example.com
i:CN=Cloudflare TLS Issuing ECC CA 3
1 s:CN=Cloudflare TLS Issuing ECC CA 3
i:CN=SSL.com TLS Transit ECC CA R2
2 s:CN=SSL.com TLS Transit ECC CA R2
i:CN=SSL.com TLS ECC Root CA 2022
Protocol: TLSv1.3
Cipher is TLS_AES_256_GCM_SHA384
Verification: OKs: — sertifikat egasi, i: — uni imzolagan. Har bir qatorning i: i keyingi qatorning s: iga teng — mana zanjir. Oxirida: protokol TLS 1.3, ma'lumot AES (256-bitli kalit) bilan shifrlanadi, tekshiruv muvaffaqiyatli.
6.4 Let's Encrypt va qisqa muddatlar
Ilgari sertifikat yiliga o'nlab-yuzlab dollar turardi, uni qo'lda o'rnatish ham qiyin edi. Shuning uchun ko'p saytlar HTTP'da qolib ketgan.
2015–2016-yillarda Let's Encrypt ishga tushdi. U sertifikatni bepul va avtomatik beradi. Serverdagi certbot dasturi sertifikatni o'zi oladi va muddati tugashidan oldin o'zi yangilaydi. Bugun Let's Encrypt — dunyodagi eng ko'p sertifikat bergan CA.
Sertifikat muddatlari ataylab qisqartirilmoqda. Muddat qisqa bo'lsa, o'g'irlangan kalit uzoq vaqt yaroqli bo'lib qolmaydi. Brauzerlar va CA'lar 2025-yilda kelishgan jadval bo'yicha maksimal muddat 2026-yil martdan 200 kun, 2029-yilga borib esa 47 kunga tushadi. Shuning uchun sertifikatni qo'lda yangilash o'tmishda qoldi — faqat avtomatika.
Maslahat: Netlify, Vercel, Cloudflare Pages, GitHub Pages kabi hosting xizmatlari HTTPS'ni o'zi yoqadi va o'zi yangilaydi. Birinchi saytingizni joylashtirganda sertifikat haqida o'ylamaysiz ham.
certbotbilan qo'lda ishlashni server qismida o'rganamiz.
Tekshirib ko'ring: Hujumchi o'z kompyuterida
example.comuchun sertifikat yasadi va unga o'zi imzo qo'ydi. Brauzer unga ishonadimi?
Javob
Yo'q. Imzo qo'ygan "CA" — hujumchining o'zi, u brauzerning ishonchli ro'yxatida yo'q. Zanjir ildizga yetib bormaydi. Brauzer qizil ogohlantirish ekranini ko'rsatadi. Bunday sertifikat o'zi imzolagan (self-signed) deyiladi.
7. Qulf belgisi nimani bildiradi
Manzil satri yonidagi belgi haqida noto'g'ri tushuncha juda ko'p:
| Kafolatlaydi | Kafolatlamaydi |
|---|---|
| Aloqa shifrlangan | Sayt egasi halol |
| Yo'lda hech kim o'qimaydi va o'zgartirmaydi | Saytda firibgarlik yo'q |
| Siz aynan shu domen bilan gaplashyapsiz | Domen nomi to'g'ri yozilgan |
Firibgar bank-kirish.example.com kabi bankka o'xshash domen oladi va unga bepul Let's Encrypt sertifikatini qo'yadi. Qulf chiqadi — lekin bu firibgarning sayti. Qulf faqat "siz firibgar bilan shifrlangan holda gaplashyapsiz" deydi.
Aynan shu chalkashlik tufayli Chrome 2023-yilda (117-versiya) qulf belgisini oddiy sozlamalar belgisiga almashtirdi. Odamlar qulfni "xavfsiz sayt" deb tushunayotgan edi. HTTP sayt esa "Not secure" (Xavfsiz emas) deb belgilanadi.
Diqqat: To'lov yoki parol sahifasida doim domen nomini harfma-harf o'qing. Qulf yoki sozlamalar belgisi borligi — yetarli emas.
8. HTTP'dan HTTPS'ga: yo'naltirish va HSTS
Foydalanuvchi manzil satriga github.com deb yozdi — https:// siz. Brauzer avval http:// ni sinab ko'rishi mumkin. Server nima qiladi? curl -I http://github.com:
HTTP/1.1 301 Moved Permanently
Location: https://github.com/301 yo'naltirish: "HTTPS manzilga o't". Lekin bitta teshik qoldi: birinchi http:// so'rov baribir ochiq ketdi. Hujumchi aynan shu lahzada javobni almashtirib, sizni HTTPS'ga o'tkazmay qo'yishi mumkin. Bu hujum SSL stripping deyiladi.
Yechim — HSTS (HTTP Strict Transport Security) sarlavhasi. GitHub'ning HTTPS javobida:
Strict-Transport-Security: max-age=31536000;
includeSubdomains; preloadTarjimasi: "Keyingi 31 536 000 soniya (1 yil) davomida menga faqat HTTPS orqali kel. Subdomenlarimga ham." Brauzer buni eslab qoladi. Keyingi safar http://github.com yozsangiz, brauzer so'rovni tarmoqqa chiqarmasdan o'zi https:// ga almashtiradi.
preload — "meni brauzerlarning oldindan o'rnatilgan ro'yxatiga qo'shinglar". Bunday saytlar uchun hatto birinchi tashrif ham faqat HTTPS bo'ladi.
9. Mixed content — aralash kontent
Saytingiz https:// da ochildi. Lekin HTML ichida bitta skript eski manzil bilan ulangan:
<script src="http://cdn.example.com/hisoblagich.js"></script>Sahifa shifrlangan, skript esa yo'lda ochiq keladi. Hujumchi skriptni almashtirsa — butun sahifa uning qo'lida. Bu holat mixed content (aralash kontent) deyiladi.
Brauzerlar bunga shunday munosabatda:
- Skript, CSS, iframe — darhol bloklanadi. Konsolda xato chiqadi.
- Rasm, audio, video — brauzer manzilni o'zi
https://ga almashtirib ko'radi. U yerda fayl bo'lmasa — bloklanadi.
Chrome konsolidagi xabar:
Mixed Content: The page at 'https://example.com/' was loaded over
HTTPS, but requested an insecure script
'http://cdn.example.com/hisoblagich.js'. This request has been
blocked; the content must be served over HTTPS.Tarjimasi: "Sahifa HTTPS orqali yuklandi, lekin xavfsiz bo'lmagan skriptni so'radi. So'rov bloklandi: kontent HTTPS orqali berilishi shart."
Tuzatish: manzilni https:// ga o'zgartiring. Fayl o'z saytingizda bo'lsa — nisbiy yo'l (/js/hisoblagich.js) ishlating: u sahifa qaysi protokolda bo'lsa, o'shani oladi.
10. Hujumchi nigohi
Soxta Wi-Fi. Hujumchi aeroportda Free_WiFi_Tashkent nomli tarmoq ochadi. Siz ulanasiz — endi hamma trafikingiz uning qurilmasidan o'tadi. U o'zini bank sayti qilib ko'rsatmoqchi. Lekin bankning haqiqiy sertifikati va yopiq kaliti unda yo'q. O'zi yasagan sertifikatni ko'rsatsa, brauzer qizil ekran chiqaradi:
Your connection is not private
NET::ERR_CERT_AUTHORITY_INVALIDHTTPS'ning butun himoyasi shu ekranda turibdi. Hujumchining yagona umidi — siz "Advanced → Proceed" (baribir davom etish) tugmasini bosishingiz. Begona tarmoqda bu tugmani hech qachon bosmang.
SSL stripping. Hujumchi birinchi http:// so'rovni ushlab, sizni HTTP'da ushlab qoladi. Qarshi chora — yuqorida ko'rgan HSTS.
Qulfli fishing. Firibgar sayt haqiqiy sertifikat bilan ishlaydi. Qarshi chora — texnika emas, odat: domen nomini tekshirish.
11. Ko'p uchraydigan xatolar
Quyidagi xatolar ataylab buzilgan sertifikatli sinov saytlarida (badssl.com) olingan. Avval curl xabari, keyin o'sha holatda brauzer ko'rsatadigan xabar.
11.1 Sertifikat muddati o'tgan
curl: (35) schannel: ... SEC_E_CERT_EXPIRED (0x80090328)
- The received certificate has expired.Brauzerda: NET::ERR_CERT_DATE_INVALID. Tarjimasi: "qabul qilingan sertifikat muddati tugagan". Ko'pincha certbot avtomatik yangilashi buzilganda yuz beradi. Saytga kirgan hammaga qizil ekran chiqadi. Tuzatish: sertifikatni yangilash va avtomatik yangilanish ishlayotganini tekshirish.
11.2 O'zi imzolagan sertifikat
curl: (60) schannel: SEC_E_UNTRUSTED_ROOT (0x80090325) - The
certificate chain was issued by an authority that is not trusted.Brauzerda: NET::ERR_CERT_AUTHORITY_INVALID. Tarjimasi: "zanjirni ishonchsiz markaz bergan". O'z kompyuteringizda sinash uchun normal. Internetdagi saytda — yo'q.
11.3 Sertifikat boshqa domen uchun
curl: (60) schannel: SNI or certificate check failed:
SEC_E_WRONG_PRINCIPAL (0x80090322)
- The target principal name is incorrect.Brauzerda: NET::ERR_CERT_COMMON_NAME_INVALID. Tarjimasi: "sertifikatdagi nom siz kirgan nomga mos emas". Masalan, sertifikat example.com uchun, siz esa www.example.com ga kirdingiz. Tuzatish: sertifikatga barcha kerakli nomlarni qo'shish.
11.4 Kompyuter soati noto'g'ri
Birdaniga hamma saytlar sertifikat xatosini bera boshladi — Google ham, YouTube ham. Sababi ko'pincha kompyuter sanasi: u 2019-yilni ko'rsatyapti. Brauzer "sertifikat hali boshlanmagan" deb o'ylaydi. Tuzatish: Windows sozlamalarida sana va vaqtni avtomatik qiling.
11.5 curl -k odati
Internetda curl -k yoki --insecure maslahatini uchratasiz. Bu "sertifikatni tekshirma" degani — HTTPS himoyasining yarmini o'chiradi. Faqat o'z kompyuteringizdagi sinov serveri uchun ishlating, hech qachon haqiqiy saytlar va skriptlarda emas.
12. Mashqlar
1-mashq (oson): Brauzerda sertifikatni ko'ring
Chrome'da istalgan HTTPS saytni oching. Manzil satrining chap tomonidagi belgini bosing → "Connection is secure" (Ulanish xavfsiz) → "Certificate is valid" (Sertifikat haqiqiy). Toping:
- Sertifikat qaysi domen uchun berilgan?
- Kim bergan (Issued by)?
- Qachon tugaydi (Expires on)?
Yechim
Masalan, example.com uchun: domen — example.com, beruvchi — "Cloudflare TLS Issuing ECC CA 3", tugash sanasi — 2026-yil 25-dekabr. Sizda sana boshqacha bo'lishi mumkin: sertifikat har 2–3 oyda yangilanadi.
"Certification Path" (Sertifikat yo'li) yorlig'ida butun zanjirni ham ko'rasiz: ildiz → oraliq → sayt.
2-mashq (o'rta): Xatoni tashxislang
Git Bash'da uchta buyruqni bajaring va har biri uchun sababni ayting:
curl -I https://expired.badssl.com
curl -I https://self-signed.badssl.com
curl -I https://wrong.host.badssl.comYechim
SEC_E_CERT_EXPIRED— sertifikat muddati o'tgan.SEC_E_UNTRUSTED_ROOT— sertifikat o'zi imzolagan, ishonchli CA bermagan.SEC_E_WRONG_PRINCIPAL— sertifikat boshqa domen nomi uchun berilgan.
Uchala holatda ham curl hech qanday HTTP so'rov yubormadi. U TLS bosqichida to'xtadi, chunki serverga ishonib bo'lmaydi. Linux yoki macOS'da xabar matni boshqacha (certificate has expired kabi), ma'nosi bir xil.
3-mashq (qiyin): Mixed content'ni tuzating
Sahifa https://example.com/menyu da ochiladi. Uning ichida:
<link rel="stylesheet" href="http://example.com/css/menyu.css">
<img src="http://example.com/rasmlar/plov.jpg" alt="Plov">
<script src="http://cdn.example.org/sanoq.js"></script>
<img src="https://example.com/rasmlar/logo.png" alt="Logo">- Qaysi qatorlar mixed content?
- Brauzer har birini nima qiladi?
- Tuzatilgan variantni yozing.
Yechim
- Birinchi uchtasi — ular
http://bilan. To'rtinchisi to'g'ri. - CSS va skript bloklanadi — sahifa dizaynsiz va skriptsiz qoladi.
plov.jpgrasmini brauzer avvalhttps://ga almashtirib yuklashga urinadi. U manzilda fayl bor bo'lsa, rasm chiqadi. - O'z saytingizdagi fayllar uchun nisbiy yo'l, begona sayt uchun
https://:
<link rel="stylesheet" href="/css/menyu.css">
<img src="/rasmlar/plov.jpg" alt="Plov">
<script src="https://cdn.example.org/sanoq.js"></script>
<img src="/rasmlar/logo.png" alt="Logo">13. Real ishda
- Har bir sayt HTTPS'da. Bugun brauzerlar HTTP saytni "Not secure" deb belgilaydi. Google HTTPS saytlarni qidiruvda yuqoriroq qo'yadi. Ko'p yangi brauzer imkoniyatlari (kamera, geolokatsiya, service worker) faqat HTTPS'da ishlaydi.
- Backend va DevOps: Nginx'da sertifikat o'rnatish,
certbotbilan avtomatik yangilash, muddat tugashini kuzatish — server ishining oddiy qismi. Buni server qismida qilasiz. - Kasbiy odat: sertifikat muddatini kuzatuvchi xizmatlar (monitoring) "7 kun qoldi" deb ogohlantiradi. Tugagan sertifikat — butun sayt "yiqildi" degani.
- Intervyu: "HTTPS qanday ishlaydi?", "Simmetrik va asimmetrik shifrlash farqi?", "Qulf belgisi nimani kafolatlaydi?" — klassik savollar.
Xulosa
- HTTPS = HTTP + TLS. HTTP xabari o'zgarmaydi, faqat shifrlangan konvertda uchadi (443-port).
- TLS kalitni yo'lda uzatmasdan kelishadi, keyin ma'lumotni tez simmetrik usulda (AES) shifrlaydi.
- Sertifikat — serverning ID-kartasi; brauzer uni CA zanjiri orqali tekshiradi.
- Qulf — "aloqa shifrlangan", "sayt halol" emas. Domen nomini doim tekshiring.
- HSTS birinchi
http://so'rov teshigini yopadi; mixed content — HTTPS sahifadagihttp://resurs.
Keyingi dars: Manzilni yozganda nima bo'ladi: to'liq sayohat — DNS, TCP, TLS va HTTP'ni bitta zanjirga yig'ib, Enter bosilgandan sahifa chizilguncha bo'lgan yo'lni kuzatamiz.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!