სერვერის სერტიფიკატის დანიშნულება სწორად გამოიყურება, გასაღები ემთხვევა, თარიღები რიგზეა, და კავშირი მაინც მარცხდება unsupported certificate purpose-ით. დეტალი, რომელიც ამას წყვეტს, ჩვეულებრივ შეცდომის იმავე ხაზშია: სიღრმის მნიშვნელობა და subject, რომლებიც ჯაჭვში ზემოთ მდებარე სერტიფიკატს ასახელებენ. ტარდება ორი სხვადასხვა ტესტი და მათგან მხოლოდ ერთი ეხება საბოლოო სერტიფიკატს. მათი შედარება ხსნის, რატომ არაფერს ცვლის სერვერის სერტიფიკატის შეცვლა.

რომელი სერტიფიკატი უარყო გამმოწმებელმა სინამდვილეში

ჯაჭვი არ არის ერთი ობიექტი, რომელიც სამჯერ მეორდება. საბოლოო სერტიფიკატი ატარებს სერვერის სახელსა და გასაღებს, შუალედური სერტიფიკატები მას ფესვთან აკავშირებს, და თითოეულს აქვს საკუთარი მოქმედების ვადა, შეზღუდვები და გამოყენებები. როდესაც შეცდომა სიღრმეს ასახელებს, ეს რიცხვი გამმოწმებელის მიერ აგებულ ჯაჭვში პოზიციას აღნიშნავს და შეიძლება არ იყოს ის პოზიცია, რომელსაც ელოდებით, თუ სერვერი მოულოდნელ ჯაჭვს აგზავნის.

წაიკითხეთ ამ სიღრმის სერტიფიკატის ველები და არა იმ სერტიფიკატისა, რომელიც დამნაშავედ მიიჩნიეთ. მოითხოვეთ ორი გაფართოება, რომლებიც გამოცემას ზღუდავს, ყველა ველის გამოტანის ნაცვლად, რადგან პასუხი თითქმის ყოველთვის ერთ-ერთ მათგანშია. გაფართოებების გამონატანის გაზიარება უსაფრთხოა; პირადი გასაღებებისა — არასდროს.

openssl x509 -in issuing-ca.pem -noout -subject -issuer -ext basicConstraints -ext extendedKeyUsage

თუ დასახელებული სერტიფიკატი შუალედურია და მისი გაფართოებული გასაღების გამოყენება რაიმეს ახსენებს, რაც TLS სერვერის იდენტიფიკაციას არ უკავშირდება, დარჩენილი მარცხი მექანიკურად მოყვება. ჯაჭვი ვერ გამოიყენება იმ დანიშნულებისთვის, რომელიც OpenVPN-მა მოითხოვა.

საბოლოო სერტიფიკატის დანიშნულება და ჯაჭვის პოლიტიკა ორი ტესტია

საბოლოო სერტიფიკატის ტესტი ვიწრო კითხვას სვამს: უშვებს ეს საბოლოო ერთეულის სერტიფიკატი სერვერის იდენტიფიკაციას ამ სახელისთვის? ჯაჭვის ტესტი უფრო ფართოს სვამს: შეიძლება გზის ყველა სერტიფიკატი ამ დანიშნულებას ემსახუროს? სერტიფიკატის ორგანო, რომელსაც მხოლოდ კლიენტის სერტიფიკატების გამოცემა აქვს უფლება, გაივლის საკუთარ ხელმოწერის შემოწმებებს და მაინც ჩავარდება მეორე ტესტში, რადგან გზა, რომელსაც ის უფლებას აძლევს, არ მოიცავს იმ დანიშნულებას, რომელიც აპლიკაციას სჭირდება. ორივე ტესტი ერთი და იმავე სიტყვებით მარცხდება და სრულიად განსხვავებული შესწორებები აქვს.

ამიტომაც ახლად გამოცემული საბოლოო სერტიფიკატი, რომელიც ყველა ხილულ ველში სწორია, შეიძლება მაშინვე ჩავარდეს. ამიტომაც შესწორება ჩვეულებრივ გამომცემი ორგანოს პროფილს ეკუთვნის და არა VPN-ის კონფიგურაციას.

არარსებული EKU არ არის შემზღუდავი EKU

