Çarpaz imzalanmış CA: açar uyğundur, AKI bağlantısı uyğun deyil
Bir yarpaq öz verənini açar identifikatoru, verən və seriya nömrəsi ilə bərkidə bilər. Çarpaz imzalanmış zənciri əvəzolunan saymazdan əvvəl həmin bağlantını yoxlayın.
İki CA sertifikatı eyni açıq açarı və eyni subyekti daşıya bilər və yenə də bir-birini əvəz edə bilməz. Biri özünü imzalayır, digəri köhnə kök tərəfindən çarpaz imzalanır və onların verən adları, seriya nömrələri və imzaları fərqlənir. Bir yarpaq Authority Key Identifier vasitəsilə yalnız birinə bağlana bilər. Bu bağlantı müştəri səhv zənciri seçənə və handshake aydın səbəb olmadan uğursuz olana qədər görünməz qalır.
Bu beş yoxlamanı sıra ilə yerinə yetirin: hər biri fərqli bir nasazlığı istisna edir.
Yoxlama 1: şablona toxunmadan əvvəl hər iki zənciri çəkin
Yolları yazın. Köhnə populyasiya Köhnə Kök A-ya güvənir, o CA B-ni, o da server yarpağını verib. Yeni populyasiya özünü imzalamış CA B-yə birbaşa güvənir. Hər iki B sertifikatı eyni açarı və subyekti daşıyır; buna görə də subyekt sətrini oxuyan adam bir CA görür, müştəri isə iki.
Çarpaz imzalanmış nüsxə də əsl CA sertifikatı olmalıdır; basic constraints və key usage imzalamağa icazə verməlidir.
Yoxlama 2: yalnız açarı deyil, AKI sahələrini müqayisə edin
Yarpağın verən adı B subyekti ilə uyğun olmalıdır və bu hissə adətən uyğun gəlir. İki nüsxənin ayrıldığı yer Authority Key Identifier-dir, çünki o, açar identifikatoru, verən sertifikatı və seriya nömrəsi daşıya bilər. Açar identifikatoru hər iki nüsxəyə uyğun gəlir, çünki açar eynidir. Verən və seriya sahələri tam olaraq birinə uyğun gəlir; buna görə özünü imzalamış nüsxəyə qarşı qurulan zəncir çarpaz imzalanmış nüsxəyə qarşı uğursuz ola bilər.
Təxmin etmək əvəzinə yarpağı yoxlayın: openssl x509 -in server.pem -noout -ext authorityKeyIdentifier.
Sonra hər iki namizədi openssl x509 -in b-cross.pem -noout -text | grep -A2 "Authority Key Identifier" ilə müqayisə edin və eyni əmri özünü imzalamış nüsxəyə qarşı işlədin.
Yarpaq verəni və seriyanı daşıyırsa, zənciri yalnız o dəyərlərin təsvir etdiyi sertifikat tamamlayır; müştəri hansı nüsxəni yükləsə də.
Yoxlama 3: imzalanmış baytları deyil, buraxılış siyasətini dəyişin
Genişlənmələr imzanın içindədir. Mövcud yarpaqda birini əlavə etmək, silmək və ya redaktə etmək təmir deyil, başqa sertifikatdır və yenidən buraxılış tələb edir. Dəyişiklik buraxılış siyasətinə aiddir: authorityKeyIdentifier = keyid,issuer:always yeni yarpaqların sertifikata xas bağlantını daşımasını təmin edir, tək keyid isə qəsdən çarpaz imzalama keçidinə uyğun daha boş formu saxlayır. Növbəti partiya imzalanmadan əvvəl PKI-ınızın hansını istədiyinə qərar verin.
Ortaq şablonu redaktə etmək yalnız qarşınızdakı serveri deyil, bütün gələcək sertifikatları da dəyişir.
Yoxlama 4: hər etimad populyasiyasını ayrıca yoxlayın
Köhnə yolu və yeni yolu ayrı qaçışlar kimi sınayın. openssl verify -purpose sslserver -verify_hostname vpn.example -CAfile old-root.pem -untrusted b-cross-signed.pem server.pem çarpaz imzalanmış marşrutu işlədir; yeni kök və untrusted faylı olmadan eyni əmr özünü imzalamış marşrutu işlədir. Hər iki kökü bir paketə qarışdırmaq hansı zəncirin seçildiyini gizlədir. Sonra real müştərilərlə təkrarlayın, çünki VPN backend openssl-in etmədiyi üsullarla zənciri üstün tuta və ya sertifikatı bərkidə bilər.
Ara sertifikatı wiki səhifəsi ilə deyil, müştərinin həqiqətən oxuduğu xidmət konfiqurasiyası ilə çatdırın.
Yoxlama 5: köhnə yolu təqaüd saatında saxlayın
Çarpaz imzalama köhnə etimad yolunu dizaynla canlı saxlayır; bu həm məqsəd, həm də risktir. O, kompromisə uğramış köhnə kökü aradan qaldırmır və o kökü heç bir müştəridən silmir. Köhnə yolun nə vaxt etimad verməyəcəyini yazın və o günün həqiqətən gəldiyini təsdiqləyin.
Hər müştəri yarpaqlar köçməzdən əvvəl yeni kökü qəbul edə bilirsə, sadə ikiqat etimad yerləşdirməsi çarpaz imzalamadan daha sadədir və təqaüdə çıxarılacaq bir şey daha az qoyur.