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

იპოვეთ სერტიფიკატი, რომელსაც კლიენტი რეალურად ტვირთავს

OpenVPN ორგანოს ორი ფორმით იღებს და ფორმა განსაზღვრავს, რომელი ბაიტებია მნიშვნელოვანი. პროფილს შეუძლია ca-ით გარე ფაილზე მიუთითოს, ან სერტიფიკატი თავად პროფილის <ca> ბლოკში ჩასვას. როცა ორივე არსებობს, ჩასმული ბლოკი იმარჯვებს და პროფილის გვერდით მდებარე ფაილი არასოდეს იხსნება.

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

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

აიღეთ ორივე ასლის თითის ანაბეჭდი openssl-ით

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

openssl x509 -in /etc/openvpn/office/ca.crt -noout -fingerprint -sha256
openssl x509 -in ~/profiles/lab-ca.pem -noout -fingerprint -sha256

მაცდურია openssl-ის თავად პროფილზე მიმართვა, მაგრამ ის ფაილში პირველად გამოჩენილ სერტიფიკატის ბლოკს კითხულობს და პროფილი ჩვეულებრივ <cert>-ს <ca>-მდე ატარებს. ამოიღეთ ორგანოს ბლოკი, შემდეგ აიღეთ ამოღებული ფაილის თითის ანაბეჭდი, რადგან სწორედ ის ასლი გამოიყენებს კლიენტი რეალურად.

sed -n '/^<ca>$/,/^<\/ca>$/p' office.ovpn | sed '1d;$d' > /tmp/office-ca.pem
openssl x509 -in /tmp/office-ca.pem -noout -fingerprint -sha256

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

წაიკითხეთ შეუსაბამობა, სანამ თავდასხმას ივარაუდებთ

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

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

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

აღადგინეთ სანდოობა შემოწმების გამორთვის გარეშე

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

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

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

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