Преглед на VPN сертификат без извеждане на ключа му
Четете публичните полета, датите и отпечатъците, без да отпечатвате ключов материал. Коя команда е безопасна зависи от това какво съдържа файлът и кой получава изхода.
Четенето на публичните полета на един сертификат никога не изисква показване на частния ключ, който му съответства, а инструментите за това идват с всяка система, която прекратява 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
На локално генериран тестов сертификат тази команда отпечатва ред за субекта и издателя, двойката notBefore и notAfter и един SHA-256 отпечатък. Тези полета идентифицират обекта; те не установяват валиден път на доверие, което е отделна задача за проверка със своя команда и свой отговор. Файлът на веригата също може да отпечата само първия сертификат, освен ако не обходите файла сами. Сравняването на два файла по този начин струва една команда и решава кой от тях партньорът всъщност представя.
Пакети, които държат ключ до сертификата
Файл .p12 или .pfx може да носи частен ключ и командата за анализ го отпечатва, освен ако не потиснете тази част от изхода. С -nokeys същата команда все още отчита структурата на контейнера, включително скрит ключов пакет, без да излъчва никакъв ключов материал; махнете този флаг и блок с ключ се появява в терминала и в историята на обвивката ви.
openssl pkcs12 -in bundle.p12 -nokeys -info -passin env:P12PASS
Профилът на OpenVPN вгражда същия материал като текст, така че границата е видима, ако знаете къде да гледате. Публичният материал се намира между BEGIN CERTIFICATE и END CERTIFICATE, а всичко между BEGIN PRIVATE KEY и съответстващия му ред END е ключът и не трябва да напуска хоста. Копирането на профила изцяло публикува и двете.
Получаване на референтната стойност от другаде
Отпечатък, прочетен от връзката, която се опитвате да проверите, не доказва нищо, защото го е предоставила страната, на която не вярвате. Това не е аргумент срещу отпечатъците; това е аргумент за произхода. Сравнете стойността с такава, получена по канал, в който партньорът не може да пише, например сертификата, публикуван във вътрешно хранилище, или хеша, отпечатан в подписан запис за промяна.
Когато хранилището за доверие извършва валидиране, оставете го да го направи и прочетете грешката, която то дава, вместо да я заменяте със собствено сравнение. Важната разлика е кой е предоставил референцията, а не коя хеш функция е използвана.
Споделяне на резултата и какво да правите след грешка
Изпратете точната грешка при валидиране, съответните дати и само идентификационните данни, които получателят има нужда. Вътрешните имена на хостове и идентификаторите на акаунти остават чувствителни дори когато няма ключ и публична услуга за поставяне е грешната дестинация за всичко това. Поставяйте в тикета, а не в чернов буфер, който някой друг споделя.
Ако ключов материал все пак се е появил на екрана или във файл, третирайте го като компрометиран и го сменете, вместо да се надявате, че никой не е гледал. След това запишете кой файл е прегледан, коя команда е използвана и къде е отишъл изходът, защото именно този запис превръща уплахата в процедура. Смяната е евтина в сравнение с цената да приемете, че никой не е запазил екранна снимка, и същият запис казва на следващия инженер кои файлове изобщо са били докоснати. Направете и двете, преди тикетът да бъде затворен.