სერტიფიკატის საჯარო ველების წაკითხვა არასოდეს მოითხოვს მისი შესაბამისი პირადი გასაღების ჩვენებას და ამისთვის საჭირო ხელსაწყოები VPN-ის დამამთავრებელ ყველა სისტემაშია. რისკი ერთი ნაბიჯით ადრეა: მოწოდებული ფაილი შეიძლება საერთოდ არ იყოს სერტიფიკატი. PEM სერტიფიკატი, DER ბლობი, PKCS#12 პაკეტი და OpenVPN პროფილი შეიძლება ერთი და იმავე სახელით მოვიდეს და სრულიად განსხვავებული მასალა შეიცავდეს, ამიტომ კონტეინერი ჯერ ამოიცანი, მერე აირჩიე ბრძანება.

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

სამი ფაილიდან რომელი მოგაწოდეს

PEM სერტიფიკატი ტექსტია თვალსაჩინო BEGIN და END ნიშნებით, DER ფაილი ბინარულია და შეყვანის ფორმატის დროშას მოითხოვს, და პაკეტი კონტეინერია, რომელმაც შეიძლება გასაღები სერტიფიკატის გვერდით შეინახოს.file server.crt ტექსტს ბინარისგან წამში ყოფს, და პირველივე სტრიქონზე ერთი შეხედვა შიშველ სერტიფიკატს ჩაშენებული სერტიფიკატის მქონე პროფილისგან არჩევს. სწორედ აქ ხდება გამოცნობა შემოწმების ინციდენტად.

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

PEM სერტიფიკატის საჯარო ველების წაკითხვა

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

openssl x509 -in server.crt -noout -subject -issuer -dates -fingerprint -sha256

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

პაკეტები, რომლებიც გასაღებს სერტიფიკატის გვერდით ინახავს

ფაილი .p12ან .pfx შეიძლება პირად გასაღებს ატარებდეს, და გარჩევის ბრძანება მას ბეჭდავს, თუ გამოსავლის ეს ნაწილი არ ჩახშე. ბრძანება -nokeys დროშით მაინც აცნობებს კონტეინერის სტრუქტურას, მათ შორის დაფარულ გასაღების ტომარას, მაგრამ გასაღების მასალას არ გამოსცემს; მოხსენი ეს დროშა და გასაღების ბლოკი გამოჩნდება ტერმინალსა და შენს shell ისტორიაში.

openssl pkcs12 -in bundle.p12 -nokeys -info -passin env:P12PASS

OpenVPN პროფილი იმავე მასალას ტექსტად ჩაშენებს, ამიტომ საზღვარი ჩანს, თუ იცი სად უნდა უყურო. საჯარო მასალა BEGIN CERTIFICATE და END CERTIFICATE შორისაა, ხოლო ყველაფერი BEGIN PRIVATE KEY და მის შესაბამის END სტრიქონს შორის გასაღებია და ჰოსტს არ უნდა დატოვოს. პროფილის მთლიანად კოპირება ორივეს აქვეყნებს.

საზღვრული მნიშვნელობის სხვა წყაროდან მიღება

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

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

შედეგის გაზიარება და რა ვქნათ გაფუჭების შემდეგ

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

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

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