Сертификат туралы пікірталастарда екі тұжырым айналымда жүр. Біріншісі — .p12 мықты нұсқа, ал .pem әлсіз; екіншісі — мәтіндік файлды жіберу қауіпсіз болуы керек, өйткені оны оқи аласыз. Екеуі де бір минуттық тексеруге шыдамайды.

PKCS12, PEM және DER сертификат нысандарының қалай қапталып, кодталатынын сипаттайды. Олар қарсы тарап кім екенін, шығарушыға сенуге бола ма, файлға құпиясөз керек пе — оны шешпейді.

Клиент нені қабылдайтыны — үйлесімділік мәселесі. Файлда не бар екені — бірегейлік мәселесі. Осы екеуін бөлек ұстаңыз, сонда импорт қателерінің көбі жұмбақ болудан қалады.

Үш контейнер, бір нысан моделі

Шын мәнінде қолыңызда барынан бастаңыз. Сертификат — ашық кілт туралы қол қойылған мәлімдеме. Жеке кілт — сол кілтті басқаратыныңызды дәлелдейтін жеке материал. Тізбек — сертификатыңызды клиент сенетін тамырға жалғайтын шығарушылар жиынтығы. Үшеуі де қаптауға қарамастан бар.

PKCS12 файлы, әдетте .p12 немесе .pfx, RFC 7292-де анықталған контейнер және жеке кілтті, бір немесе бірнеше сертификатты және тізбекті бір құпиясөзбен қорғалған блокта алып жүре алады, бірегейлікті атайтын бүркеншік атпен. PEM файлы RFC 7468-де анықталған мәтіндік жақтау: BEGIN және END жолдарының арасындағы base64 дене, және бір файлда бірнеше блок қатарынан болуы мүмкін. DER — сол ASN.1 құрылымдарының екілік кодтауы, ал PEM денесі сөзбе-сөз base64-ке оралған DER.

Соңғы сөйлемді есте ұстаған жөн. PEM-ді DER-ге айналдыру жақтауды қайта жазады, мазмұнды емес, ал кері айналдыру бастапқы байттарды қайтарады.

ContainerCan holdDoes not decide
PKCS12 (.p12, .pfx)Key, leaf certificate, chain, alias, passwordWhich root the client trusts
PEM (.pem, .crt, .cer)Any number of base64 blocksWhether the private key is present
DER (.der, .cer)One binary structureThe object type, whatever the extension says

Кодтау — шифрлау емес

base64 — тасымал әліпбиі. Ол ештеңені жасырмайды, және кез келген адам shell-де PEM блогын шеше алады. DER файлы екілік және сол сияқты ашық. Екі қасиет те қорғаныс емес, және екеуі де құпиясөз бар екенін білдірмейді.

Нақты қорғаныс кілт материалында. PKCS12 бумасы мазмұнын құпиясөзден алынған кілтпен шифрлай алады. PEM жеке кілтін ескі тақырып блогымен шифрлауға немесе PKCS#8 EncryptedPrivateKeyInfo ішінде сақтауға болады. Сертификат жалғыз ештеңе құпия ұстамайды, сондықтан тек сертификат берген экспорт клиентті аутентификациялау мүмкіндігінен айырады, оны қандай форматқа орасаңыз да.

Кеңейтім — ишара, келісім емес. .cer және .crt-мен аяқталатын файлдар екі кодтауда да кездеседі, және құрылғылар DER сертификаттарын .pem атауларымен жиі шығарады, сондықтан жұрнақ бойынша болжау жарты күнді жоғалтады. Оның орнына алғашқы байттарды оқыңыз: PEM файлы BEGIN жолымен ашылады, ал DER 0x30-мен басталады, өйткені сыртқы құрылым SEQUENCE.

Импорт шын мәнінде неге сәтсіз болады

Клиенттің қате хабарламалары бірнеше түрлі мәселені жарамсыз сертификат туралы бір сөйлемге сығады, сондықтан оларды себебіне қарай бөліңіз. Ең жиісі — кодтау сәйкессіздігі: PEM талдайтын клиент DER файлында талдау қатесін қайтарады, ал шешім — жаңа сертификат емес, түрлендіру. Екіншісі — жоқ кілт, мұнда сертификат дұрыс, бірақ бірегейлікті дәлелдеу мүмкін емес. Үшіншісі — тізбек, мұнда аралық сертификатсыз бума импорт диалогында дұрыс көрінеді де, қол алысу кезінде сәтсіз болады.

