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

დარწმუნდით, რომ გასაღები RSA-ია, სანამ მარტივ რიცხვებს მოძებნით

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

ეს სამი მხოლოდ-კითხვითი ბრძანება პასუხობს კითხვას და იწერს ინსტრუმენტის ვერსიას.

openssl version
openssl x509 -in vpn-client.crt -noout -text
openssl pkey -in vpn-client.key -noout -text

ვერსია მნიშვნელოვანია, რადგან პარამეტრების სახელები გადაადგილდა ძირითად გამოშვებებს შორის. სერტიფიკატის გამოსავალში იპოვეთ საჯარო გასაღების ალგორითმის ხაზი და გასაღების ზომა; გასაღების გამოსავალში RSA გასაღები ბეჭდავს მოდულს და საჯარო ხარისხს. ელიფსური მრუდის გასაღები სამაგიეროდ ბეჭდავს დასახელებულ მრუდს და ვერც ერთი ძებნა ვერ გამოიტანს მისგან n-ს ან q-ს.

წაიკითხეთ სტრუქტურა base64-ის ნაცვლად

PEM არის base64, გახვეული სათაურის ხაზებში, და მისი დეკოდირება იძლევა DER-ს, ანუ სერიალიზებულ სტრუქტურას და არა ერთ უზარმაზარ მთელ რიცხვს. RSA პირადი გასაღებები მოგზაურობენ ორ ჩვეულებრივ კონტეინერში, PKCS#1 და PKCS#8, და ორივე ერთსა და იმავე რიცხვთა სიმრავლეს ემთხვევა.

ორი მარტივი რიცხვის შემთხვევაში პირადი სტრუქტურა ცხრა ველს ატარებს: ვერსია, მოდული n, საჯარო ხარისხი e, პირადი ხარისხი d, მარტივი რიცხვები p და q, ორი CRT ხარისხი და CRT კოეფიციენტი. RFC 8017-ის A.1 ნაწილი განსაზღვრავს ამ კომპონენტებსა და ASN.1 განლაგებას და ასევე უშვებს ორზე მეტ მარტივ რიცხვს, ამიტომ ზოგად პარსერს შეუძლია ზედმეტი მარტივი ჩანაწერების დაბეჭდვა. ყურადღება მიაქციეთ თანმიმდევრობას, რადგან ის ხსნის ხშირ შეცდომას: საჯარო ნახევარი პირადი ფაილის შიგნით ინახება, ამიტომ საჯარო ველის არსებობა ამ ფაილს გაზიარებისთვის უსაფრთხოს არ ხდის. მის შემდეგ ყველაფერი ის მასალაა, რომელიც ჰოსტზე უნდა დარჩეს.

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

შეადარეთ სერტიფიკატი გასაღებს გასაღების დაბეჭდვის გარეშე

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

openssl pkey -in vpn-client.key -pubout -out /tmp/key.pub
openssl x509 -in vpn-client.crt -pubkey -noout > /tmp/cert.pub
cmp /tmp/key.pub /tmp/cert.pub && echo MATCH

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

იცოდეთ, რა არ არიან მეზობელი ფაილები

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

FileAnswersDoes not prove
vpn-client.keyPossession of the private keyThat the identity is enrolled
vpn-client.crtA signed binding of public key to identityThat the client holds the matching key
vpn-client.csrThe requested binding and public keyThat access was granted
dh2048.pemGroup parameters for key exchangeAny RSA component
crl.pemRevocation status for certificatesAnything about a private key

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

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

ჩაწერეთ დაწყვილება, შემდეგ შეამოწმეთ ხელის ჩამორთმევა

სანამ რამეს შეცვლით, შეინახეთ შემოწმების გამოსავალი თარიღთან და OpenSSL-ის ვერსიასთან ერთად. მაშინ მოგვიანებითი როტაცია მეხსიერებასთან კი არა, მტკიცებულებებთან შეიძლება შედარდეს.

openssl verify -CAfile ca.crt vpn-client.crt
openssl x509 -in vpn-client.crt -noout -subject -issuer -dates

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

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

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