remote-cert-tls server: რას ამოწმებს OpenVPN პროფილში
დირექტივა ამოწმებს მეორე მხარის სერტიფიკატში კოდირებულ როლს და არა მის სახელს. სანამ რამეს გამორთავთ, შეადარეთ როლი, ნდობის საყრდენი და ჰოსტის სახელის შემოწმება.
სამ სხვადასხვა კითხვას პასუხობს OpenVPN პროფილის სამი სხვადასხვა ნაწილი, და სწორედ მათი შერევა იწვევს იმას, რომ ადამიანები თიშავენ მუშა შემოწმებას. ხომ არ არის მეორე მხარის სერტიფიკატი ხელმოწერილი იმ ორგანოს მიერ, რომელსაც ვენდობი? ხომ არ აცხადებს ეს სერტიფიკატი TLS სერვერის როლს? ხომ არ არის ეს ზუსტად ის სერვერი, რომლის მიღწევაც მინდოდა? remote-cert-tls server პასუხობს მხოლოდ შუა კითხვას და ამას აკეთებს სერტიფიკატის შიგნით არსებული გაფართოებების წაკითხვით.
სამი შემოწმება, რომელთა შერევა თავში ადვილია
ნდობის საყრდენი ცხოვრობს ca დირექტივაში. როლის შემოწმება ეკუთვნის remote-cert-tls-ს. იდენტობის შემოწმება ეკუთვნის verify-x509-name-ს, როცა პროფილი იყენებს მას, ან ნებისმიერი სახელის შემოწმებას, რომელსაც განლაგება ამატებს.
ისინი ფარავენ სხვადასხვა უკმარისობას:
| Question | Directive | Failure it catches |
|---|---|---|
| Who signed this? | ca | Certificate from an unrelated authority |
| Is this a server? | remote-cert-tls | Client certificate presented by a peer |
| Is this my server? | verify-x509-name | Another valid server from the same CA |
პროფილს შეიძლება ჰქონდეს სამივე და მაინც იყოს სუსტი, თუ CA ძალიან ფართოდ არის გაზიარებული, რაც გასაღებების მართვის საკითხია და არა დირექტივის.
რას კითხულობს როლის შემოწმება
დირექტივა მაკროა. ის გაფართოვდება გასაღების გამოყენების მოთხოვნად და გაფართოებული გასაღების გამოყენების მოთხოვნად, რომელიც ასახელებს TLS ვებსერვერის როლს, ამიტომ მეორე მხარის სერტიფიკატმა რეალურად უნდა განაცხადოს ეს დანიშნულება. კლიენტის აუთენტიფიკაციისთვის გაცემული სერტიფიკატი ამას არ აკმაყოფილებს, მაშინაც კი, როცა იმავე ორგანომ ორივე მოაწერა ხელი.
ეს მნიშვნელოვანია, რადგან გაზიარებული CA ჩვეულებრივია მცირე განლაგებებში. ერთი ორგანო ხელს აწერს ყველა კლიენტსა და სერვერს, და როლის შემოწმების გარეშე ამ სერტიფიკატებიდან ნებისმიერს შეეძლო ხელის ჩამორთმევის სერვერის მხარის დასრულება. შემოწმება ამ სცენარს შეუძლებელს არ ხდის, მაგრამ აშორებს მის ტრივიალურ ვერსიას.
დირექტივა დიზაინით ასიმეტრიულია: კლიენტები ატარებენ remote-cert-tls server-ს, სერვერები კი remote-cert-tls client-ს. შეცვალეთ ისინი და ყოველი კავშირი ჩავარდება როლის შეცდომით, რომელიც დაზიანებულ სერტიფიკატს ჰგავს.
ძველი პროფილები ზოგჯერ იყენებენ ns-cert-type-ს იმავე მიზნისთვის. მიმდინარე სახელმძღვანელოს გვერდები ამ პარამეტრს შეცვლილად თვლიან, ამიტომ პროფილი, რომელიც ჯერ კიდევ ეყრდნობა მას, ღირს მიგრაცია და არა გამართვა.
რატომ ჰგავს მისი გამორთვა გამოსწორებას
როცა როლის შემოწმება ჩავარდება, კავშირი ჩერდება შემოწმების შეცდომით და აშკარა ნაბიჯია ხაზის წაშლა. შემდეგ კავშირი ადის, რაც პროგრესად ჩანს და სინამდვილეში ის უკმარისობის რეჟიმია, რომლის თავიდან ასაცილებლადაც არსებობს დირექტივა. ახლა თქვენ იღებთ მეორე მხარეს, რომლის სერტიფიკატი არასდროს ყოფილა განკუთვნილი ამ როლისთვის.
ამის ნაცვლად წაიკითხეთ შეცდომა. ის ასახელებს ჩავარდნილ შემოწმებას, და მეორე მხარის სერტიფიკატის შესწავლით შეიძლება ნახოთ, რა გაფართოებებს ატარებს ის რეალურად. ორწუთიანი კითხვა წყვეტს, ხარვეზი გაცემაშია თუ კონფიგურაციაში. გამოცნობა ნახევარ დღეს ხარჯავს და ჩვეულებრივ სუსტი პროფილით მთავრდება. განახლებული სერვერის სერტიფიკატი, რომელმაც დაკარგა გაფართოებული გასაღების გამოყენება, ნამდვილი ხარვეზია განახლებაში და არა კლიენტის შესუსტების მიზეზი.
სახელის შემოწმება ცალკე დირექტივაა
როლის შემოწმების დაკმაყოფილება ნიშნავს, რომ მეორე მხარე არის რაღაც სერვერი, რომელსაც თქვენი ორგანო აწერს ხელს. ის არაფერს ამბობს იმაზე, თუ რომელი, რაც მნიშვნელოვანია, როცა იგივე CA სერტიფიკატებს გასცემს რამდენიმე კარიბჭისთვის და ერთი მათგანი კომპრომეტირებული ან ხელახლა გამოყენებულია.
verify-x509-name ადარებს სერტიფიკატის სუბიექტს თქვენს მიერ კონფიგურირებულ მნიშვნელობას, ზუსტი სუბიექტის, პრეფიქსის ან ერთი ველის შესაბამისობის რეჟიმებით. გამოიყენეთ ველი, რომელიც რეალურად იდენტიფიცირებს კარიბჭეს, და მოელოდეთ, რომ სახელის შეცვლისას განზრახ განაახლებთ მას.
არცერთი დირექტივა არ ცვლის გასაღებების კარგ მართვას. თუ კლიენტის გასაღების ფაილი პროფილთან ერთად კოპირდება აქეთ-იქით, მეორე მხარის იდენტობა ისეთივე ძლიერია, როგორც გავრცელების სია.
შეამოწმეთ სერტიფიკატი პროფილის რედაქტირებამდე
წაიკითხეთ მეორე მხარის სერტიფიკატი და კლიენტის ჟურნალი, ამ თანმიმდევრობით. სერტიფიკატი გეუბნებათ, რა როლებს აცხადებს ის; ჟურნალი გეუბნებათ, რომელმა შემოწმებამ უარყო ის.
ეს ბრძანებები ბეჭდავს გამოყენების გაფართოებებს და შემოწმების ხაზებს დეტალური კავშირიდან:
openssl x509 -in server.crt -noout -text | grep -A1 -E "Key Usage|Extended Key Usage"
sudo openvpn --config client.ovpn --verb 4 2>&1 | grep -i verifyთუ გაფართოებები აჩვენებს სერვერის როლს და ჟურნალი კვლავ იუწყება როლის უკმარისობას, პროფილი სავარაუდოდ მიუთითებს არასწორ სერტიფიკატის ფაილზე და არა ცუდ სერტიფიკატზე. თუ გაფართოებები აჩვენებს მხოლოდ კლიენტის აუთენტიფიკაციას, შეწყვიტეთ კლიენტზე ყურება და გაასწორეთ გაცემა. ნებისმიერ შემთხვევაში, აღადგინეთ შემოწმება სანამ კავშირს ჯანმრთელს უწოდებთ, რადგან შემოწმების მოხსნის შემდეგ წარმატებული ხელის ჩამორთმევა ნაკლებს ამტკიცებს, ვიდრე შეცდომა, რომელიც მან შეცვალა.