WEB / WEB-05.02
Certificate chain ve hostname validation
Certificate binding, local trust anchor ve reference service identity kararlarını ayır.
1. Core · Mekanizma
Hareket olmadan bütün senaryoları oku
Path + name
- Verifier context önce seçilir
Reference identity ve local anchor peer verisinden bağımsız seçilir.
- Client · TLS
- reference=api.example.org; local anchor selected; checks pending
- Server · TLS
- certificate list ready: leaf-atlas + int-atlas; anchor omitted
- Certificate list client’ta
Encrypted Certificate mesajının anlamsal listesi geldi; trust veya hostname sonucu yok.
- Client · TLS
- certificate list received: leaf-atlas + int-atlas; validation pending
- Server · TLS
- certificate list ready: leaf-atlas + int-atlas; anchor omitted
- Local path construction
TLS leaf-first list’ten seçilmiş prospective path kurulur; anchor ayrıca input’tur.
- Client · TLS
- selected path=int-atlas -> leaf-atlas; anchor local
- Server · TLS
- certificate list ready: leaf-atlas + int-atlas; anchor omitted
- Path kontrol gate’i
Signature/time/constraints/status koşulları başarılı seçilir; gerçek certificate validator çalışmaz.
- Client · TLS
- path checks=true; hostname pending; TLS proof unmodeled
- Server · TLS
- certificate list ready: leaf-atlas + int-atlas; anchor omitted
- Bağımsız name sonucu
Normalde SAN eşleşir; canlı handshake proof’u bu scene’de yok.
- Client · TLS
- path=true; SAN name=true; certificate slice accepted; TLS proof unmodeled
- Server · TLS
- certificate list ready: leaf-atlas + int-atlas; anchor omitted
Name mismatch
- Verifier context önce seçilir
Reference identity ve local anchor peer verisinden bağımsız seçilir.
- Client · TLS
- reference=notes.example.org; local anchor selected; checks pending
- Server · TLS
- certificate list ready: leaf-atlas + int-atlas; anchor omitted
- Certificate list client’ta
Encrypted Certificate mesajının anlamsal listesi geldi; trust veya hostname sonucu yok.
- Client · TLS
- certificate list received: leaf-atlas + int-atlas; validation pending
- Server · TLS
- certificate list ready: leaf-atlas + int-atlas; anchor omitted
- Local path construction
TLS leaf-first list’ten seçilmiş prospective path kurulur; anchor ayrıca input’tur.
- Client · TLS
- selected path=int-atlas -> leaf-atlas; anchor local
- Server · TLS
- certificate list ready: leaf-atlas + int-atlas; anchor omitted
- Path kontrol gate’i
Signature/time/constraints/status koşulları başarılı seçilir; gerçek certificate validator çalışmaz.
- Client · TLS
- path checks=true; hostname pending; TLS proof unmodeled
- Server · TLS
- certificate list ready: leaf-atlas + int-atlas; anchor omitted
- Bağımsız name sonucu
Path başarılıdır fakat reference notes.example.org, SAN api.example.org ile eşleşmez. Certificate değerlendirmesi bu nedenle reddedilir; CN fallback bu sonucu değiştirmez.
- Client · TLS
- certificate slice rejected; no accepted service identity
- Server · TLS
- certificate list ready: leaf-atlas + int-atlas; anchor omitted
Intermediate absent
- Verifier context önce seçilir
Reference identity ve local anchor peer verisinden bağımsız seçilir.
- Client · TLS
- reference=api.example.org; local anchor selected; checks pending
- Server · TLS
- certificate list ready: leaf-atlas; anchor omitted
- Certificate list client’ta
Encrypted Certificate mesajının anlamsal listesi geldi; trust veya hostname sonucu yok.
- Client · TLS
- certificate list received: leaf-atlas; validation pending
- Server · TLS
- certificate list ready: leaf-atlas; anchor omitted
- Local path construction
Local context’te eksik intermediate için retrieval seçilmez.
- Client · TLS
- path incomplete; no intermediate/cache/retrieval
- Server · TLS
- certificate list ready: leaf-atlas; anchor omitted
- Path kontrol gate’i
Bu context’te incomplete path kabul edilmez.
- Client · TLS
- path rejected; hostname unevaluated; TLS proof unmodeled
- Server · TLS
- certificate list ready: leaf-atlas; anchor omitted
- Eksik path hostname kontrolünü atladı
int-atlas bulunamadığı ve cache/retrieval seçilmediği için path kurulamaz. Hostname kontrolü yapılmaz; hostnameMatched null kalır. Bu sonuç name mismatch veya canlı TLS proof failure olarak etiketlenmez.
- Client · TLS
- certificate slice rejected; no accepted service identity
- Server · TLS
- certificate list ready: leaf-atlas; anchor omitted
ROLLER · STATE · VERİ AKIŞI
Certificate bir signed binding taşır
X.509 certificate, subject/public key, issuer, validity ve extensions gibi bilgileri CA signature’ıyla bağlayan veri yapısıdır. Private key certificate’ın içine konmaz. Public leaf certificate’ı görmek, karşı peer’in o private key’e sahip olduğunu tek başına göstermez; TLS’de CertificateVerify bunu handshake context’ine bağlayan ayrı proof’tur.
leaf-atlas ve int-atlas alias’ları certificate ilişkilerini ve kontrol alanlarını gösterir; bunlar DER/PEM dosyaları değildir. Subject etiketi api.example.org için doğrulama kararı yerine geçmez. Modern web service identity, SAN dNSName/IP alanları ve client’ın bağımsız reference identity’si ile değerlendirilir.
CA authority yerel trust policy’den başlar
Client’ın anchor-atlas public key’ini trusted kabul etmesi yerel input’tur. Server aynı root’u gönderdi diye yeni bir authority doğmaz. Self-signed olması da tek başına trust sonucu vermez; root/anchor’in neden ve hangi scope için trusted olduğu verifier policy’sine aittir.
RFC5280 path validation trust anchor key/name/constraints, prospective path ve current time gibi input’lar kullanır. Trust anchor mutlaka root certificate dosyası biçiminde olmak zorunda değildir. Bu örnek local anchor alias’ı seçer; browser public trust-store policy’si, CA issuance audit’i veya root program değerlendirmesi yürütmez.
TLS list ile doğrulanan path aynı yön değildir
TLS Certificate list’inde sender’ın end-entity certificate’ı ilk gelir; devamındakiler önceki certificate’ı doğrudan certify etmeye yönelik SHOULD düzenidir. Örneğimiz [leaf-atlas,int-atlas] gönderir. Local anchor karşıya gönderilmez; bulunması zaten verifier context’ine bağlıdır. Leaf’in issuer alias’ı intermediate subject’ine, intermediate issuer’ı anchor name’ine bağlanır.
RFC5280 algorithm path’i trust-anchor tarafına yakın certificate’tan target’a doğru ifade eder: bu örnekte [int-atlas,leaf-atlas], anchor input’u ayrıca vardır. TLS1.3 implementations extraneous/arbitrary-order supporting certificate’lara hazırlanabilir, fakat leaf ilk olmalıdır. Alternative/cross-signed paths mümkün olduğu için gelen listenin her öğesini tek evrensel path sanma. Missing-intermediate dalında local cache/retrieval seçilmez; bu koşulda path tamamlanamaz.
Signature tek başına path validation değildir
Issuer signature, validity zamanı, CA basicConstraints/key usage, applicable name/policy constraints ve critical extensions farklı kontrollerdir. Leaf için selected TLS-server purpose da önemlidir; extendedKeyUsage varsa kullanım sınırını daraltabilir. Trust anchor’a isim zinciri çizmek bütün bu kontrollerin yapıldığı anlamına gelmez.
Örnekte kontrollerin sonuçları declarative boolean’larla verilmiştir; ASN.1 parsing, signature hesabı veya tam policy tree çalıştırılmaz. RFC5280’de notBefore ve notAfter aralığı inclusive’dır; tarih sınırındaki equality ayrıca hesaplanır. Revocation status ve policy de doğrulama anının sorusudur. Burada kabul edilebilir status başlangıç koşuludur; online OCSP/CRL sonucu veya her browser için aynı policy varsayılmaz.
Hostname beklenen adı certificate’tan almaz
Client URL https://api.example.org/ için reference DNS-ID api.example.org kurar. Server’ın SAN dNSName’lerinden biri bununla eşleşmelidir; seçilmiş ASCII exact karşılaştırma case-insensitive’dır. CNAME target veya bağlı IP, ordinary web örneğinde reference DNS-ID’yi kendiliğinden yeniden adlandırmaz. Path başarılı olduğu halde hostname mismatch olabilir.
RFC9525 service identity için commonName fallback’ini kaldırır: SAN yoksa CN aynı olsa bile bu modern profile match üretmez. Wildcard destekleyen application profile’da tek * yalnız complete left-most label olabilir ve tam bir label eşleştirir: *.example.org → api.example.org, fakat example.org veya a.api.example.org değil. Partial a*.example.org ignored edilir. Daha sıkı application/issuance policy wildcard’ı ayrıca yasaklayabilir; burada *.org gibi public-suffix issuance kurallarını uygulamıyoruz.
IP ve IDN için aynı string oyunu yetmez
URL literal IP içeriyorsa reference IP-ID olur; iPAddress SAN’ın address octet’leriyle exact match gerekir. DNS SAN’da "192.0.2.10" string’i bulunması iPAddress SAN yerine geçmez. Aynı IP’ye resolve olmak farklı DNS name’leri eşitlemez.
IDN reference name’lerde U-label’lar IDNA A-label’larına çevrilir, sonra ASCII case-insensitive comparison yapılır. Bu artifact ordinary ASCII DNS, documentation IP ve önceden seçilmiş xn--bcher-kva.example A-label’i kullanır; full IDNA/browser normalization implementasyonu değildir. Geçerli service identity, kullanıcıya gösterilen metnin semantik güvenilirliğini veya business owner identity’sini ayrıca sertifikalamaz.
2. Red · Güven ve etki
Hareket olmadan bütün senaryoları oku
Hostname gate
- Peer list, local anchor değildir
TLS sent list leaf-atlas, int-atlas içerir; anchor-atlas locallyTrusted=true input’udur ve sentByServer=false’dur. Peer’in sunduğu self-signature local trust policy’sini oluşturmaz.
- Certificate evidence
- Peer list / local anchor separate
- Path/name gate
- Trust gate yok
- Service acceptance
- Service acceptance yok
- Path koşulu kendi context’inde
name-mismatch pathAccepted=true verir. signatures, validity, constraints ve server purpose predicates’inin başarısı reference hostname check’ini kaldırmaz.
- Certificate evidence
- Peer list / local anchor separate
- Path/name gate
- Path true / name still required
- Service acceptance
- Service acceptance yok
- Service identity gate’i ayrı durdu
Reference notes.example.org, presented SAN api.example.org eşleşmez. hostnameMatched=false ve certificateSliceAccepted=false olur; chain success bunu telafi etmez.
- Certificate evidence
- Peer list / local anchor separate
- Path/name gate
- Path true / name still required
- Service acceptance
- Reference name mismatch
- CN fallback ile scope genişlemedi
nameMatrix’te SAN boş ve commonName=api.example.org satırı expected=false’dur. Bu modern SAN-only profile’da CN yazısını kullanarak name failure telafi edilmez.
- Certificate evidence
- SAN-only / CN not fallback
- Path/name gate
- Path true / name still required
- Service acceptance
- Reference name mismatch
- Certificate signature live key proof değildir
CA signature public-key binding’in path koşuludur. Live peer possession proof’u CertificateVerify/Finished aşamalarına aittir; liveTlsKeyProofExecuted=false burada değişmez.
- Certificate evidence
- SAN-only / CN not fallback
- Path/name gate
- Path/name slice / live proof absent
- Service acceptance
- Reference name mismatch
- Failure gate doğru kapsamda bitti
Certificate slice name mismatch nedeniyle kabul edilmez. Bu sonuç gerçek sertifika saldırısı, user authorization veya tüm TLS implementation verdict’i değildir.
- Certificate evidence
- SAN-only / CN not fallback
- Path/name gate
- Path/name slice / live proof absent
- Service acceptance
- Name mismatch / acceptance withheld
Intermediate eksik
- Peer list, local anchor değildir
Bu missing-intermediate dalında peer yalnız leaf-atlas sunar. anchor-atlas ayrı, yerelde trusted kabul edilmiş girdidir; server tarafından gönderilmemiştir. Elde int-atlas bulunmaması, yerel anchor’ın kaybolmasıyla aynı hata değildir.
- Certificate evidence
- Peer: leaf-atlas / anchor yerelde
- Path/name gate
- Trust gate yok
- Service acceptance
- Service acceptance yok
- Path koşulu kendi context’inde
missing-intermediate yalnız leaf-atlas sunar, cacheOrRetrievalSelected=false ve pathAccepted=false olur. Bu local context bütün browser cache/alternate path davranışına genellenmez.
- Certificate evidence
- Peer: leaf-atlas / anchor yerelde
- Path/name gate
- Path false / no retrieval
- Service acceptance
- Service acceptance yok
- Service identity gate’i ayrı durdu
Path incomplete olduğunda hostnameMatched=null ve certificateSliceAccepted=false kalır. Eksik check true diye doldurulmaz; dış certificate retrieval bu case’te seçilmez.
- Certificate evidence
- Peer: leaf-atlas / anchor yerelde
- Path/name gate
- Path false / no retrieval
- Service acceptance
- Certificate slice withheld
- Eksik issuer name kontrolünden önce durdurdu
leaf-atlas issuerAlias olarak Atlas intermediate gösterir; fakat eldeki listede int-atlas yoktur ve cache/retrieval seçilmemiştir. Anchor key’i, eksik issuer certificate’ının yerine konmaz. Bu dal SAN karşılaştırmasına ilerlemez; hostnameMatched null kalır.
- Certificate evidence
- leaf-atlas var / int-atlas eksik
- Path/name gate
- Path false / no retrieval
- Service acceptance
- Certificate slice withheld
- Certificate signature live key proof değildir
CA signature public-key binding’in path koşuludur. Live peer possession proof’u CertificateVerify/Finished aşamalarına aittir; liveTlsKeyProofExecuted=false burada değişmez.
- Certificate evidence
- leaf-atlas var / int-atlas eksik
- Path/name gate
- Path/name slice / live proof absent
- Service acceptance
- Certificate slice withheld
- Failure gate doğru kapsamda bitti
Bu case’te eldeki certificate listesi ve no-retrieval koşulu, path gate’inin ilerlemesini durdurur. Gerçek trust store, parser veya network davranışı ölçülmüş değildir.
- Certificate evidence
- leaf-atlas var / int-atlas eksik
- Path/name gate
- Path/name slice / live proof absent
- Service acceptance
- Path incomplete / acceptance withheld
VARSAYIM · SINIR · KONTROL
Kırılan varsayım: sunulan root trusted’dır
Gelen root certificate’ın kendisini imzalaması, verifier’ın o key’i neden trusted kabul ettiğini açıklamaz. Gerekli hata server-supplied veriyi bağımsız trust-anchor policy’si yerine koymaktır.
Kontrol local trust input’u ile peer’in sunduğu chain’i ayrı tutmaktır. Bu örnekte missing intermediate kontrolü local lookup’ta biter; herhangi bir dış endpoint’e otomatik istek yapılmaz.
Kırılan varsayım: chain başarılı, hostname önemsiz
Seçilmiş trusted CA’nın başka service için verdiği certificate, URL’deki service adını otomatik doğrulamaz. Gerekli koşul reference identity check’ini path success nedeniyle atlamaktır.
Kontrol reference name’i URL/configuration’dan bağımsız kurmak ve presented SAN ile eşleştirmektir. Modern profile’da matching CN kullanarak SAN failure’ını telafi etme.
Kırılan varsayım: signature possession proof’tur
Certificate CA signature’ı public key binding’ini kapsar; live peer’in private key’i kontrol ettiğini bu veri tek başına göstermez. CertificateVerify handshake signature’ı ve Finished ayrı kanıttır.
Kontrol path, name, handshake proof ve application policy sonuçlarını ayrı tutmaktır. Geçerli certificate alanlarını full TLS completion veya user yetkisi gibi yorumlama.
3. Blue · Güvenli geliştirme ve savunma
Hareket olmadan bütün senaryoları oku
SAN matrix
- İki chain yönü ayrıldı
tlsSentList leaf-atlas, int-atlas leaf-first’tür. prospectivePathAnchorToTarget int-atlas, leaf-atlas sırasındadır; anchor-atlas local input olup prospective path member değildir.
- Certificate metadata
- Sent leaf→int / path int→leaf
- Name/time calculation
- Matrix calculation yok
- Acceptance review
- Accept proof yok
- Name match rule’ları hesaplandı
*.example.org api.example.org için true, example.org ve a.api.example.org için false’dur. Partial wildcard a*.example.org ve wildcardsAllowed=false ayrı negative controls’dür.
- Certificate metadata
- Sent leaf→int / path int→leaf
- Name/time calculation
- One-label wildcard / no partial wildcard
- Acceptance review
- Accept proof yok
- Reference type kaybolmadı
IP-ID 192.0.2.10 matching presentedIp ile true, aynı string presentedDns içindeyken false’dur. ASCII case-insensitive DNS match ve preNormalizedALabel IDN örneği ayrı type koşulları taşır.
- Certificate metadata
- DNS-ID ≠ IP-ID / normalized A-label
- Name/time calculation
- One-label wildcard / no partial wildcard
- Acceptance review
- Accept proof yok
- UTC validity equality hesaplandı
notBefore=2026-10-01T00:00:00Z ve notAfter=2026-10-31T00:00:00Z equality dahil geçerlidir. Bir saniye önce/sonra false olur; bu UTC arithmetic certificate crypto testi değildir.
- Certificate metadata
- DNS-ID ≠ IP-ID / normalized A-label
- Name/time calculation
- Endpoints inclusive / ±1s outside
- Acceptance review
- Accept proof yok
- Accept conjunction eksikleri korudu
validationConditions Boolean predicates olarak sağlanır. Path/name başarıları seçilmiş certificate slice’ını kabul edebilir; nativePathValidatorRun=false ve liveTlsKeyProofExecuted=false full TLS sonucu eklemeyi engeller.
- Certificate metadata
- DNS-ID ≠ IP-ID / normalized A-label
- Name/time calculation
- Endpoints inclusive / ±1s outside
- Acceptance review
- Certificate slice / handshake unknown
- Regression bounded matrix’te kaldı
Bu matrix exact DNS, wildcard, IP-ID ve CN-only koşullarını ayrı karşılaştırır. Gerçek client kararı için kullanılan reference identity, presented SAN ve path/name check sonucu gerekir. Matrix, DER/ASN1 parsing, CRL/OCSP veya browser kabulünü ölçmez.
- Certificate metadata
- DNS-ID ≠ IP-ID / normalized A-label
- Name/time calculation
- Endpoints inclusive / ±1s outside
- Acceptance review
- SAN matrix consistent / handshake unknown
Validity sınırı
- Certificate aralığı ve verifier zamanı ayrıldı
leaf-atlas için notBefore 2026-10-01T00:00:00Z, notAfter 2026-10-31T00:00:00Z verilmiştir. Bu iki certificate alanı, verifier’ın değerlendirme zamanı at ile karşılaştırılır; peer kendi validity aralığını sunarak client’ın saatini belirlemez.
- Certificate metadata
- leaf-atlas: 1 Ekim–31 Ekim UTC
- Name/time calculation
- Matrix calculation yok
- Acceptance review
- Accept proof yok
- Validity koşulunun iki sınırı dahildir
Değerlendirme için notBefore ≤ at ≤ notAfter koşulu kullanılır. Aralığın iki ucu da dahildir. Bu tarih karşılaştırması yalnız validity sorusudur; issuer signature, SAN ve revocation için ayrı kontroller gerekir.
- Certificate metadata
- leaf-atlas: 1 Ekim–31 Ekim UTC
- Name/time calculation
- notBefore ≤ at ≤ notAfter
- Acceptance review
- Accept proof yok
- Başlangıç öncesi ile eşitlik ayrıldı
at 2026-09-30T23:59:59Z olduğunda henüz aralık başlamamıştır ve sonuç false’tur. Bir saniye sonraki 2026-10-01T00:00:00Z anı notBefore’a eşittir; o satır true olur. Aynı certificate için zaman koşulu değişmiştir, trust anchor değil.
- Certificate metadata
- 30 Eylül 23:59:59 false / 1 Ekim 00:00:00 true
- Name/time calculation
- notBefore ≤ at ≤ notAfter
- Acceptance review
- Accept proof yok
- Bitiş anı ile bir saniye sonrası ayrıldı
at 2026-10-31T00:00:00Z olduğunda notAfter’a eşitlik true’dur. Bir saniye sonraki 2026-10-31T00:00:01Z aralık dışındadır ve false olur. Bu iki satır yalnız certificate validity hesabıdır; application oturumunun ömrünü hesaplamaz.
- Certificate metadata
- 30 Eylül 23:59:59 false / 1 Ekim 00:00:00 true
- Name/time calculation
- 31 Ekim 00:00:00 true / 00:00:01 false
- Acceptance review
- Accept proof yok
- Tarih hesabı tam TLS proof değildir
Normal dalda validity dahil path koşulları başarılı verilmiştir. Tarih satırlarının hesabı, gerçek certificate signature veya tam PKIX validator sonucu değildir. Path ve SAN kabul edilse bile bu sahnede liveTlsKeyProofExecuted false kalır.
- Certificate metadata
- 30 Eylül 23:59:59 false / 1 Ekim 00:00:00 true
- Name/time calculation
- 31 Ekim 00:00:00 true / 00:00:01 false
- Acceptance review
- Certificate slice / handshake unknown
- Verifier’ın zamanı ayrı kanıt gerekir
Gerçek validity sonucu için verifier’ın değerlendirme zamanı, kullandığı certificate aralığı ve ilgili path sonucu birlikte gerekir. Bu örnek UTC sınırlarını karşılaştırır; client clock policy’sini, revocation bilgisini veya browser kabulünü gözlemez.
- Certificate metadata
- 30 Eylül 23:59:59 false / 1 Ekim 00:00:00 true
- Name/time calculation
- 31 Ekim 00:00:00 true / 00:00:01 false
- Acceptance review
- Validity matrix consistent / runtime unknown
UYGULAMA · GÜVENLİK KONTROLÜ · DOĞRULAMA
İki chain yönünü çiz
TLS list leaf-first’tür; seçilen validation path intermediate→leaf, local anchor ise input’tur. Issuer/subject alias ilişkilerini ve signature check koşullarını ayrı işaretle.
Missing intermediate dalında cache/retrieval yoktur. Bu sınırlı koşulu bütün browser’ların her eksik chain’de aynı sonuca ulaşması diye genelleme; alternate path ve cached intermediates başka context’tir.
SAN match matrix’ini elle hesapla
Exact ASCII name, tek-label wildcard, apex ve daha derin name satırlarını karşılaştır. Case farkının eşleşmeyi bozmadığını, wildcard label sayısının ise sonucu değiştirdiğini gör.
CN-only satırı modern profile’da false, IP-ID satırı DNS SAN string’iyle false kalır. IDN A-label örneği yalnız önceden normalize edilmiş biçimi eşleştirir.
Accept gate bir conjunction’dır
Path, hostname ve peer key-proof koşulları birlikte gerekir. Scene yalnız certificate/path/name dilimini tamamlar: normal final adımında bile live TLS key proof bu sahnenin dışında kalır.
Validity boundary hesabını UTC tarihleriyle yap; notAfter equality inclusive’dır. Boolean fixture sonucu gerçek revocation, policy-tree veya certificate parser testi diye adlandırma.
Automated client’ta hedefin reference identity’sini bağlantı öncesindeki service seçimine bağla ve certificate check’ini normal configuration’da açık tut. api.example.org yerine notes.example.org sunulması ‘ulaşılabilir ama başka identity’ sonucudur; communication girişimini hata ile bitirip ilgili identity mismatch’i kaydet. Sorunu çözmek için hostname kontrolünü kapatmak normal başarılı path’i güvenli hale getirmez. Aynı configuration altında doğru identity kabul edilirken name-mismatch dalının protected kullanıma geçmemesini doğrula.
ŞİMDİ VAKAYA UYGULA
Local trust, reference name ve live proof hangi ayrı kararlardır?
Atlas leaf certificate’ının SAN alanında api.example.org vardır. Reference identity notes.example.org ise path başarılı olsa bile hostname eşleşmez. Local anchor, intermediate availability ve UTC validity ayrı koşullardır.
Vakadaki güvenli bağlantının peer’i kimdir? TLS peer trust, browser origin ve kullanıcıya verilen object permission kararlarını ayrı anlat.
Bağlı vaka dosyasını aç ↗ÖRNEĞİ BİRLİKTE OKUYALIM
Atlas · certificate-path-name-matrix
Bir alan seç; hangi sonucu desteklediğini ve nerede yetersiz kaldığını incele.
Ham kaydı ve alan açıklamalarını oku
{
"profile": {
"referenceUrl": "https://api.example.org/",
"referenceDnsId": "api.example.org",
"serviceIdentity": "RFC9525 SAN-only DNS/IP bounded examples",
"derPemProduced": false,
"nativePathValidatorRun": false,
"privateKeyBytesPresent": false
},
"anchor": {
"id": "anchor-atlas",
"name": "Atlas Root teaching alias",
"publicKeyAlias": "anchor-public",
"locallyTrusted": true,
"sentByServer": false,
"partOfProspectivePath": false
},
"certificates": [
{
"id": "leaf-atlas",
"subjectAlias": "Atlas leaf",
"issuerAlias": "Atlas intermediate",
"publicKeyAlias": "leaf-public",
"sanDns": [
"api.example.org"
],
"notBefore": "2026-10-01T00:00:00Z",
"notAfter": "2026-10-31T00:00:00Z",
"ca": false,
"keyUsage": [
"digitalSignature"
],
"extendedKeyUsage": [
"serverAuth"
],
"issuerSignatureValidSelected": true
},
{
"id": "int-atlas",
"subjectAlias": "Atlas intermediate",
"issuerAlias": "Atlas Root teaching alias",
"publicKeyAlias": "intermediate-public",
"ca": true,
"keyUsage": [
"keyCertSign"
],
"issuerSignatureValidSelected": true,
"applicableConstraintsPassSelected": true
}
],
"tlsSentList": [
"leaf-atlas",
"int-atlas"
],
"prospectivePathAnchorToTarget": [
"int-atlas",
"leaf-atlas"
],
"validationConditions": {
"signatures": true,
"validity": true,
"caAndKeyUsage": true,
"applicableConstraints": true,
"criticalExtensions": true,
"selectedServerPurpose": true,
"selectedRevocationPolicyAcceptable": true
},
"nameMatrix": [
{
"reference": "api.example.org",
"type": "DNS-ID",
"presented": [
"api.example.org"
],
"wildcardsAllowed": true,
"expected": true
},
{
"reference": "API.EXAMPLE.ORG",
"type": "DNS-ID",
"presented": [
"api.example.org"
],
"wildcardsAllowed": true,
"expected": true
},
{
"reference": "api.example.org",
"type": "DNS-ID",
"presented": [
"*.example.org"
],
"wildcardsAllowed": true,
"expected": true
},
{
"reference": "example.org",
"type": "DNS-ID",
"presented": [
"*.example.org"
],
"wildcardsAllowed": true,
"expected": false
},
{
"reference": "a.api.example.org",
"type": "DNS-ID",
"presented": [
"*.example.org"
],
"wildcardsAllowed": true,
"expected": false
},
{
"reference": "api.example.org",
"type": "DNS-ID",
"presented": [
"a*.example.org"
],
"wildcardsAllowed": true,
"expected": false
},
{
"reference": "api.example.org",
"type": "DNS-ID",
"presented": [
"*.example.org"
],
"wildcardsAllowed": false,
"expected": false
},
{
"reference": "api.example.org",
"type": "DNS-ID",
"presented": [],
"commonName": "api.example.org",
"wildcardsAllowed": true,
"expected": false
},
{
"reference": "xn--bcher-kva.example",
"type": "DNS-ID",
"presented": [
"xn--bcher-kva.example"
],
"wildcardsAllowed": true,
"preNormalizedALabel": true,
"expected": true
},
{
"reference": "192.0.2.10",
"type": "IP-ID",
"presentedIp": [
"192.0.2.10"
],
"expected": true
},
{
"reference": "192.0.2.10",
"type": "IP-ID",
"presentedDns": [
"192.0.2.10"
],
"presentedIp": [],
"expected": false
}
],
"validityCases": [
{
"at": "2026-09-30T23:59:59Z",
"withinInclusiveValidity": false
},
{
"at": "2026-10-01T00:00:00Z",
"withinInclusiveValidity": true
},
{
"at": "2026-10-31T00:00:00Z",
"withinInclusiveValidity": true
},
{
"at": "2026-10-31T00:00:01Z",
"withinInclusiveValidity": false
}
],
"cases": [
{
"case": "normal",
"availableCertificates": [
"leaf-atlas",
"int-atlas"
],
"cacheOrRetrievalSelected": false,
"pathAccepted": true,
"hostnameMatched": true,
"certificateSliceAccepted": true,
"liveTlsKeyProofExecuted": false
},
{
"case": "name-mismatch",
"availableCertificates": [
"leaf-atlas",
"int-atlas"
],
"reference": "notes.example.org",
"pathAccepted": true,
"hostnameMatched": false,
"certificateSliceAccepted": false,
"liveTlsKeyProofExecuted": false
},
{
"case": "missing-intermediate",
"availableCertificates": [
"leaf-atlas"
],
"cacheOrRetrievalSelected": false,
"pathAccepted": false,
"hostnameMatched": null,
"certificateSliceAccepted": false,
"liveTlsKeyProofExecuted": false
}
],
"limits": "Declarative issuer/path/name relationships; no DER/ASN1, signature verification, actual trust store, CRL/OCSP, browser policy, live handshake or network retrieval."
}- anchor
- Peer’in gönderdiği veriden ayrı local trust input’u.
- certificates
- Gerçek certificate byte’ları olmayan field alias’ları.
- tlsSentList
- TLS list’in seçilmiş leaf-first sırası.
- prospectivePathAnchorToTarget
- Anchor ayrı input olmak üzere validation yönü.
- nameMatrix
- Modern SAN-only, bounded ASCII/IP örnekleri.
Field ve decision fixture’dır; full PKIX, DER, revocation veya actual browser validation sonucu değildir.
İki yanlış kanı
Root certificate gönderilirse client onu trusted kabul eder.
Trust anchor bağımsız local policy input’udur; peer’in listesi trust üretmez.
*.example.org bütün derin subdomain’leri kapsar.
Wildcard izinli profile’da complete left-most * tam bir label eşleştirir; apex veya iki label eşleşmez.
SIRA SENDE
Bu hikâyeyi sen çöz.
Sonucu tahmin et, kanıtın sınırını bul ve nedenini kendi cümlenle anlat.
Certificate path kabul edildi. reference=notes.example.org, fakat SAN=api.example.org. Bu certificate değerlendirmesi kabul edilir mi?
- Hayır. hostnameMatched=false.
- Evet. Trusted root bütün hostname’leri onaylar.
Gerekçeli cevabı oku
Hayır. hostnameMatched=false. — Güvenilen issuer path, farklı DNS service adı için izin vermez. certificateSliceAccepted=false kalır.
Root alias server’ın certificate listesinde yok. Bu tek başına eksik chain hatası mı?
Dersten seçilen artifact alanları; öğretim örneği
- anchor
- {"id":"anchor-atlas","name":"Atlas Root teaching alias","publicKeyAlias":"anchor-public","locallyTrusted":true,"sentByServer":false,"partOfProspectivePath":false}
- tlsSentList
- ["leaf-atlas","int-atlas"]
- prospectivePathAnchorToTarget
- ["int-atlas","leaf-atlas"]
- Hayır. Local anchor güvenilen girdidir; leaf ve intermediate gönderilmiş.
- Root gönderilmezse hiçbir path kurulamaz.
Gerekçeli cevabı oku
Hayır. Local anchor güvenilen girdidir; leaf ve intermediate gönderilmiş. — Anchor için locallyTrusted=true, sentByServer=false. TLS listesi leaf-first; prospective path burada anchor-to-target yönünde gösterilir.
*.example.org SAN neden api.example.org ile eşleşir, a.api.example.org ve example.org ile eşleşmez?
Gerekçeli cevabı oku
Wildcard burada soldaki tek tam label’ı kapsar. api bir label; a.api iki label’dır. example.org ise wildcard’ın kapsayacağı label’ı içermez. Policy wildcard kullanımına izin vermiyorsa ilk eşleşme de kabul edilmez. Legacy Common Name fallback bu profilde kullanılmaz.
□ Wildcard eşleşmesini tek label ile sınırladım.
□ SAN ve wildcard policy koşullarını korudum.
Uygulama konsolunu aç · request / response / browser
Request, URL, cookie ve DOM örneklerini ayrıca aç
Kaynaklar ve kapsam
- Internet X.509 Public Key Infrastructure4.1.1 Certificate Fields · 4.1.2.5 Validity · 4.2.1.3 Key Usage · 4.2.1.6 Subject Alternative Name · 4.2.1.9 Basic Constraints · 4.2.1.10 Name Constraints · 4.2.1.12 Extended Key Usage · 6.1 Basic Path Validation · 6.1.1 Inputs · 6.1.3 Basic Certificate Processing · 6.2 Using the Path Validation Algorithm
- Service Identity in TLS6.1.1 Constructing Reference Identifiers — Rules · 6.2 Preparing to Seek a Match · 6.3 Matching the DNS Domain Name Portion · 6.4 Matching an IP Address Portion · 7.7 Certificate Trust · Appendix A Changes from RFC6125 · 6.6 Outcome
- TLS 1.3 — current specification (2026)1 Introduction · 1.2 Relationship to RFC8446 · 2 Protocol Overview · 4.2 Hello Messages · 4.3 Extensions · 4.4.1 Encrypted Extensions · 4.5 Authentication Messages · 4.5.1 Certificate · 4.5.2 Certificate Verify · 4.5.3 Finished · 5.2 Record Payload Protection · 5.3 Per-Record Nonce · 7.1 Key Schedule · 7.4.2 Elliptic Curve Diffie-Hellman
- TLS 1.3 — original specification (2018; obsoleted by RFC9846)2 Protocol Overview · 4.4.2 Certificate · 4.4.3 Certificate Verify · 4.4.4 Finished · 5.2 Record Payload Protection