Шифрлау параметрлері төртіншісін тудырады, және ол дәл қате құпиясөзге ұқсайды. Ескі құрылғылар PKCS12 файлдарын RC2-40 және 3DES-пен шығаратын, оларды OpenSSL 3 legacy провайдері жүктелмесе қабылдамайды. Құрылғыдан AES-256-CBC және PBKDF2-мен қайта шығару — тұрақты шешім. Бір файл үшін клиент машинасында ескі шифрларды әрдайым қосу — нашар мәміле.

Бесіншісі — екіұштылық. Екі кілт пен екі сертификаты бар контейнер немесе үш CERTIFICATE блогы бар PEM файлы клиентті таңдауға мәжбүр етеді, ал оның таңдауы көбіне жай ғана бірінші элемент. Туннель қате бірегейлікпен көтерілсе, әдетте себебі осы.

Түрлендіру алдында тексеріңіз

Құпияларды баспай құрылымды оқыңыз. openssl pkcs12 -in bundle.p12 -info -noout шифрлау алгоритмдері мен бүркеншік аттарды хабарлайды және кілт пен сертификат шығысын басады, ал openssl-pkcs12 нұсқаулығы жалаушаларды құжаттайды. -noout-ты алып тастау және -nodes-ты қосу — сақтауды жоспарлаған файлдарды жасау үшін, жылдам қарау үшін емес, өйткені ол жеке кілтті ашық жазады.

Сертификат үшін openssl x509 -in cert.pem -noout -subject -issuer -dates импорт диалогы жауап бермейтін сұраққа жауап береді, ал -ext subjectAltName қосу сертификат шын мәнінде жарамды атауларды көрсетеді. Файл DER болса, -inform DER қосыңыз; сол бір жалауша unable-to-load қателерінің көбін шешеді.

Кілтті сертификатпен сәйкестендіру механикалық жұмыс және кез келген импорттың алдында жасаған жөн:

openssl x509 -in cert.pem -noout -pubkey | openssl sha256
openssl pkey -in key.pem -pubout | openssl sha256

Бірдей дайджесттер жұптың бірге екенін білдіреді. Әртүрлі дайджесттер қате кілт бар екенін білдіреді, және ешбір формат түрлендіру мұны өзгертпейді.

Формат ешқашан өзгертпейтін нәрсе

Сенім шешімдері контейнердің үстінде қабылданады. Клиент тізбекті өз қоймасындағы тамырға дейін жүреді, жарамдылық терезесін тексереді, клиент аутентификациясы үшін кеңейтілген кілт қолданысын тексереді, ал сервер жағында шақырған атауының сертификатта бар-жоғын тексереді. Бұл қадамдардың ешқайсысы файл кеңейтімін оқымайды.

Сондықтан қате жойылғанша файл атын өзгерту уақытты жоғалтудың соншалықты сенімді жолы. Импорт сәтті болады, бірегейлік әлі де қате, ал сәтсіздік қол алысу кезінде қайта пайда болады, онда хабарлама азырақ көмектеседі. Сондықтан екі жыл бұрын экспортталған бума таза импортталып, бәрібір қабылданбайды: жарамдылық мерзімі файл атында емес, сертификаттың ішінде саяхаттаған.

Қайта жасаудан құтылатын тәртіп

Клиенттің құжаттамасынан қандай кодтауларды қабылдайтынын және клиент бірегейлігі үшін қандай контейнер күтетінін сұраңыз, содан кейін сізге не берілгенін қараңыз. Егер клиент бір импортталатын бірегейлікті қаласа және сізде бөлек PEM файлдары болса, буманы өзіңіз басқаратын құпиясөзбен бір рет құрастырып, дереккөздерді сақтаңыз. Егер PEM керек болса, кілт пен тізбекті шығарыңыз, содан кейін аралық файлдарды командаңыз әлдеқашан қолданатын тіркелгі деректерін өңдеу процесімен жойыңыз.

Импорттан кейін диалогты емес, бірегейлікті тексеріңіз: субъект, шығарушы, мерзімі және клиент ұсынатын атау. Тізімдегі жайлы атау — белгі, тексерілген бірегейлік емес. Егер кейін туннель сәтсіз болса, сіз қаптаудың орнына аутентификацияны немесе маршруттауды жөндейсіз, бұл әлдеқайда қысқа әңгіме.

Қатысты мақалалар