L03 — DNS → HTTP → TLS: zinciri gör, her halkayı ayrı boz#
Modül:
A3· Süre: ~1 saat · Kırık lab: yok
Bir tarayıcının https:// yazınca yaptığı üç işi tek tek elle yaparsın: isim çözme (DNS) → istek/yanıt (HTTP) → şifreli kanal ve kimlik (TLS). Sonra DNS'i ve TLS'i ayrı ayrı bozup her birini bağımsız teşhis edersin — çünkü "site açılmıyor"ın en az üç farklı kökü vardır.
Gerekenler#
- Linux/WSL2/VM.
openssl,curl,dig(veyagetent). - İnternet gerekmez — her şey
127.0.0.1üzerinde,lab.examplesahte ismiyle.
Görev#
- Yerel TLS servisi başlat.
starter/gen-cert-and-serve.shkendinden imzalı sertifika üretir ve127.0.0.1:8443'te HTTPS sunar. - İsmi elle çöz (DNS katmanı). Gerçek DNS yerine
curl --resolveilelab.example:8443→127.0.0.1eşlemesini kendin ver. Bir de olmayan bir isim çözmeyi dene (dig +short olmayan-isim.example) — cevapNXDOMAIN. - HTTP başlıklarını oku.
curl -kIsvile yanıt satırını (HTTP/...) ve başlıkları gör. Durum kodunureport.txt'e yaz. - Sertifikayı doğrula (TLS katmanı). Sertifikanın son geçerlilik tarihini ve sahibini (subject/CN)
opensslile çıkar,report.txt'e yaz. - İki halkayı ayrı boz:
- DNS bozuk: yanlış/olmayan isim → istek TLS'e bile ulaşmaz.
- TLS bozuk: doğru isme ama yanlış CN'li / süresi geçmiş cert →
certificate verify failed. Her iki hatanın farklı katmanda olduğunureport.txt'e yaz.
Kabul kriterleri#
-
bash verify.shsıfır hatayla geçiyor. -
report.txtsertifikanın son geçerlilik tarihini (notAfter) ve subject/CN'ini içeriyor. -
report.txtNXDOMAIN(DNS katmanı) ile TLS doğrulama hatasını ayrı sebepler olarak açıklıyor.
İpucu (çözüm değil)#
- İsim eşleme:
curl --resolve lab.example:8443:127.0.0.1 https://lab.example:8443/. - Cert alanları:
openssl x509 -in <cert> -noout -subject -enddate. - Canlı el sıkışmayı görmek:
openssl s_client -connect 127.0.0.1:8443 -servername lab.example. - DNS hatası çözme aşamasında, TLS hatası kimlik doğrulama aşamasında olur — farklı komut, farklı katman.
Takılırsan solution/'a bak — ama önce kendin dene.