RFC 5280 გაფართოებული გასაღების გამოყენების გაფართოებას ნებაყოფლობითს ხდის და, როცა ის არსებობს, შემზღუდავს. ამიტომ გაფართოების გარეშე CA სერტიფიკატმა სერვერის იდენტიფიკაციას „არა“ არ უთქვამს, მაშინ როცა მხოლოდ შეუსაბამო დანიშნულების ჩამომთვლელმა ძალიან კონკრეტული რამ თქვა. ამ ორი მდგომარეობის ეკვივალენტურად მიჩნევა არასწორ დიაგნოზს და, უარესს, არასწორ შესწორებას იძლევა. განსხვავება ასევე ხსნის, რატომ იქცევიან კონსოლში მსგავსი ორი ორგანო ჯაჭვში სრულიად განსხვავებულად.

ბიბლიოთეკების ქცევა აქაც ერთგვაროვანი არ არის. OpenSSL-ის დოკუმენტი შემოწმების პარამეტრებზე აღწერს CA სერტიფიკატებზე დანიშნულების შემოწმებების საკუთარ მიდგომას და ეს მიდგომა განხორციელების პოლიტიკაა და არა წესი, რომელსაც ყველა TLS სტეკი იდენტურად მიჰყვება. აღწერეთ, რას აკეთებს თქვენი გამმოწმებელი, შემდეგ დაადასტურეთ იმ ვერსიით, რომელსაც რეალურად უშვებთ.

ხელახლა გამოცემამდე ოფლაინ გაამრავლეთ მარცხი

ოფლაინ შემოწმება აპლიკაციას განტოლებიდან ამოიღებს. თუ ჯაჭვი იმავე დანიშნულების ქვეშ იმავენაირად მარცხდება, პრობლემა სერტიფიკატშია და ვერც ერთი სერვერის კონფიგურაცია დამალავს. თუ ჯაჭვი ოფლაინ გადის, სერვისი კი მაინც უარს ამბობს, აპლიკაცია სხვა დანიშნულებას ითხოვს ან თქვენ მიერ გამოცდილისგან განსხვავებულ ჯაჭვს იყენებს.

openssl verify -purpose sslserver -show_chain -CAfile root-ca.pem -untrusted issuing-ca.pem vpn-server.pem

-show_chain მნიშვნელოვანია, რადგან ბეჭდავს გზას, რომელიც ხელსაწყომ ააგო, და ეს ხშირად არ არის თქვენ მიერ მოცემული ფაილების რიგი. ეს გამონატანი ყველაზე სწრაფი გზაა იმის გასარკვევად, რომ მეორე შუალედური სერტიფიკატი სანდოობის საცავიდან იწევა, რომ სერვერი გზაჯვარედინად ხელმოწერილ ვარიანტს აგზავნის, რომელიც არ გიგულისხმიათ, ან რომ გაკვეთილიდან კოპირებული დანიშნულების დროშა მომსახურებული როლისგან განსხვავებულ როლს ეკუთვნის.

შეასწორეთ გამოცემის პოლიტიკა და არა შემოწმების გამოძახება

გრძელვადიანი შესწორებაა შუალედური სერტიფიკატი, რომელიც გამოცემულია პოლიტიკით, რომელიც უშვებს იმ დანიშნულებებს, რომლებსაც ის უნდა ემსახუროს, შეზღუდვის ჩაწერითა და გადამოწმებით. ყველა დანიშნულების ყველა ორგანოზე დამატება პოლიტიკა არ არის; ის აშორებს შეზღუდვას, რომელმაც გაფართოებას აზრი მისცა, და ჩვეულებრივ უფრო დიდხანს ცოცხლობს, ვიდრე ინციდენტი, რომელმაც ის გამოიწვია. პროფილში მოკლე შენიშვნა, რომელიც აღწერს, რომელი როლების დამოწმება შეუძლია ორგანოს, ხელს უშლის შემდეგ ხელახლა გამოცემას იგივე კამათის გამეორებაში.

შემოწმების გამორთვა სხვა მაცდური მოკლე გზაა და ის სერტიფიკატის პრობლემას ნდობის პრობლემად აქცევს. დატოვეთ დანიშნულების შემოწმება, შეასწორეთ ჯაჭვი და ხელახლა გაუშვით იგივე ოფლაინ შემოწმება, რომ დაადასტუროთ, რომ გზა ახლა დანიშნულ როლს ემსახურება, სანამ სერვისს კვლავ შეეხებით.

დაკავშირებული სტატიები