Ləğv edilmiş VPN sertifikatı hələ də qoşulur? CRL tətbiqini yoxlayın
Ləğv edilmiş sertifikatlar CRL yoxlayıcıya heç vaxt çatmadıqda hələ də qoşulur. Bu ardıcıllıqla emitenti, yüklənmiş seriya nömrəsini, yenidən yükləmə davranışını və aktiv sessiyaları yoxlayın.
Sertifikatı ləğv etdiniz, yeni siyahı yaratdınız və köhnə profil hələ də tunel qaldırır. Ləğvetmənin özü xarab deyil: CRL seriya nömrəsinin artıq etibarlı olmadığına dair imzalanmış bəyanatdır və o, qəbul qərarı verilməzdən əvvəl, düzgün emitent üçün TLS-i bitirən komponent onu yüklədikdə erişimi dəyişir. Bu halların çoxu məhz oradadır və buna görə ləğvetmə ilə imtina iki fərqli faktdır.
Aşağıdakı beş yoxlamadan sıra ilə keçin və ilk uyğun gəlməyəndə dayanın, çünki hər sonrakı yoxlama əvvəlkilerin doğru olduğunu fərz edir.
Qəbul qərarını hansı komponentin verdiyini yoxlayın
Müştəri sertifikatını yoxlayan prosesi adlandırın, çünki siyahını yalnız həmin proses tətbiq edə bilər. OpenVPN serverində bu, crl-verify ilə konfiqurasiya edilmiş daemonun özüdür. ocserv-də bu, ocserv.conf daxilindəki crl sətridir. strongSwan-da girişlər yüklənmiş CRL-lər və strictcrlpolicy birlikdədir. VPN-in qarşısında TLS-i bitirən proksi və ya cihaz da əsl yoxlayıcı ola bilər və belədirsə, arxasındakı daemon müştəri sertifikatını heç vaxt görmür.
WireGuard başqa kateqoriyaya aiddir. Sertifikatı və ləğvetmə siyahısı yoxdur; peer konfiqurasiyadaki açıq açarı ilə qəbul edilir, ona görə erişimin dayandırılması həmin açarın silinməsi deməkdir. Yalnız WireGuard olan quraşdırmada CRL axtarırsınızsa, o mexanizm orada yoxdur.
Müştəri tərəfindəki tələyə də diqqət edin. Server sertifikatını bəyənmədiyi üçün qoşulmaqdan imtina edən müştəri serverin zəncirini tətbiq edir, öz mandatını ləğv etmir. İstifadəçi sertifikatı yalnız həmin istifadəçi sertifikatının yoxlandığı yerdə ləğv edilir və bu, demək olar ki, həmişə server tərəfidir.
Siyahının hansı emitent üçün imzalandığını yoxlayın
CRL bir emitent CA ilə məhdudlaşır. Kök və ara CA olduqda yarpaq sertifikatlar aradan gəlir, ona görə vacib siyahı ara CA-nın CRL-sidir; kökün siyahısı o yarpaqlar haqqında heç nə demir. Səhv fayla yönəlmiş yoxlayıcı onu şən şəkildə analiz edir, uyğun qeyd tapmır və hər şeyi qəbul edir.
Daemona toxunmadan əvvəl uyğunluğu təsdiqləyin. Sertifikatdaki emitent siyahının subject-i ilə uyğun olmalıdır:
openssl x509 -in client.crt -noout -issuer -serial
openssl crl -in intermediate.crl -noout -issuer -lastupdate -nextupdateHər ikisi eyni CA-dan gəldikdə, sertifikat üçün çap edilmiş seriya nömrəsi siyahıda görünməli olan dəyərdir. Uyğun gəlmirsə, səhv CRL və ya onun səhv nüsxəsini tutursunuz.
Etibarlılıq eyni yoxlamaya aiddir. Keçmişdəki nextUpdate siyahını köhnəldir və bağlı şəkildə uğursuz olan yoxlayıcı o zaman yalnız ləğv ediləni deyil, hər müştərini rədd edəcək.
Seriya nömrəsinin daemonun yüklədiyi nüsxədə olduğunu yoxlayın
Ləğvetmə CA verilənlər bazasına qeyd yazır, yenidən yaratma isə yeni fayl yazır. Hər iki əməliyyat başlanğıcda köhnə nüsxəni yükləmiş işləyən daemona çatmır. Siyahını boşaldın və seriya nömrəsini axtarın:
openssl crl -in intermediate.crl -noout -text | grep -i -A2 'Serial Number'
openssl ca -revoke client.crt
openssl ca -gencrl -out intermediate.crlSonra tətbiqinizin faylı necə götürdüyünü yoxlayın. OpenVPN crl-verify verilən yolu başlanğıcda bir dəfə oxuyur, ona görə yeni siyahı yenidən başlatma və ya yenidən başlatma siqnalı tələb edir; eyni seçim kataloqa yönəldildikdə hər qoşulmada yenidən oxunur və kataloq rejiminin mövcud olmasının səbəbi budur. strongSwan öz mandatlarını yenidən yükləməlidir, məsələn swanctl --load-creds ilə. Faylın diskdə düzgün olması və yoxlayıcının ondan istifadə etməsi iki fərqli faktdır.
Çatışmayan və ya vaxtı keçmiş siyahı üçün siyasəti yoxlayın
Bu, bir çox quraşdırmanın heç vaxt açıq şəkildə vermədiyi qərardır və ləğvetmənin sizi qoruduğuna, yoxsa hamını bayırda bağladığına qərar verir. Fail-closed o deməkdir ki, istifadə edilə bilən ləğvetmə məlumatı olmadan imtina baş verir; fail-open o deməkdir ki, yoxlayıcı onsuz davam edir. strongSwan seçimi strictcrlpolicy kimi təqdim edir. OpenVPN crl-verify ilə oxuya və ya analiz edə bilmədiyi faylda başlamaqdan imtina edir və vaxtı keçmiş siyahı səssiz qəbul yerinə vaxtı keçmiş CRL barədə TLS yoxlama xətası kimi görünür.
| State of the revocation data | Fail-closed result | Fail-open result |
|---|---|---|
| List missing or unreadable | Verification fails, so expect an outage | Every client connects, including the revoked one |
List past nextUpdate | Validation errors until a fresh list is deployed | Old status is trusted indefinitely |
| Revoked serial present in the loaded list | Handshake rejected for that certificate | Handshake rejected for that certificate |
Hansı istiqaməti seçsəniz də, avtomatlaşdırma seçimdən daha vacibdir: CRL-ni nextUpdate əvvəl yenidən yaradan iş və yerləşdirilmiş nüsxə köhnəldikdə xəbərdarlıq iki siyasətin də hadisəyə çevrilməsinin qarşısını alır. OCSP ilə onlayn yoxlama təzəliyi cavabdehə köçürür, lakin eyni qayda qüvvədədir, çünki cavabı yoxlamaq üçün konfiqurasiya edilməmiş yoxlayıcı heç nəyi dəyişmir.
Aktiv sessiyanı, sonra açarın nüsxələrini yoxlayın
Ləğvetmə sertifikatın yoxlanılması zamanı qiymətləndirilir, bu qoşulma və yenidən danışıqlar zamanı baş verir. Qurulmuş sessiya yenidən danışıqlar edənə qədər davam edir və OpenVPN-in standart dəyəri reneg-sec 3600 ilə saatda birdir. Şəxs indi şəbəkədən çıxmalıdırsa, siyahını dərc etməklə yanaşı sessiyanı da dayandırın və sonra yenidən qoşulmanın rədd edildiyini təsdiqləyin.
Mandatı onun nüsxələrindən ayırın. Bir noutbukda profili silmək eyni şəxsi açarın başqa nüsxəsinin autentifikasiyasına mane olmur; hər nüsxəni yararsız edən ləğvetmədir və bu yalnız əvvəlki yoxlamalar uyğun olduqda keçərlidir. Ehtiyat cihaza öz sertifikatını verin ki, biri digərinə toxunmadan ləğv edilə bilsin.
Bunu bitmiş saymazdan əvvəl: yoxlayıcı komponent müəyyən edilib, siyahının emitenti yarpağın emitenti ilə uyğundur, ləğv edilmiş seriya nömrəsi daemonun həqiqətən yüklədiyi nüsxədədir, çatışmayan və ya vaxtı keçmiş siyahılar siyasəti qəsdən seçilib və izlənir, aktiv sessiya isə gözlənilmək əvəzinə dayandırılıb. Bütün bunların arxasındaki formatlar RFC 5280 daxilində göstərilib.